當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]引言RTL8139是臺(tái)灣Realtek半導(dǎo)體公司生產(chǎn)的一種快速以太網(wǎng)控制器,提供符合PCI2.2標(biāo)準(zhǔn)的接口,兼容IEEE802.3u 100BASE-T規(guī)范,支持IEEE-802.3x全雙工流量控制,支持10Mbit.s-1/100Mbit.s-1全雙工、半雙工自適應(yīng),

引言

RTL8139是臺(tái)灣Realtek半導(dǎo)體公司生產(chǎn)的一種快速以太網(wǎng)控制器,提供符合PCI2.2標(biāo)準(zhǔn)的接口,兼容IEEE802.3u 100BASE-T規(guī)范,支持IEEE-802.3x全雙工流量控制,支持10Mbit.s-1/100Mbit.s-1全雙工、半雙工自適應(yīng),價(jià)格便宜,性能穩(wěn)定,是PC機(jī)、電信終端產(chǎn)品中應(yīng)用最多的以太網(wǎng)控制器之一。RTL8139在各種操作系統(tǒng)下的驅(qū)動(dòng)都能從Realtek公司網(wǎng)頁下載,其中包括 VxWorks系統(tǒng)下的驅(qū)動(dòng),而且提供C源代碼。但是在嵌入式系統(tǒng)下,針對(duì)不同的硬件平臺(tái),往往需要修改該驅(qū)動(dòng)程序以提高其穩(wěn)定性和效率?;?MPC8241 CPU的硬件平臺(tái),本文提出RTL8139在VxWorks系統(tǒng)下驅(qū)動(dòng)程序的改進(jìn)措施。

1 硬件平臺(tái)簡(jiǎn)介

圖1所示為某交換機(jī)終端設(shè)備的部分硬件框圖。 


 
CPU采用Motorola公司的PowerPC系列處理器之一的MPC8241,該芯片除嵌入32位 PowerPC處理器內(nèi)核外,還集成了MPC107橋,提供PCI接口與RTL8139連接,橋上有內(nèi)存控制器,掛16MB SDRAM和4 MBFlash。CPU時(shí)鐘是166MHz,SDRAM時(shí)鐘是66MHz,PCI時(shí)鐘是33MHz,RTL8139工作在10Mbit/s,半雙工方式,通過集線器(HUB)連入Internet,其作用是轉(zhuǎn)發(fā)由話音信號(hào)打成的數(shù)據(jù)包,要求1200pps(每秒數(shù)據(jù)包),且CPU占用率不高于50%。

VxWorks支持END(增加型網(wǎng)絡(luò)驅(qū)動(dòng))格式的以太網(wǎng)控制器驅(qū)動(dòng),提供MUX層作為網(wǎng)絡(luò)協(xié)議和以太網(wǎng)控制器驅(qū)動(dòng)間的接口,MUX規(guī)定了驅(qū)動(dòng)的接口函數(shù),RTL8139驅(qū)動(dòng)程序Rtl8139End.c是完全按照END格式編寫的代碼,提供了所有MUX層規(guī)定的接口函數(shù),只要寫好RTL8139 PCI配制空間寄存器,在sysRtl8139End.c中傳入PCI空間首地址、中斷向量號(hào)和中斷優(yōu)先級(jí)參數(shù),按照END格式驅(qū)動(dòng)裝載程序,裝載成功后 RTL8139就能順利運(yùn)行。

2 驅(qū)動(dòng)程序中需要解決的問題

如果數(shù)據(jù)包的收發(fā)速率是均勻的,RTL8139完全可以達(dá)到前文提出的要求,但是Internet上經(jīng)常有突發(fā)的數(shù)據(jù)包,而RTL8139的接收FIFO和發(fā)送FIFO 都只有2Kb,加之RTL8139對(duì)收發(fā)數(shù)據(jù)包采取完全拷貝方式,在數(shù)據(jù)包突發(fā)期間,CPU占用率過高,來不及處理過多的數(shù)據(jù)包,從而造成丟包。在 Rtl8139End.c中,驅(qū)動(dòng)的數(shù)據(jù)包緩沖和協(xié)議棧的內(nèi)存池是完全分開的,數(shù)據(jù)包接收和發(fā)送都有1次拷貝過程,而高性能以太網(wǎng)控制器一般只在發(fā)送時(shí)需要拷貝1次,這樣每收發(fā)一個(gè)包,CPU需要多拷貝1次,這是導(dǎo)致RTL8139性能不高的重要原因,但這種包處理方式是由硬件決定的,驅(qū)動(dòng)程序不能改變。事實(shí)上,在突發(fā)包很多的情況下,以太網(wǎng)控制器丟包是允許的,但突發(fā)時(shí)間過后,應(yīng)恢復(fù)正常的收發(fā)包流程。但在前文介紹的硬件平臺(tái)上運(yùn)行 Rtl8139End.c,在PC機(jī)上用Sniffer以連續(xù)方式給RTL8139發(fā)數(shù)據(jù)包,測(cè)試時(shí)間為數(shù)十秒,停止發(fā)包后,在PC機(jī)上用ping命令測(cè)試RTL8139能否正?;匕?,結(jié)果不能ping通,表明RTL8139的收發(fā)包流程因突發(fā)包太多而中斷,且不能恢復(fù)。

