999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于RTEMS的網絡驅動程序設計

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

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

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

1.引言

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

2.RTEMS的網絡模塊

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

2.1 網絡驅動運行機理

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

圖1 RTEMS網絡驅動框架

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

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

2.2 網絡設備驅動的主要功能

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

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

圖2 RTEMS網絡模型

3.基于ARM的DM9000A網絡驅動設計

3.1 DM9000A網卡硬件接口

實例中,網絡接口卡選擇的是DM9000A芯片。DM9000A是一個高集成而且功耗很低的高速網絡控制器,支持10/100M以太網連接,芯片內部自帶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數據線和DM9000A的SD0到SD15數據線相連。而DM9000A的中斷管腳和S3C2440的IRQ_LAN相連。

圖3 DM9000A和S3C2440的連接

圖4 netdemo應用輸出

3.2 DM9000A網絡驅動設計

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

3.2.1 網絡設備初始化

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

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

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

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

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

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

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

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

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

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

4.DM9000A驅動的編譯及測試

4.1 將驅動程序編譯進RTEMS

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

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

4.2 測試結果

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

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

5.結束語

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

參考文獻

[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)測試。

主站蜘蛛池模板: 久久大香香蕉国产免费网站| 国产欧美日韩va| 伊人久久久久久久| 久综合日韩| 亚洲小视频网站| 国产精品手机在线播放| 亚洲国产综合精品一区| 国产亚洲精品自在久久不卡 | 亚洲国产精品久久久久秋霞影院| 波多野结衣在线一区二区| 久久伊人操| 东京热高清无码精品| 久久综合一个色综合网| 精品人妻一区无码视频| 啊嗯不日本网站| 国产精品毛片一区视频播| 国产午夜小视频| 国产毛片基地| h视频在线播放| 国产成人亚洲无码淙合青草| 一本二本三本不卡无码| 国产美女免费| 女人18毛片水真多国产| 亚洲成人免费在线| 亚洲欧美综合在线观看| 欧美日韩亚洲综合在线观看| a级毛片在线免费| 无码高潮喷水专区久久| 国产又粗又猛又爽视频| 亚洲一道AV无码午夜福利| 亚洲AⅤ波多系列中文字幕| 亚洲精品无码不卡在线播放| 美美女高清毛片视频免费观看| 国产男人的天堂| 亚洲一区第一页| 日韩在线网址| 国产人成在线观看| a毛片在线播放| 色爽网免费视频| 天堂网亚洲综合在线| 性做久久久久久久免费看| 天堂网亚洲综合在线| 精品一区二区三区水蜜桃| 欧美日韩成人在线观看 | 亚洲欧美日韩成人在线| 免费全部高H视频无码无遮掩| 色欲综合久久中文字幕网| 国产情精品嫩草影院88av| 免费在线国产一区二区三区精品| 日本草草视频在线观看| 欧美福利在线观看| 国产成人AV男人的天堂| 久久免费视频6| 毛片久久久| 日韩中文无码av超清| 国产一区二区三区视频| 精品色综合| 国产精品微拍| 亚洲大学生视频在线播放| 中文无码精品a∨在线观看| 久青草网站| 精品久久香蕉国产线看观看gif| 欧美一区福利| 国产精品不卡片视频免费观看| 国内精品伊人久久久久7777人| 成·人免费午夜无码视频在线观看 | 精品国产三级在线观看| 中文字幕乱码中文乱码51精品| 亚洲欧洲自拍拍偷午夜色无码| 免费视频在线2021入口| 国产亚洲精品97AA片在线播放| 毛片在线看网站| 亚洲日韩精品无码专区| 久久国语对白| 亚洲无码91视频| 天天色天天操综合网| 欧美精品导航| 在线观看无码av免费不卡网站| 亚洲精品国产综合99| 欧美在线视频不卡第一页| 欧美国产菊爆免费观看 | 无码一区中文字幕|