<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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


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

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

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


          2 軟件實現(xiàn)
          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ā)展而來的。它包含了許多4.4BSD TCP/IP協(xié)議棧沒有的協(xié)議;而且SENS在實現(xiàn)一些協(xié)議功能時增加了許多新特性。如在IP協(xié)議實現(xiàn)時增加了多播功能。SENS協(xié)議棧層次如圖2所示。

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

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

          (4)修改configNet.h

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


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


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



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();