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

基于MPC852T的VxWorks以太網驅動分析與實現

2018-01-18 07:11:05閔衛鋒馬安良
電子設計工程 2018年1期
關鍵詞:設備系統

閔衛鋒,馬安良

(楊凌職業技術學院陜西楊凌712100)

MPC852T是一款高性能通用通信處理器,在該芯片中,將PowerPC內核和通信外設集成于一體,配有多個支持各種通信協議的外設接口因此,該處理器芯片特別適用于通信領域。相對于其他操作系統,VxWorks除了具備常見操作系統的功能外,系統調度和硬實時(確定性)方面有明顯的優勢,開發工具非常完善,能提供良好的調試機制。它以其良好的可靠性和卓越性能廣泛地應用在通信、軍事、航空、航天等高精尖技術及實時性要求極高的領域中。實現了一個基于MPC852T處理器和VxWorks操作系統的END接口標準的以太網驅動程序,為上層軟件提供標準調用接口,分層設計保證了相對的獨立性,方便跨平臺移植。

1 設計原理

MPC852T具有快速以太網控制器(FEC),通過配置FEC的工作模式寄存器GFMR,可以使FEC工作于以太網模式,FEC相對獨立,FEC的實現不影響CPM的其它性能。

以太網驅動主要是實現數據的發送、接收,以及完成BD表等,整個過程內核參與較少。發送過程主要由FEC來完成,太網發送被內核使能之后,FEC就按照固定的時間間隔(512個串行時鐘)去輪詢發送BD表,如果BD表中有數據需要發送,則進行發送操作。這種輪詢方式有可能會造成數據延遲。對于實時性要求比較高的數據發送,上層軟件在數據準備好之后,可以通過置位TODR[TOD],直接進行發送操作,而不必等到下一次的查詢。在全雙工方式下,以太網控制器不檢測沖突,只維持幀間的最小間隔(96個串行時鐘),但是在半雙工模式下,在數據發送之前,就需要進行沖突檢測。如果線路忙,則推遲發送。只有當CRS信號保持60個串行時鐘的無效狀態后,再等待CRS信號繼續無效36個串行時鐘才開始數據發送。

接收被內核使能后,在搜索模式(RX_DV有效且COL無效)判斷FEC數據同步寄存器(FDSR)和進入接收移位寄存器的數據,直到匹配時搜索模式結束。提取數據數據幀的首字節,進行數據鑒權,通過后開始接收數據并寫入內存,所有數據接收完畢后通知內核進行后續處理。

驅動程序需要完成的部分,是提供CPU相關的TxBD和RxBD操作的方法,當有數據需要發送時,要從CPU取得數據,填充到TxBD中去,當收到數據時,需要將收到的數據通知到網絡接收任務。與TTY設備相似地,基于此,需要完成硬件寄存器的初始化,緩存空間的初始化,中斷向量的關聯,向VxWorks內核提供標準的接口函數。

2 MUX接口層

為了保證網絡協議層與網絡設備驅動層的無關性,VxWorks操作系統在網絡設備驅動層和網絡協議層之間增加了MUX接口層,MUX接口層有效隔離了網絡設備驅動程序和協議層協議,使得網絡設備驅動程序和協議相對獨立,雙方只有一個公共的接口就是MUX接口層。MUX接口層分別為網絡設備驅動層和網絡協議層提供了統一標準接口,而網絡設備驅動層和網絡協議層只需要跟對應的接口進行操作,雙方并無直接交互。MUX接口層的加入,有效的避免了網絡設備驅動層和網絡協議層直接操作,方便設備驅動程序和協議的移植和擴展。

MUX提供的接口如圖1所示。

3 關鍵代碼

以太網驅動程序也可以劃分為硬件初始化和API兩部分。其中,硬件初始化工作是在系統上電初始化的時候完成的。API部分主要是提供了MUX接口層必須的一些標準接口函數。這里重點介紹硬件初始化部分以及驅動程序中用到的關鍵數據結構。

以太網設備的初始化一般要在作為控制端口的TTY設備初始化完成之后才開始。實際上,網口也可以在整個系統任務都運行完之后再進行加載。加載函數的接口是以結構END_TBL_ENTRY為元素的函數入口。END_TBL_ENTRY結構定義如下:

圖1MUX接口示意圖

第一個數值是設備的單元號,當加載這個驅動入口時,相應的設備名就是devName#unit,這樣可以使用同一個加載函數入口實現多個設備單元的加載。

第二個就是加載函數入口,后續會詳細描述。第三個是加載的入口字符串,用以提供對設備的詳細描述。

