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

基于MPC852T的VxWorks以太網(wǎng)驅(qū)動(dòng)分析與實(shí)現(xiàn)

2018-01-18 07:11:05閔衛(wèi)鋒馬安良
電子設(shè)計(jì)工程 2018年1期
關(guān)鍵詞:設(shè)備系統(tǒng)

閔衛(wèi)鋒,馬安良

(楊凌職業(yè)技術(shù)學(xué)院陜西楊凌712100)

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

1 設(shè)計(jì)原理

MPC852T具有快速以太網(wǎng)控制器(FEC),通過(guò)配置FEC的工作模式寄存器GFMR,可以使FEC工作于以太網(wǎng)模式,F(xiàn)EC相對(duì)獨(dú)立,F(xiàn)EC的實(shí)現(xiàn)不影響CPM的其它性能。

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

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

驅(qū)動(dòng)程序需要完成的部分,是提供CPU相關(guān)的TxBD和RxBD操作的方法,當(dāng)有數(shù)據(jù)需要發(fā)送時(shí),要從CPU取得數(shù)據(jù),填充到TxBD中去,當(dāng)收到數(shù)據(jù)時(shí),需要將收到的數(shù)據(jù)通知到網(wǎng)絡(luò)接收任務(wù)。與TTY設(shè)備相似地,基于此,需要完成硬件寄存器的初始化,緩存空間的初始化,中斷向量的關(guān)聯(lián),向VxWorks內(nèi)核提供標(biāo)準(zhǔn)的接口函數(shù)。

2 MUX接口層

為了保證網(wǎng)絡(luò)協(xié)議層與網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)層的無(wú)關(guān)性,VxWorks操作系統(tǒng)在網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)層和網(wǎng)絡(luò)協(xié)議層之間增加了MUX接口層,MUX接口層有效隔離了網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序和協(xié)議層協(xié)議,使得網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)程序和協(xié)議相對(duì)獨(dú)立,雙方只有一個(gè)公共的接口就是MUX接口層。MUX接口層分別為網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)層和網(wǎng)絡(luò)協(xié)議層提供了統(tǒng)一標(biāo)準(zhǔn)接口,而網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)層和網(wǎng)絡(luò)協(xié)議層只需要跟對(duì)應(yīng)的接口進(jìn)行操作,雙方并無(wú)直接交互。MUX接口層的加入,有效的避免了網(wǎng)絡(luò)設(shè)備驅(qū)動(dòng)層和網(wǎng)絡(luò)協(xié)議層直接操作,方便設(shè)備驅(qū)動(dòng)程序和協(xié)議的移植和擴(kuò)展。

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

3 關(guān)鍵代碼

以太網(wǎng)驅(qū)動(dòng)程序也可以劃分為硬件初始化和API兩部分。其中,硬件初始化工作是在系統(tǒng)上電初始化的時(shí)候完成的。API部分主要是提供了MUX接口層必須的一些標(biāo)準(zhǔn)接口函數(shù)。這里重點(diǎn)介紹硬件初始化部分以及驅(qū)動(dòng)程序中用到的關(guān)鍵數(shù)據(jù)結(jié)構(gòu)。

以太網(wǎng)設(shè)備的初始化一般要在作為控制端口的TTY設(shè)備初始化完成之后才開始。實(shí)際上,網(wǎng)口也可以在整個(gè)系統(tǒng)任務(wù)都運(yùn)行完之后再進(jìn)行加載。加載函數(shù)的接口是以結(jié)構(gòu)END_TBL_ENTRY為元素的函數(shù)入口。END_TBL_ENTRY結(jié)構(gòu)定義如下:

圖1MUX接口示意圖

第一個(gè)數(shù)值是設(shè)備的單元號(hào),當(dāng)加載這個(gè)驅(qū)動(dòng)入口時(shí),相應(yīng)的設(shè)備名就是devName#unit,這樣可以使用同一個(gè)加載函數(shù)入口實(shí)現(xiàn)多個(gè)設(shè)備單元的加載。

第二個(gè)就是加載函數(shù)入口,后續(xù)會(huì)詳細(xì)描述。第三個(gè)是加載的入口字符串,用以提供對(duì)設(shè)備的詳細(xì)描述。

第四個(gè)是借用緩存的標(biāo)識(shí),即收發(fā)數(shù)據(jù)時(shí)是否作一次拷貝?目前不使用這個(gè)參數(shù)。

第五個(gè)是BSP的參數(shù)入口,即當(dāng)系統(tǒng)調(diào)用函數(shù)endLoadFunc()時(shí),提供的void*參數(shù)。

第六個(gè)是記錄是否有效的標(biāo)志。這個(gè)辦法可以讓一個(gè)入口不必使用注釋掉代碼的辦法停止一個(gè)驅(qū)動(dòng)的加載。要使能這個(gè)驅(qū)動(dòng)的加載,這個(gè)變量值寫為FALSE,那么系統(tǒng)會(huì)加載這個(gè)驅(qū)動(dòng),在完成加載后將這個(gè)值寫為TRUE。如果在靜態(tài)配置中把這個(gè)值寫為TRUE,系統(tǒng)就會(huì)停止該驅(qū)動(dòng)的加載。

