亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于RTEMS的網(wǎng)絡驅動程序設計

        2014-01-01 00:00:00吳華中陳鴻
        電子世界 2014年2期

        【摘要】網(wǎng)絡互聯(lián)已深入多個領域,而RTEMS實時操作系統(tǒng)對網(wǎng)絡設備的支持卻明顯不足。為添加RTEMS對網(wǎng)絡的支持,充分利用RTEMS的性能。首先對RTEMS網(wǎng)絡設備驅動的運行機理進行了分析,介紹了網(wǎng)絡設備驅動開發(fā)的框架。然后在RTEMS平臺中實現(xiàn)DM9000A網(wǎng)絡接口卡驅動,結合網(wǎng)絡驅動的實例重點分析了RTEMS系統(tǒng)下網(wǎng)路驅動程序的開發(fā)方法。最后使得DM9000A在RTEMS平臺下能夠正常編譯,且通過實驗來驗證實現(xiàn)的可行性和有效性。

        【關鍵詞】RTEMS;實時系統(tǒng);DM9000A網(wǎng)絡接口卡;網(wǎng)絡驅動

        1.引言

        RTEMS(Real-Time Executive for Multiprocessor Systems)是一個開放源代碼的實時嵌入式操作系統(tǒng),對各類主流的嵌入式平臺都有良好的支持[1]。為了添加RTEMS平臺的網(wǎng)絡應用功能,需要設計出合理的網(wǎng)絡設備驅動程序。為了滿足RTEMS平臺的驅動模型,必須對其組織組織框架有所理解。由于RTEMS是開源的,這使得可以對其網(wǎng)絡驅動模塊部分進行分析和移植以滿足不同的應用需求。本文通過對RTEMS網(wǎng)絡源碼的分析,并結合DM9000A驅動的實例,探討了如何為RTEMS添加網(wǎng)絡驅動。

        2.RTEMS的網(wǎng)絡模塊

        RTEMS網(wǎng)絡?;贐SD,并提供了絕大部分BSD的網(wǎng)絡服務。網(wǎng)絡應用程序通過套接字(socket)接口來實現(xiàn)本地及網(wǎng)絡設備間的通信。應用程序通過網(wǎng)絡模塊與底層驅動進行交互,是無法直接訪問網(wǎng)絡設備的。

        2.1 網(wǎng)絡驅動運行機理

        不同于RTEMS平臺的其他設備驅動,網(wǎng)絡設備驅動不是交由IO管理器管理的,而是由BSD協(xié)議棧實現(xiàn)管理的。如圖1所示,由上之下,RTEMS網(wǎng)絡棧分為網(wǎng)絡協(xié)議接口層、網(wǎng)絡設備接口層、設備驅動接口層,以及網(wǎng)絡設備驅動層。

        圖1 RTEMS網(wǎng)絡驅動框架

        網(wǎng)絡設備驅動層提供訪問物理設備的具體驅動程序。設備驅動接口層,向上為上層提供訪問設備的接口,向下提供統(tǒng)一的驅動程序調用接口,通過if_start函數(shù)接口啟動發(fā)送,通過設備的中斷來觸發(fā)具體的收、發(fā)操作。網(wǎng)絡設備接口層是設備驅動接口層的延續(xù),其向協(xié)議接口層提供對硬件設備的統(tǒng)一描述,即每個網(wǎng)絡設備都必須有屬于自己的ifnet結構體,該結構也展示了RTEMS面向對象方法的設計,是設備驅動層中各個函數(shù)的容器。網(wǎng)絡協(xié)議接口層為上層協(xié)議提供了統(tǒng)一的接收、發(fā)送數(shù)據(jù)包的接口,其實質是通過數(shù)據(jù)包中的協(xié)議頭來決定不同協(xié)議函數(shù)的調用。這一層屏蔽了底層的具體硬件細節(jié)。

        首先,它會阻塞并等待接收事件START_RECEIVE_EVENT的發(fā)生;然后,當?shù)却氖录l(fā)生時,會向系統(tǒng)申請數(shù)據(jù)緩存mbuf,獲取數(shù)據(jù)包長度及狀態(tài)碼,檢查設備是否已經(jīng)接受到數(shù)據(jù)、狀態(tài)碼是否正確,調用dm9000a_inblk_16bit()將DM9000A內部SRAM中的數(shù)據(jù)復制到剛剛申請的緩存mbuf中;最后,剔除以太網(wǎng)頭,并調用ether_input()向internet層傳遞數(shù)據(jù)進行進一步的處理。

        2.2 網(wǎng)絡設備驅動的主要功能

        如圖2所示,網(wǎng)絡接收、發(fā)送是通過任務形式存在。發(fā)送任務Trans Daemon會一直阻塞直到有要發(fā)送的數(shù)據(jù)已經(jīng)填充發(fā)送隊列。應用準備好要發(fā)送的數(shù)據(jù)時,發(fā)送任務可能依舊阻塞,當發(fā)送中斷處理程序Transmit ISR空閑時,會觸發(fā)發(fā)送事件來調用網(wǎng)絡驅動程序的發(fā)送函數(shù)進行數(shù)據(jù)發(fā)送。同樣的接收任務Receive Daemon會一直阻塞,當有網(wǎng)絡數(shù)據(jù)到來時會發(fā)生接收中斷,Receive ISR會觸發(fā)數(shù)據(jù)接收事件,接著會調用網(wǎng)絡驅動程序的接收函數(shù)來接收數(shù)據(jù),并交由網(wǎng)絡核心進行進一步的處理,可能涉及TCP的重傳等。之后會提交給上層應用程序。

        網(wǎng)絡設備驅動程序的接收、發(fā)送任務極度依賴具體的硬件細節(jié),是驅動設計中的關鍵內容,這部分處理的好壞直接影響了整個網(wǎng)絡的性能。

        圖2 RTEMS網(wǎng)絡模型

        3.基于ARM的DM9000A網(wǎng)絡驅動設計

        3.1 DM9000A網(wǎng)卡硬件接口

        實例中,網(wǎng)絡接口卡選擇的是DM9000A芯片。DM9000A是一個高集成而且功耗很低的高速網(wǎng)絡控制器,支持10/100M以太網(wǎng)連接,芯片內部自帶16K字節(jié)的SRAM(3K用來發(fā)送,13K用來接收)。針對不同的處理器,接口支持8位、16位[2]。本文采用三星S3C2440 ARM作為系統(tǒng)的微處理器。S3C2440與DM9000A的連接方式如圖3所示。

        S3C2440通過片選nLAN_cs線和LADDR2分別連接DM9000A芯片的nCS管腳和CMD管腳,S3C2440的LnOE線連接DM9000A的nIOR管腳,LnWE線連接DM9000A的nIOW管腳,通過S3C2440的LDATA0到LDATA15數(shù)據(jù)線和DM9000A的SD0到SD15數(shù)據(jù)線相連。而DM9000A的中斷管腳和S3C2440的IRQ_LAN相連。

        圖3 DM9000A和S3C2440的連接

        圖4 netdemo應用輸出

        3.2 DM9000A網(wǎng)絡驅動設計

        網(wǎng)絡設備驅動程序的設計需要完成的主要有網(wǎng)絡設備初始化、接收任務實現(xiàn)、發(fā)送任務實現(xiàn)、中斷服務程序實現(xiàn)。

        3.2.1 網(wǎng)絡設備初始化

        任何設備在可使用前都必須進行恰當?shù)某跏蓟?。該過程是通過每設備結構體ifnet中if_init函數(shù)實現(xiàn)。在向RTEMS注冊網(wǎng)絡設備驅動時被設定為dm9000_init(),當開啟網(wǎng)絡功能支持時rtems_dm9000a_driver_attach會調用dm9000a_init()函數(shù)完成設備的初始化。

        為完成設備初始化,dm9000a_init()會調用dm9000a_initialize_hardware完成具體的初始化,其中包括軟復位,探測設備類型、是否掛接,數(shù)據(jù)位模式,使能接收、發(fā)送中斷。

        3.2.2 接收任務實現(xiàn)

        由1.2節(jié)可知,RTEMS中是以任務形式監(jiān)聽是否要進行數(shù)據(jù)的接收,當網(wǎng)卡接收到數(shù)據(jù)時,中斷會發(fā)送接收事件以喚醒接收任務進行任務接收。這里,就以dm9000a_rxDaemon()函數(shù)來說明如何實現(xiàn)自己的接收任務。

        3.2.3 發(fā)送任務實現(xiàn)

        同接收任務一樣,發(fā)送任務dm9000a_txDaemon()會一直阻塞并等待中斷觸發(fā)發(fā)送事件START_TRANSMIT_EVENT;然后檢測發(fā)送隊列是否為空,不為空即調用驅動的發(fā)送函數(shù)dm9000a_sendpacket()完成具體的數(shù)據(jù)包發(fā)送,直到發(fā)送隊列為空。

        dm9000a_sendpacket()函數(shù)完成以下幾個步驟:首先,將應用程序放在mbuf中的數(shù)據(jù)拷貝到發(fā)送緩沖txbuf數(shù)組中;然后,再將txbuf中的數(shù)據(jù)拷貝到DM9000A內部的SRAM中等待發(fā)送,通過寫DM9000A_TCR寄存器開始硬件的發(fā)送;最后,清零DM9000A_ISR寄存器的TX位。

        3.2.4 中斷服務程序實現(xiàn)

        數(shù)據(jù)包的接收和發(fā)送都會觸發(fā)硬件中斷,通知驅動程序進行數(shù)據(jù)包的接收和發(fā)送。中斷程序dm9000a_isr()是驅動的核心,由其控制網(wǎng)卡的接收、發(fā)送動作。

        在dm9000a_isr()中,首先,屏蔽中斷,獲得中斷狀態(tài)碼;然后,根據(jù)DM9000A_ISR寄存器中接收和發(fā)送中斷位來觸發(fā)相應的START_RECEIVE_EVENT和START_TRANSMIT_EVENT事件;最后,重新使能中斷。

        4.DM9000A驅動的編譯及測試

        4.1 將驅動程序編譯進RTEMS

        網(wǎng)絡驅動被視為BSD網(wǎng)絡棧的一部分[3],由于網(wǎng)絡是RTEMS的可選支持功能,為添加網(wǎng)絡功能首先要使得RTEMS支持TCP/IP協(xié)議棧,而后才能添加定制的網(wǎng)絡驅動程序。

        為RTEMS添加網(wǎng)絡功能是通過BSP目錄下的Makefile.am文件實現(xiàn)的。這樣應用程序就可以使用RTEMS提供的網(wǎng)絡功能了。

        4.2 測試結果

        使用RTEMS自帶的測試樣例netdemo進行網(wǎng)絡測試,netdemo主要顯示網(wǎng)絡連接參數(shù),比如當前udp、tcp請求,已發(fā)生中斷次數(shù)等。

        不同于Linux嵌入式系統(tǒng),RTEMS的應用程序必須和RTEMS編譯成一個鏡像,然后加載進內存才能執(zhí)行。在編譯鏡像前需要為netdemo應用程序配置網(wǎng)絡參數(shù),在network_config文件中添加IP地址,網(wǎng)關,應用可使用的mbuf緩存大小等。如圖4所示,網(wǎng)絡驅動已經(jīng)正常運行。

        5.結束語

        本設計以DM9000A網(wǎng)絡芯片作為樣例,介紹了網(wǎng)絡設備驅動的運行機制,詳細分析了實現(xiàn)RTEMS平臺下網(wǎng)絡設備驅動程序的方法和步驟。RTEMS網(wǎng)絡設備驅動程序的設計不同于其他的設備驅動程序,其并不由IO管理器進行管理,但也具有自身的規(guī)律,遵循這個規(guī)律,可以設計出符合應用需求的驅動程序。分析了RTEMS中的網(wǎng)絡驅動程序的工作機制,同時結合樣例,詳盡闡述了如何設計網(wǎng)絡驅動程序以使之滿足特定的應用要求。通過對DM9000A網(wǎng)絡設備驅動程序的研究,對于RTEMS平臺下添加其他類似的網(wǎng)絡設備具有一定的借鑒參考價值。

        參考文獻

        [1]RTEMS Steering Committee.RTEMS Home Page[J]. 2010.

        [2]DM9000A-17-DS-F01 Data Sheet[S].Davicom Semiconductor Inc,2006.

        [3]RTEMS TCP/IP Networking Supplement Guide[J].On-Line Applications Research Corporation(OAR),2013.

        作者簡介:

        吳華中(1989—),男,中北大學儀器與電子學院碩士研究生在讀,研究方向:自動化測試與控制技術。

        陳鴻(1963—),男,博士,中北大學儀器與電子學院教授,碩士生導師,研究方向:動態(tài)測試。

        91久久香蕉国产熟女线看| 国产一及毛片| caoporon国产超碰公开| 亚洲一区二区av天堂| 国产精品人人做人人爽人人添 | 国产日韩欧美一区二区东京热| 欧美日韩亚洲tv不卡久久| 日本在线观看不卡| 青青草精品在线免费观看 | 国产主播福利一区二区| 我和丰满老女人性销魂| 中文有码人妻字幕在线| 久久精品国产亚洲av高清热| 中文字幕第1页中文字幕在| 91精品国产色综合久久不| 久久精品国产亚洲av天| 中文字幕在线亚洲日韩6页| 91白浆在线视频| 国产成人美涵人妖视频在线观看| 精人妻无码一区二区三区| 国产亚洲日韩在线三区| 久久精品国产精品亚洲婷婷| 韩国三级黄色一区二区| 日本熟日本熟妇中文在线观看| 天天爱天天做天天爽| 国产一级一片内射在线| 免费国产自拍在线观看| 乌克兰粉嫩xxx极品hd| 依依成人影视国产精品| 男人的精品天堂一区二区在线观看 | 一区二区中文字幕蜜桃| 一区二区三区高清在线观看视频 | 精品九九视频| 国产91久久精品成人看网站| 呦系列视频一区二区三区| 国产精品免费久久久久影院| 亚洲av综合色区在线观看| 国产视频一区二区在线免费观看| 米奇777四色精品人人爽| 亚洲韩国在线| 亚洲av激情一区二区|