第四個是借用緩存的標識,即收發數據時是否作一次拷貝?目前不使用這個參數。

第五個是BSP的參數入口,即當系統調用函數endLoadFunc()時,提供的void*參數。

第六個是記錄是否有效的標志。這個辦法可以讓一個入口不必使用注釋掉代碼的辦法停止一個驅動的加載。要使能這個驅動的加載,這個變量值寫為FALSE,那么系統會加載這個驅動,在完成加載后將這個值寫為TRUE。如果在靜態配置中把這個值寫為TRUE,系統就會停止該驅動的加載。

END_TBL_ENTRY結構變量存放在文件configNet.h文件的數組endDevTbl[]里,最終這個文件會被包含在xxxConfig.c文件(xxxConfig.c文件是指bootConfig.c或者prjConfig.c)里。系統通過muxDevLoad()函 數 來 加 載 endLoadFunc(參 考 <usrNetwork.c>):

endLoadFunc()函數從 muxDevLoad()入口點被系統加載后,就會在需要的地方被系統調用。

4 END驅動加載

END驅動加載如圖2所示。

圖2 END驅動加載示意圖

系統在muxDevLoad()函數中調用endLoadFunc()函數時,并不是直接將END_TBL_ENTRY表中的初始化字符提供給endLoadFunc()函數,而是先提供一個空的字符串以獲取該設備的名稱,然后在設備列表中尋找這個設備的驅動,如果找到該驅動,則停止調用endLoadFunc()函數以免重復執行,如果找不到該驅動,才會繼續執行加載,并會將該驅動的單元號追加到初始化字符串的頭部。這在TORNADO的相關說明文檔中并沒有提及。

在加載完畢后系統通過調用NET_FUNCS驅動函數組中的motFecStar(t)函數將中斷和處理函數連接并且使中斷使能。也可以手動調用muxDevStart()函數執行網口的啟用。

這里特別敘述一下數據的接收處理過程。數據接收通過motFecStar(t)函數使能接收中斷,當滿足條件的數據完成一幀的接收,它首先被放在RxBD指向的BUFFER中,然后觸發CPU的接收中斷。在由硬件驅動完成的中斷處理函數中,需要通過netJobAdd()將任務級接收函數轉交tNetTask任務處理。

netJobAdd()函數處理的主要流程即是調用msgQSend()函數向tNetTask任務發送一個消息,消息的第一個參數即是期望的處理函數入口指針,其余的參數則是提供給處理函數的參數。tNetTask()任務在收到該消息之后即將消息緩存中的第一個4字節組作為函數指針,其余的消息作為函數指針的入參,然后調用處理函數。所以如果使用netJobAdd()調用的函數處理出現異常,將會導致網絡任務的異常乃至崩潰產生。

驅動層處理收到的數據時,可以調用endLib.h庫中提供的 END_RCV_RTN_CALL(pEnd,pMblk)宏。該宏實際上是調用muxReceive()函數進行數據的接收處理,該函數是在運行muxDevLoad()時被TORNADO系統加載的,這就將數據的接收流程交給了TORNADO系統。在TORNADO的MUX層,系統會通過muxBind()函數將不同協議的數據接收數理函數添加到處理函數列表中,這些處理函數就會在muxReceive()函數中得到執行。

5 結論

文中分析了在VxWorks操作系統上實現基于MPC852T的END標準以太網驅動的設計原理和軟件架構,充分發揮了MPC852T的強大控制能力和通信能力,以及VxWorks操作系統資源調度能力和實時性的特性,滿足了用戶的需求,達到預期目標。為上層軟件提供了標準調用接口,經實際產品驗證,該END標準以太網驅動穩定、可靠。

[1]周俊杰,何攀峰.基于VxWorks的實時多任務軟件框架設計[J].國外電子測量技術,2012,31(4):80-82.

[2]馮先成,李寒,張鐵男.基于MPC850 VxWorks系統的BSP設計[J].計算機與數字工程,2012,40(6):39-43.

[3]張宇坤,袁冬莉,黃鑫鑫,等.基于VxWorks的網卡驅動程序開發[J].計算機技術與發展,2013(1):18-20.

[4]張宇,王省書,胡春生.基于VxWorks的多任務實時性分析[J].微處理機,2013,34(1):53-57.

[5]樓楊.基于MPC8548的嵌入式設備光通信接口設計與實現[J].計算機測量與控制,2011(4):45-50.

[6]屈丹.基于MPC8270的MCC驅動設計[J].電子設計工程,2014(24):174-176.

[7]張寅生,雷杰.基于MPC8270的VxWorks BSP的移植[J].計算機技術與發展,2013(4):96-99.