END_TBL_ENTRY結(jié)構(gòu)變量存放在文件configNet.h文件的數(shù)組endDevTbl[]里,最終這個(gè)文件會(huì)被包含在xxxConfig.c文件(xxxConfig.c文件是指bootConfig.c或者prjConfig.c)里。系統(tǒng)通過(guò)muxDevLoad()函 數(shù) 來(lái) 加 載 endLoadFunc(參 考 <usrNetwork.c>):

endLoadFunc()函數(shù)從 muxDevLoad()入口點(diǎn)被系統(tǒng)加載后,就會(huì)在需要的地方被系統(tǒng)調(diào)用。

4 END驅(qū)動(dòng)加載

END驅(qū)動(dòng)加載如圖2所示。

圖2 END驅(qū)動(dòng)加載示意圖

系統(tǒng)在muxDevLoad()函數(shù)中調(diào)用endLoadFunc()函數(shù)時(shí),并不是直接將END_TBL_ENTRY表中的初始化字符提供給endLoadFunc()函數(shù),而是先提供一個(gè)空的字符串以獲取該設(shè)備的名稱,然后在設(shè)備列表中尋找這個(gè)設(shè)備的驅(qū)動(dòng),如果找到該驅(qū)動(dòng),則停止調(diào)用endLoadFunc()函數(shù)以免重復(fù)執(zhí)行,如果找不到該驅(qū)動(dòng),才會(huì)繼續(xù)執(zhí)行加載,并會(huì)將該驅(qū)動(dòng)的單元號(hào)追加到初始化字符串的頭部。這在TORNADO的相關(guān)說(shuō)明文檔中并沒(méi)有提及。

在加載完畢后系統(tǒng)通過(guò)調(diào)用NET_FUNCS驅(qū)動(dòng)函數(shù)組中的motFecStar(t)函數(shù)將中斷和處理函數(shù)連接并且使中斷使能。也可以手動(dòng)調(diào)用muxDevStart()函數(shù)執(zhí)行網(wǎng)口的啟用。

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

netJobAdd()函數(shù)處理的主要流程即是調(diào)用msgQSend()函數(shù)向tNetTask任務(wù)發(fā)送一個(gè)消息,消息的第一個(gè)參數(shù)即是期望的處理函數(shù)入口指針,其余的參數(shù)則是提供給處理函數(shù)的參數(shù)。tNetTask()任務(wù)在收到該消息之后即將消息緩存中的第一個(gè)4字節(jié)組作為函數(shù)指針,其余的消息作為函數(shù)指針的入?yún)ⅲ缓笳{(diào)用處理函數(shù)。所以如果使用netJobAdd()調(diào)用的函數(shù)處理出現(xiàn)異常,將會(huì)導(dǎo)致網(wǎng)絡(luò)任務(wù)的異常乃至崩潰產(chǎn)生。

驅(qū)動(dòng)層處理收到的數(shù)據(jù)時(shí),可以調(diào)用endLib.h庫(kù)中提供的 END_RCV_RTN_CALL(pEnd,pMblk)宏。該宏實(shí)際上是調(diào)用muxReceive()函數(shù)進(jìn)行數(shù)據(jù)的接收處理,該函數(shù)是在運(yùn)行muxDevLoad()時(shí)被TORNADO系統(tǒng)加載的,這就將數(shù)據(jù)的接收流程交給了TORNADO系統(tǒng)。在TORNADO的MUX層,系統(tǒng)會(huì)通過(guò)muxBind()函數(shù)將不同協(xié)議的數(shù)據(jù)接收數(shù)理函數(shù)添加到處理函數(shù)列表中,這些處理函數(shù)就會(huì)在muxReceive()函數(shù)中得到執(zhí)行。

5 結(jié)論

文中分析了在VxWorks操作系統(tǒng)上實(shí)現(xiàn)基于MPC852T的END標(biāo)準(zhǔn)以太網(wǎng)驅(qū)動(dòng)的設(shè)計(jì)原理和軟件架構(gòu),充分發(fā)揮了MPC852T的強(qiáng)大控制能力和通信能力,以及VxWorks操作系統(tǒng)資源調(diào)度能力和實(shí)時(shí)性的特性,滿足了用戶的需求,達(dá)到預(yù)期目標(biāo)。為上層軟件提供了標(biāo)準(zhǔn)調(diào)用接口,經(jīng)實(shí)際產(chǎn)品驗(yàn)證,該END標(biāo)準(zhǔn)以太網(wǎng)驅(qū)動(dòng)穩(wěn)定、可靠。

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

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

[3]張宇坤,袁冬莉,黃鑫鑫,等.基于VxWorks的網(wǎng)卡驅(qū)動(dòng)程序開發(fā)[J].計(jì)算機(jī)技術(shù)與發(fā)展,2013(1):18-20.

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

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

[6]屈丹.基于MPC8270的MCC驅(qū)動(dòng)設(shè)計(jì)[J].電子設(shè)計(jì)工程,2014(24):174-176.

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

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

[9]張煜,陳欣,宋力兵,等.基于MPC8280的CPU單元與內(nèi)部總線驅(qū)動(dòng)程序設(shè)計(jì)[J].電子設(shè)計(jì)工程,2014(19):43-46.

[10]張?jiān)u程帥,張帥,等.基于VxWorks的PCI總線多功能數(shù)據(jù)采集卡驅(qū)動(dòng)開發(fā)[J].電子設(shè)計(jì)工程,2012(12):39-41.

