<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于VxWorks的網(wǎng)絡(luò )接口設計

基于VxWorks的網(wǎng)絡(luò )接口設計

作者: 時(shí)間:2008-03-13 來(lái)源:網(wǎng)絡(luò ) 收藏
摘要 操作系統,以S3C4480為核心CPU,用RTL8019作控制器,并實(shí)現了嵌入式。本方案在兼顧成本的同時(shí),更加注重較高的可靠性和較強的實(shí)用性,因此具有一定的推廣價(jià)值。
關(guān)鍵詞 S3C4480 RTL8019 MUX


操作系統以其高度的可靠性、優(yōu)秀的實(shí)時(shí)性、靈活的可裁減性等優(yōu)勢在嵌入式系統中備受關(guān)注,廣泛應用于許多行業(yè);而隨著(zhù)網(wǎng)絡(luò )技術(shù)的發(fā)展,嵌入式技術(shù)與網(wǎng)絡(luò )技術(shù)的結合已成必然。VxWorks是最早在其內核中加入TCP/IP協(xié)議的嵌入式實(shí)時(shí)操作系統。如何VxWorks的網(wǎng)絡(luò ),是擺在嵌入式開(kāi)發(fā)人員面前的首要課題。本以三星公司的ARM7(S3C44B0)為核心CPU,開(kāi)發(fā)了VxWorks下的網(wǎng)絡(luò )接口,包括硬件設計和軟件實(shí)現兩個(gè)部分。

1 硬件設計
核心CPU采用三星公司的S3C4480。S3C4480采用ARM7TDMI內核,它通過(guò)提供全面的、通用的片上外設,大大減少了系統電路除處理器以外的元器件配置,降低了系統成本。
網(wǎng)絡(luò )接口芯片采用Realtek公司生產(chǎn)的RTL8019AS。它是一款高度集成的以太網(wǎng)控制器,不僅集成了MAC(介質(zhì)訪(fǎng)問(wèn)控制)子層和物理層的性能,而且與NE200O兼容,具有軟件可移植性強以及價(jià)格低廉等優(yōu)點(diǎn)。
S3C4480與RTL8019AS的硬件接口原理如圖l所示。從圖1中可以看出,RTL8019AS的使能端連到S3C44B0的nGCS3,因此它的地址映射在系統的Bank3上,基地址為Ox06000000。RTL8019AS支持8位/16位數據總線(xiàn),在本電路中采用16位方式。

RTL8019AS共有32個(gè)輸入/輸出地址,對應地址偏移量為Ox00~Oxlf?,F分別說(shuō)明如下:
①Ox00~OxOf的16個(gè)地址,為寄存器地址。
②0xlO~0x17的8個(gè)地址,為數據讀寫(xiě)端口地址。它們都是一樣的,每個(gè)都可以用來(lái)做數據讀寫(xiě)端口,只要用其中一個(gè)就可以了。
③Oxl8~0xlf的8個(gè)地址,為復位端口。它們的功能都是一樣的。但需要注意,實(shí)際上只有0x18、0xla、Oxk、Oxle這幾個(gè)復位端口是有效的,其他不要使用;因為有些兼容卡不支持0x19、0xlb、0xld等奇數地址的復位。
在軟件設計時(shí),尤其要注意以下兩點(diǎn):
①RTL8019As的地址線(xiàn)從SAO~SA4依次連到S3Cd480的ADDRl~ADDR5上,因此,RTL8019的寄存器地址要左移1位。
②RTL8019AS使用EXINTl中斷,且上升沿觸發(fā)。


2 軟件實(shí)現
2.1 VxWorks的網(wǎng)絡(luò )協(xié)議棧和MUX接口
VxWorks中的網(wǎng)絡(luò )協(xié)議棧叫作“SENS(Scalable En-hanced Network Stack)”,即可裁減增強網(wǎng)絡(luò )協(xié)議棧。SENS是4.4RSD TCP/IP協(xié)議棧發(fā)展而來(lái)的。它包含了許多4.4BSD TCP/IP協(xié)議棧沒(méi)有的協(xié)議;而且SENS在實(shí)現一些協(xié)議功能時(shí)增加了許多新特性。如在IP協(xié)議實(shí)現時(shí)增加了多播功能。SENS協(xié)議棧層次如圖2所示。