[8]呂晨,李健,張激,等.VxWorks下UDP過載斷流問題的改進[J].信息技術,2016(8):167-170.

[9]張煜,陳欣,宋力兵,等.基于MPC8280的CPU單元與內部總線驅動程序設計[J].電子設計工程,2014(19):43-46.

[10]張原,鄒程帥,張帥,等.基于VxWorks的PCI總線多功能數據采集卡驅動開發[J].電子設計工程,2012(12):39-41.

[11]李艷軍,高華,顧欣莉.實時嵌入式操作系統VxWorks設備驅動程序的設計[J].電子設計工程,2011(5):130-133.

[12]周勇軍.關于VxWorks系統及其研究現狀的評述[J].測控技術,2015(3):89-90.

[13]肖磊.VxWorks下基于socket的網絡通信設計[J].計算機與網絡,2012(9):13-15.

[14]陳懷民.VxWorks下設備驅動程序開發技術研究[J].現代電子技術,2015(10):79-80.

[15]胡明民.基于實時操作系統VxWorks的驅動程序開發[D].西安:西安電子科技大學,2012.

[16]曹桂平.VxWorkss設備驅動開發詳解[M].北京:電子工業出版社,2011.

[17]孫智博.嵌入式設備驅動開發精解[M].北京:人民郵電出版社,2013.

猜你喜歡
設備系統
諧響應分析在設備減振中的應用
Smartflower POP 一體式光伏系統
工業設計(2022年8期)2022-09-09 07:43:20
WJ-700無人機系統
ZC系列無人機遙感系統
北京測繪(2020年12期)2020-12-29 01:33:58
基于PowerPC+FPGA顯示系統
半沸制皂系統(下)
基于VB6.0+Access2010開發的設備管理信息系統
基于MPU6050簡單控制設備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設備運行維護探討
工業設計(2016年12期)2016-04-16 02:52:00
主站蜘蛛池模板: 伊大人香蕉久久网欧美| 国内精品九九久久久精品| 欧美成人综合在线| 久久精品波多野结衣| 欧美三级自拍| 亚洲欧美不卡| 欧美性色综合网| 日本午夜三级| 亚洲第一黄片大全| 久久毛片基地| 91无码人妻精品一区| 亚洲一级毛片在线观| 亚洲AV电影不卡在线观看| 99久久精品国产综合婷婷| 精品一区二区三区四区五区| 国产精品所毛片视频| 亚洲日本中文字幕乱码中文| 一级看片免费视频| 制服丝袜在线视频香蕉| 中文字幕日韩欧美| 超清无码一区二区三区| 亚洲av色吊丝无码| 精品少妇人妻无码久久| 亚洲成AV人手机在线观看网站| 亚洲三级色| 午夜视频www| 老色鬼欧美精品| 亚洲人成影院在线观看| 国产原创演绎剧情有字幕的| 久草视频福利在线观看| 一级高清毛片免费a级高清毛片| 国产91视频观看| a级毛片毛片免费观看久潮| 国产精品lululu在线观看| 亚洲AV成人一区国产精品| 亚洲成aⅴ人在线观看| 欧美色丁香| 成人精品免费视频| 香蕉99国内自产自拍视频| 中文字幕久久波多野结衣| 国产激爽大片在线播放| 午夜人性色福利无码视频在线观看| 欧美A级V片在线观看| av免费在线观看美女叉开腿| 在线网站18禁| 国产成人免费手机在线观看视频 | 在线毛片网站| 97精品国产高清久久久久蜜芽| 国产成人区在线观看视频| 99久久精品久久久久久婷婷| 久久香蕉国产线看观看精品蕉| 91系列在线观看| 亚洲成人黄色在线| 亚洲日韩久久综合中文字幕| 日本伊人色综合网| 视频二区亚洲精品| 91网站国产| 国产精品va| 国内精品久久久久久久久久影视| 亚洲黄色激情网站| 日本久久久久久免费网络| 99re热精品视频国产免费| 国产精品成人第一区| 人妻精品久久无码区| 免费不卡视频| 无码一区中文字幕| 伊人久久婷婷| 亚洲视频无码| 91丨九色丨首页在线播放| 精品免费在线视频| 国产69精品久久久久孕妇大杂乱| 国产一区二区三区日韩精品| 亚卅精品无码久久毛片乌克兰| 亚洲伦理一区二区| 精品少妇三级亚洲| 欧美亚洲一二三区 | 福利视频一区| 亚洲精品午夜无码电影网| 亚洲日韩日本中文在线| 中文国产成人久久精品小说| 一级毛片在线播放免费观看| 91精品啪在线观看国产91|