分析Rtl8139End.c程序,其發(fā)送數(shù)據(jù)包流程如圖2所示。


 
RTL8139有4個(gè)發(fā)送描述符,有各自的發(fā)送狀態(tài)寄存器TSD0~TSD3和發(fā)送起始地址寄存器TSAD0~TSAD3,每個(gè)發(fā)送描述符可發(fā)送1個(gè)數(shù)據(jù)包。在函數(shù)Rtl8139Send()中申請(qǐng)1個(gè)發(fā)送數(shù)據(jù)包緩沖區(qū),將協(xié)議棧傳下來的數(shù)據(jù)包拷貝進(jìn)該緩沖區(qū),然后將該緩沖區(qū)的首地址寫入發(fā)送起始地址寄存器,最后填寫發(fā)送狀態(tài)寄存器,并將其OWN位置0,表示將該緩沖區(qū)交給RTL8139的發(fā)送DMA管理,啟動(dòng)發(fā)送操作。發(fā)送完成后 RTL8139產(chǎn)生中斷,進(jìn)人中斷服務(wù)程序Rtl8139Int(),調(diào)用Rtl8139HandleSendInt(),在該函數(shù)中讀取發(fā)送狀態(tài)寄存器。如果OWN位為1,則表示發(fā)送DMA操作完成,釋放相應(yīng)的發(fā)送緩沖;否則表示發(fā)送DMA操作未完成,該發(fā)送緩沖仍由RTL8139硬件所有,下次進(jìn)入發(fā)送中斷再重新查看OWN位。如此循環(huán)往復(fù),直到OWN位變?yōu)?,才能釋放相應(yīng)的發(fā)送緩沖,其占用的發(fā)送描述符變?yōu)榭捎谩?/p>

以上過程可歸結(jié)為兩點(diǎn):

  a)在Rtl8139Send()中申請(qǐng)1個(gè)數(shù)據(jù)包緩沖區(qū),占用1個(gè)發(fā)送描述符;

  b)在Rtl8139Int()中釋放相應(yīng)的數(shù)據(jù)包緩沖區(qū)和發(fā)送描述符。

從以上分析可以看出,只要發(fā)包的這兩個(gè)環(huán)節(jié)不出問題,發(fā)包流程就不會(huì)中斷,另外,在Rtl8139HandleSendInt()中,不是僅僅釋放1個(gè)包緩沖和描述符,而是將所有啟動(dòng)過發(fā)包操作、發(fā)送狀態(tài)寄存器的OWN位變?yōu)?的描述符和相應(yīng)包緩沖都釋放掉。這樣可增強(qiáng)程序的穩(wěn)定性,在有突發(fā)包的情況下,CPU可能來不及響應(yīng)中斷,即造成中斷丟失,但只要還有1個(gè)描述符可用,發(fā)包完成后能進(jìn)中斷,就可以把以前占用的緩沖和描述符全部釋放掉。如果突發(fā)包太多,CPU連續(xù)4個(gè)發(fā)包中斷未響應(yīng),發(fā)送描述符全被占用,下次進(jìn)入Rtl8139Send()將無發(fā)送描述符可用,也就不會(huì)再有發(fā)包中斷, Rtl8139HandleSendInt()不會(huì)被調(diào)用,發(fā)送描述符無法釋放,發(fā)包流程就此中斷,不能恢復(fù),這就是上述RTL8139不能ping通的原因。

3 解決辦法

根據(jù)以上分析,只有將被占用的發(fā)送描述符和發(fā)送緩沖釋放,發(fā)包流程才能恢復(fù),這只要調(diào)用一次Rtl8139HandleSendInt()就能實(shí)現(xiàn)。MPC8241片內(nèi)集成有4個(gè)定時(shí)器 (TimerO~Timer3),可以使用其中的TimerO來產(chǎn)生硬件定時(shí)中斷。在中斷服務(wù)程序中,以Rtl8139HandleSendInt函數(shù)指針作為入口參數(shù)調(diào)用netJobAdd(),這樣就可以定時(shí)執(zhí)行Rtl8139HandleSendInt(),及時(shí)釋放被占用的發(fā)送描述符。這需要在 Rtl8139Start()中添加如下代碼:

其中:(pDrvCtrl->TxRingFree<0)表示沒有空閑發(fā)送描述符。

修改后的驅(qū)動(dòng)再用前文介紹的方法測(cè)試,Sniffer發(fā)包停止后,RTL8139能恢復(fù)。改用Smartbit測(cè)試,以半雙工、10 Mbit/s線速給RTL8139發(fā)包,發(fā)包停止后,RTL8139仍能恢復(fù)。用Smartbit以1 200pps勻速率給RTL8139發(fā)包,包長(zhǎng)240字節(jié)。測(cè)試結(jié)果為:RTL8139不丟包,CPU占用率45%。

4 結(jié)束語

采用本文介紹的方法改進(jìn)RTL8139驅(qū)動(dòng),能有效地增強(qiáng)程序的魯棒性,又不會(huì)降低效率,在交換機(jī)終端上長(zhǎng)時(shí)間運(yùn)行穩(wěn)定,性能完全滿足要求。
 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