国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

LwIP在嵌入式Nios II軟核處理器上的移植及應(yīng)用

2010-09-04 02:33:40元澤懷
肇慶學(xué)院學(xué)報 2010年5期
關(guān)鍵詞:開發(fā)板驅(qū)動程序調(diào)用

元澤懷

(肇慶學(xué)院電子信息與機(jī)電工程學(xué)院,廣東肇慶526061)

LwIP在嵌入式Nios II軟核處理器上的移植及應(yīng)用

元澤懷

(肇慶學(xué)院電子信息與機(jī)電工程學(xué)院,廣東肇慶526061)

Nios II是專門為SOPC設(shè)計的一種軟核CPU,它以IP核的形式提供給嵌入式設(shè)計者.它的可配置特性給嵌入式系統(tǒng)設(shè)計帶來了更大的靈活性,可以說它為嵌入式系統(tǒng)的設(shè)計提供了一種全新的思路.討論了LwIP在NIOS II處理器上的移植實現(xiàn)方法,并將其成功地應(yīng)用于簡單socket服務(wù)器的設(shè)計中.

LwIP;Nios II;嵌入式系統(tǒng);μC/OS II

Nios II處理器是用戶可隨時配置和構(gòu)建的32位指令集和數(shù)據(jù)通道的嵌入式系統(tǒng)微處理器IP軟核,采用avalon總線結(jié)構(gòu)通信接口,帶有增強(qiáng)的內(nèi)存調(diào)試和軟件功能,它可以與各種外設(shè)相結(jié)合,構(gòu)成一個可定制的可編程片上系統(tǒng)SOPC(System On a Programable Chip).網(wǎng)絡(luò)協(xié)議LwIP(Light weight Internet Protocol),即輕量級網(wǎng)絡(luò)協(xié)議,是一種專門針對嵌入式系統(tǒng)應(yīng)用而設(shè)計的網(wǎng)絡(luò)通信協(xié)議,LwIP實現(xiàn)的重點是在保持TCP/IP協(xié)議主要功能的基礎(chǔ)上減少對RAM的占用,一般它只需要幾十Kbyte的RAM和40Kbyte左右的ROM就可以運行,非常適合在以Nios II處理器為核心的系統(tǒng)中使用.Nios II處理器系統(tǒng)的網(wǎng)絡(luò)開發(fā)平臺的系統(tǒng)模型如圖1.

圖1 Nios II的網(wǎng)絡(luò)開發(fā)模型

圖2 Nios II軟件模型

1 LwIP在Nios II上的移植

Altera使用μC/OS-ⅡRTOS多線程環(huán)境移植LwIP,因此,要使用LwIP,必須建立基于μC/OS-ⅡRTOS上的C/C++項目.Altera對LwIP的移植是基于Nios II硬件抽象層HAL通用網(wǎng)絡(luò)設(shè)備模式的.通過這個模式,我們可以自編新驅(qū)動程序去支撐目標(biāo)媒體訪問控制器(MAC),維持HAL和socket API訪問硬件[1].Nios II軟件體系結(jié)構(gòu)見圖2.

1.1 初始化LwIP協(xié)議棧

在調(diào)用OSStart()函數(shù)開始μC/OS-Ⅱ調(diào)度程序前,必須先初始化LwIP[2].

Lwip_stack_init(),這個函數(shù)執(zhí)行協(xié)議棧設(shè)置.

init_done_func(),這個函數(shù)在棧初始化后被調(diào)用,函數(shù)必須調(diào)用lwip_devices_init()初始化所有安裝的網(wǎng)絡(luò)設(shè)備驅(qū)動程序,然后創(chuàng)建接收任務(wù).

lwip_devices_init(),這個函數(shù)說明了所有在system.h文件里定義的已安裝的網(wǎng)絡(luò)設(shè)備驅(qū)動程序.函數(shù)返回非0值,表示初始化成功.如果成功,TCP/IP棧是可見的,然后就可為程序創(chuàng)建任務(wù).

get_mac_addr()和get_ip_addr(),這2個函數(shù)在設(shè)備初始化期間被LwIP系統(tǒng)代碼調(diào)用.這些函數(shù)是LwIP系統(tǒng)代碼設(shè)置MAC和IP地址所必需的.

通過編寫這些函數(shù),系統(tǒng)可以在任意位置存儲MAC地址和IP地址.

1.2 調(diào)用socket接口

一旦網(wǎng)絡(luò)設(shè)備被初始化,程序的其余部分必須使用socket API訪問IP棧.