SENS的基本特征與傳統的TCP/IP網(wǎng)絡(luò )協(xié)議棧相似,但從圖2中可以看出,SENS最大的特點(diǎn)是在數據鏈路層和網(wǎng)絡(luò )協(xié)議層之間多了MUX層。在SENS中網(wǎng)絡(luò )接口的驅動(dòng)程序叫作“END(Enhanced Network Driver)”,即增強型網(wǎng)絡(luò )驅動(dòng)程序,它處于數據鏈路層。IP層和TCP/UDP層合稱(chēng)為“網(wǎng)絡(luò )協(xié)議層”。在數據鏈路層和網(wǎng)絡(luò )協(xié)議層之間有應用程序接口(API),這個(gè)接口在SENS中叫作“MUX(Mulnplexer)接口”。MUX接口如圖3所示。MUX接口起到隔離網(wǎng)絡(luò )驅動(dòng)程序與網(wǎng)絡(luò )協(xié)議的作用。在老式的BSD4.3的驅動(dòng)模式下,網(wǎng)絡(luò )驅動(dòng)程序和協(xié)議是緊密聯(lián)結的,無(wú)論協(xié)議還是驅動(dòng)程序都需要了解對方的數據結構。而在新的基于MUX的模式下,驅動(dòng)程序和協(xié)議并不需要了解對方。它們通過(guò)MUX接口來(lái)通信。例如,在收到一個(gè)包后,網(wǎng)絡(luò )驅動(dòng)程序并不直接訪(fǎng)問(wèn)協(xié)議的數據結構;相反,當準備將數據傳給協(xié)議層時(shí),它調用一個(gè)MUX提供的函數,該函數處理把數據傳給協(xié)議層的細節。這使得添加一個(gè)新的驅動(dòng)程序或協(xié)議十分容易。MUX實(shí)現了下面的一套函數集:muxBind()、muxUn-bind()、muxDevLoad()、muxDevUnload()、muxReceive()、muxError()、muxSend()、muxTxRestartRtn()、muxM castAddrDel()、muxMcastAddrGet()、mux-PollSend()、muxMcastAddrAdd()、muxPollReceive()、muxIoctrl()。網(wǎng)絡(luò )驅動(dòng)程序和協(xié)議都要調用上面的函數,不需要為它們添加任何附加代碼。
2.2 END設備驅動(dòng)程序裝載過(guò)程
在VxWorks中,END設備驅動(dòng)程序裝載過(guò)程可以分為3個(gè)步驟,即指定END設備,裝載END設備和啟動(dòng)END設備。END設備的指定是通過(guò)數組endDevTbl[]來(lái)完成的,該數組描述了系統中的所有網(wǎng)絡(luò )設備的裝載入口點(diǎn)及其相關(guān)參數。系統調用MUX設備裝載函數muxDevLoad()來(lái)裝載END設備,調用MUX設備啟動(dòng)函數muxDevStart()來(lái)啟動(dòng)END設備。網(wǎng)絡(luò )設備驅動(dòng)程序的裝載過(guò)程如圖4所示。系統通過(guò)usrRoot()函數來(lái)調用usrNetInit()函數完成MUX的初始化,裝載網(wǎng)絡(luò )設備表endDevTbl[]中描述的所有設備,并將IP協(xié)議綁定到網(wǎng)絡(luò )引導設備上等。

當網(wǎng)絡(luò )設備產(chǎn)牛中斷時(shí),VxWorks調用驅動(dòng)程序先前注冊的中斷服務(wù)程序。中斷服務(wù)程序應做盡可能少的工作,以完成將數據包從本地網(wǎng)絡(luò )設備送出/取出的操作。
2.3 文件配置
由于RTL8019兼容NE2000網(wǎng)卡芯片,只需要在其基礎上完成必要的修改。首先將Tornad02.2\target\src\drv\end目錄下的ne2000End.c和Tornado2.2\target\h\drvend目錄下的ne2000End.h拷貝到bsp目錄下,然后修改以下文件。

(4)修改configNet.h

在endDevTb1[]表中添加新的裝載函數(其函數命名格式為xxLoad())入口點(diǎn)及相關(guān)參數。


④在sysHwInit()中添加RTL8019芯片的復位和初始化函數。相關(guān)代碼如下(有關(guān)寄存器的宏定義請參照RTL8019數據手冊):


結語(yǔ)
本文在VxWorks嵌入式實(shí)時(shí)操作系統下,提出了網(wǎng)絡(luò )接口的解決方案,即ARM7(S3C4480)為核心CPU,控制網(wǎng)絡(luò )控制器TRL8019實(shí)現網(wǎng)絡(luò )通信。本文首先簡(jiǎn)單介紹了幾款主要芯片,給出了硬件原理圖;然后簡(jiǎn)要分析了VxWorks下的網(wǎng)絡(luò )協(xié)議和驅動(dòng)裝載過(guò)程;最后,針對此網(wǎng)絡(luò )接幾,詳細列出了VxWorks下文件配置過(guò)程,提供了部分軟件源程序,對開(kāi)發(fā)人員有一定的參考價(jià)值。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>