[11]李艷軍,高華,顧欣莉.實(shí)時(shí)嵌入式操作系統(tǒng)VxWorks設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2011(5):130-133.

[12]周勇軍.關(guān)于VxWorks系統(tǒng)及其研究現(xiàn)狀的評(píng)述[J].測(cè)控技術(shù),2015(3):89-90.

[13]肖磊.VxWorks下基于socket的網(wǎng)絡(luò)通信設(shè)計(jì)[J].計(jì)算機(jī)與網(wǎng)絡(luò),2012(9):13-15.

[14]陳懷民.VxWorks下設(shè)備驅(qū)動(dòng)程序開發(fā)技術(shù)研究[J].現(xiàn)代電子技術(shù),2015(10):79-80.

[15]胡明民.基于實(shí)時(shí)操作系統(tǒng)VxWorks的驅(qū)動(dòng)程序開發(fā)[D].西安:西安電子科技大學(xué),2012.

[16]曹桂平.VxWorkss設(shè)備驅(qū)動(dòng)開發(fā)詳解[M].北京:電子工業(yè)出版社,2011.

[17]孫智博.嵌入式設(shè)備驅(qū)動(dòng)開發(fā)精解[M].北京:人民郵電出版社,2013.

猜你喜歡
設(shè)備系統(tǒng)
諧響應(yīng)分析在設(shè)備減振中的應(yīng)用
Smartflower POP 一體式光伏系統(tǒng)
WJ-700無(wú)人機(jī)系統(tǒng)
ZC系列無(wú)人機(jī)遙感系統(tǒng)
基于PowerPC+FPGA顯示系統(tǒng)
半沸制皂系統(tǒng)(下)
基于VB6.0+Access2010開發(fā)的設(shè)備管理信息系統(tǒng)
基于MPU6050簡(jiǎn)單控制設(shè)備
電子制作(2018年11期)2018-08-04 03:26:08
連通與提升系統(tǒng)的最后一塊拼圖 Audiolab 傲立 M-DAC mini
500kV輸變電設(shè)備運(yùn)行維護(hù)探討
主站蜘蛛池模板: 亚洲码一区二区三区| 日韩毛片免费观看| 亚洲欧洲一区二区三区| 毛片网站观看| 欧美日韩激情在线| 国内精品视频| 四虎AV麻豆| 国产迷奸在线看| 国产熟女一级毛片| 日韩精品少妇无码受不了| 国产亚洲精品97AA片在线播放| 十八禁美女裸体网站| 国内丰满少妇猛烈精品播| 欧美黄网在线| 国产亚洲精| 亚洲成人网在线播放| 日韩欧美视频第一区在线观看| 在线观看亚洲精品福利片| 国产95在线 | 久久婷婷六月| 亚洲看片网| 老色鬼久久亚洲AV综合| 国产色爱av资源综合区| 免费无码又爽又刺激高| 人妻21p大胆| 久久成人免费| 国产精品第| 国产自产视频一区二区三区| 色综合天天娱乐综合网| 亚洲女同欧美在线| 亚洲无码精品在线播放| 国产91麻豆免费观看| 国产精品.com| 亚洲人成网站在线观看播放不卡| 欧美日韩专区| 国产成人免费观看在线视频| 久久久噜噜噜久久中文字幕色伊伊 | 国产h视频免费观看| 亚洲人成网站色7799在线播放| 久视频免费精品6| 国产农村精品一级毛片视频| 国产又爽又黄无遮挡免费观看| 国产精品亚洲αv天堂无码| 国产精品99r8在线观看| 72种姿势欧美久久久大黄蕉| 久久超级碰| 亚洲综合色在线| 亚洲欧美在线精品一区二区| 国产91久久久久久| 国产一级二级三级毛片| 18禁黄无遮挡网站| 日本AⅤ精品一区二区三区日| 欧美天堂在线| 亚洲日本韩在线观看| 亚洲视频在线青青| 欧美亚洲综合免费精品高清在线观看| 免费一级成人毛片| 91精品啪在线观看国产91| 第一区免费在线观看| 国产剧情伊人| 色欲国产一区二区日韩欧美| 日韩人妻无码制服丝袜视频| 伊人久久福利中文字幕| 四虎影视8848永久精品| 日韩免费成人| 欧美精品v| AV无码无在线观看免费| 手机在线国产精品| 毛片视频网址| 人妻中文久热无码丝袜| 亚洲欧美在线综合图区| 91麻豆精品国产91久久久久| 亚洲成人网在线播放| 国产91小视频| 国产女人在线| 国产精品无码久久久久久| 99一级毛片| 久久综合色88| 亚洲中文无码av永久伊人| 国产自无码视频在线观看| 在线无码av一区二区三区| 国产精品自在线天天看片|