要使用socket API建立和IP棧對話的新任務(wù),必須使用sys_thread_new()函數(shù),這個函數(shù)是LwIP OS移植層創(chuàng)建線程的一部分.sys_thread_new()調(diào)用μC/OS-ⅡOSTaskCreate()函數(shù)并執(zhí)行其他LwIP指定的動作[3].我們可以通過在應(yīng)用程序里加入語句#include″lwip/sys.h″調(diào)用它.

1.3 在Nios II IDE里配置LwIP

LwIP協(xié)議棧有很多配置選項,這些選項可以通過使用lwipopts.h文件里的#define來進(jìn)行配置.Nios II IDE集成開發(fā)環(huán)境提供了一個圖形化的用戶接口GUI,見圖3.通過GUI可以配置LwIP選項(也就是修改lwipopts.h文件里的#define)而不必編輯源代碼,當(dāng)然有些選項是必須通過lwipopts.h文件才能改變的.

圖3 Light wight TCP/IP棧選項

在圖中,提供了IP、TCP、ARP、UDP、DHCP等各選項的配置選擇,用戶可直接根據(jù)實際需要進(jìn)行設(shè)置.至此,就完成了LwIP在Nios II上的整個移植過程[4].

1.4 測試

完成上面的移植修改工作后,就可以在μC/OS-Ⅱ中初始化LwIP,并創(chuàng)建TCP或UDP任務(wù)進(jìn)行測試了.這部分是用C語言實現(xiàn)的.關(guān)鍵部分的代碼和說明如下:

主程序中,創(chuàng)建了Lwip_init_task初始化LwIP任務(wù)(優(yōu)先級0)和user_task用戶任務(wù)(優(yōu)先級1).1wip_init_task任務(wù)中除了初始化硬件時鐘和LwIP之外,還創(chuàng)建了tcp ip_thread(優(yōu)先級3)和tcpecho_thread(優(yōu)先級4).實際上tcp ip_thread才是LwIP的主線程,多線程的Berkley API也是基于這個線程實現(xiàn)的,即上面的tcpecho_thread線程也要依靠tcp ip_thread線程來與外界通信.

編譯下載運行,用ping ip地址命令可以得到ICMP reply響應(yīng),用telnet ip地址30(登錄30號端口)命令可以看到echo server的回顯效果.說明ARP、IP、ICMP、TCP協(xié)議都已正確運行.

2 應(yīng)用實例

本系統(tǒng)使用Nios II開發(fā)板進(jìn)行應(yīng)用程序的調(diào)試,開發(fā)板以微控制器EP1C6Q240C8N為核心,外擴(kuò)2MB FLASH和1MB SRAM存儲器,用來存放調(diào)試過程中所用到的系統(tǒng)軟件、用戶代碼和數(shù)據(jù).該開發(fā)板不含網(wǎng)卡部分,網(wǎng)卡由自己實現(xiàn).

下面在Nios II處理器系統(tǒng)上設(shè)計了一個簡單的socket服務(wù)器實例,實現(xiàn)LwIP功能,構(gòu)建一個嵌入式網(wǎng)絡(luò)開發(fā)平臺.該socket服務(wù)器實現(xiàn)的數(shù)據(jù)流程圖如圖4.

圖4 簡單socket服務(wù)器實現(xiàn)的數(shù)據(jù)流程圖

該數(shù)據(jù)流程圖的工作過程是:

(1)LwIP軟件組件接收網(wǎng)絡(luò)數(shù)據(jù)包(包含發(fā)自遠(yuǎn)程客戶端程序的一個LED命令).

(2)LwIP通過TCP/IP協(xié)議處理進(jìn)來的網(wǎng)絡(luò)數(shù)據(jù)包,并通過套接字接口(socket API)將數(shù)據(jù)包提交給socket server task.

(3)包含在數(shù)據(jù)包中的LED命令被提取并發(fā)給LED命令隊列,等待LED management tasks進(jìn)行處理.

測試時,可以根據(jù)個人的網(wǎng)絡(luò)設(shè)置情況改變開發(fā)板的IP地址(本測試中IP為192.168.1.120,端口為30),應(yīng)用程序編譯下載運行后,在Nios II IDE的console窗口出現(xiàn)如下提示:

Simple Socket Server starting up

Static IP Address is 192.168.1.120

[sss_task]Simple Socket Server listening on port 30

說明簡單Socket服務(wù)器已準(zhǔn)備就緒,開始運行.

用ping ip地址命令可以得到ICMP reply響應(yīng),用telnet ip地址30(登錄30號端口)命令可以看到socket服務(wù)器的回顯效果.見圖5.

這時,輸入相應(yīng)的數(shù)字,開發(fā)板上相應(yīng)的LED燈就閃爍.在Nios II IDE的console窗口出現(xiàn)如下提示:

[sss_handle_accept]accepted connection request from 192.168.1.113

[sss_handle_receive]processing RX data

Value for LED_PIO_BASE set to 1.

Value for LED_PIO_BASE set to 3.

Value for LED_PIO_BASE set to 7.

Value for LED_PIO_BASE set to 15.

Value for LED_PIO_BASE set to 31.

Value for LED_PIO_BASE set to 63.

Value for LED_PIO_BASE set to 127.

Value for LED_PIO_BASE set to 255.

說明ARP、IP、ICMP、TCP協(xié)議都已正確運行.

圖5 簡單Socket服務(wù)器的響應(yīng)窗口

3 結(jié)束語

借助以太網(wǎng)和嵌入式技術(shù),把嵌入式系統(tǒng)連接到internet上,已成為嵌入式系統(tǒng)今后發(fā)展的一個重要的方向.本文的創(chuàng)新點是在Nios II處理器上實現(xiàn)了LwIP網(wǎng)絡(luò)協(xié)議的移植,并成功應(yīng)用于簡單socket服務(wù)器的設(shè)計.該內(nèi)容后續(xù)可應(yīng)用于嵌入式系統(tǒng)的遠(yuǎn)程智能控制等網(wǎng)絡(luò)開發(fā).

[1]李良仁,彭雪峰.LwIP協(xié)議棧在NIOS II系統(tǒng)中的移植[J].機(jī)電技術(shù),2009(4):25-28.

[2]張翠,鄧志良.LwIP協(xié)議棧在μC/OS-II上的移植和應(yīng)用[J].微計算機(jī)信息,2010(3):84-85.

[3]楊玉佳,李廣軍,郊志勇.基于LwIP的串口以太網(wǎng)協(xié)議轉(zhuǎn)換器的設(shè)計與實現(xiàn)[J].電子設(shè)計應(yīng)用,2009(3):63-65.

[4]時建雷,肖鐵軍.面向LwIP的Nios II網(wǎng)絡(luò)驅(qū)動程序開發(fā)[J].微計算機(jī)信息,2008(24):36-38.

The Porting of LwIP in Nios II soft-core Processor and its Application

YUAN Zehuai
(College of Electronic InformationandMechatronic Engineering,Zhaoqing University,Zhaoqing,Guangdong 526061,China)

Nios II is a kind of soft CPU designed forSOPC specially.Forembedded system designer,it is a kind of IP core.Nios II has the characteristics of reconfiguration,which brings more flexibility to the designer. Nios II has offered a kind of brand-new train of thought to Embedded System designer.The porting of LwIP in Nios IIProcessoris discussed,anditis successfully appliedto the designof asimple socketserver.

LwIP;NiosII;EmbeddedSystems;μC/OS II

TP399

A

1009-8445(2010)05-0021-04

(責(zé)任編輯:徐生然)

2010-07-15

元澤懷(1975-),男,廣東惠來人,肇慶學(xué)院電子信息與機(jī)電工程學(xué)院高級實驗師,碩士.

猜你喜歡
開發(fā)板驅(qū)動程序調(diào)用
核電項目物項調(diào)用管理的應(yīng)用研究
LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
Microchip最新推出兩款PIC32 Curiosity開發(fā)板
淺析單片機(jī)開發(fā)板的設(shè)計與制作
電子制作(2017年22期)2017-02-02 07:10:14
基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
Mouser為您呈上開發(fā)關(guān)鍵之STMicroelectronics Nucleo開發(fā)板
Arduino和Atmel發(fā)布Arduino Zero開發(fā)板
利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
驅(qū)動程序更新與推薦
驅(qū)動程序更新與推薦
布拖县| 右玉县| 兴安县| 彰化县| 山阳县| 郓城县| 务川| 淮阳县| 若尔盖县| 洮南市| 名山县| 吴忠市| 隆尧县| 涞源县| 满洲里市| 邻水| 滕州市| 禹城市| 日照市| 汉川市| 莲花县| 成武县| 青岛市| 安平县| 外汇| 东乌珠穆沁旗| 烟台市| 凉山| 灵川县| 金湖县| 香格里拉县| 佛冈县| 财经| 南平市| 岳池县| 叶城县| 金华市| 新密市| 邵武市| 迁西县| 拉孜县|