<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 優(yōu)化以太網(wǎng)控制器滿(mǎn)足嵌入式聯(lián)網(wǎng)需求

優(yōu)化以太網(wǎng)控制器滿(mǎn)足嵌入式聯(lián)網(wǎng)需求

作者: 時(shí)間:2017-06-06 來(lái)源:網(wǎng)絡(luò ) 收藏

目前支持消費電子和其它市場(chǎng)的嵌入式系統需要更高級的網(wǎng)絡(luò )連接能力。非PCI接口的以太網(wǎng)控制器為系統設計師的嵌入式連接方案提供了性能和架構選擇的最佳結合。因此,非PCI接口的以太網(wǎng)控制器成為這些嵌入式設計中外設聯(lián)網(wǎng)的標準解決方案。

本文引用地址:http://dyxdggzs.com/article/201706/349676.htm

一直以來(lái),設計師在對非PCI總線(xiàn)的嵌入式系統增加以太網(wǎng)連接功能的時(shí)候面臨多種挑戰。這些常見(jiàn)的挑戰包括:為現有的以太網(wǎng)控制器調整非標準的總線(xiàn)接口,滿(mǎn)足TCP/IP數據包處理所要求的CPU帶寬,使得由于外設和存儲器接口結合帶來(lái)的固有系統性能下降最小化。

為了更好地克服這些挑戰,設計師必須尋求對傳統的以太網(wǎng)控制器做出一些改變。其目的是在使用現有的嵌入式CPU的情況下得到一種能提高性能的嵌入式系統解決方案。下面讓我們了解如何實(shí)現這個(gè)目標。

控制器設計基礎

圖1介紹了典型的嵌入式系統,其中采用了無(wú)PCI接口的嵌入式CPU和相關(guān)的存儲器(SRAM、SDRAM和閃存)以及通過(guò)本地總線(xiàn)連接的外設(視頻、USB和IDE控制器)。嵌入式CPU和操作系統的例子包括英特爾的XScale、瑞薩的SHx、松下及ST的芯片,這些芯片運行Linux、Windows CE、VxWorks和其它實(shí)時(shí)操作系統(RTOS)。

從操作系統或軟件的角度來(lái)理解數據如何從嵌入式系統應用程序到以太網(wǎng)傳輸非常重要。圖2顯示了一種嵌入式系統軟件結構的實(shí)現。軟件結構分成應用程序、包含TCP/IP協(xié)議棧的操作系統和以太網(wǎng)控制器驅動(dòng)程序。非PCI接口的以太網(wǎng)控制器通過(guò)本地總線(xiàn)與其軟件驅動(dòng)程序連接。

當應用程序通過(guò)網(wǎng)絡(luò )發(fā)送數據或控制信息時(shí),它與操作系統一起產(chǎn)生一個(gè)指向不同緩沖區的軟件數據結構鏈表,以避免數據復制。此外,緩沖區還保存要放入以太網(wǎng)數據包的數據。每塊緩沖區代表一個(gè)以太網(wǎng)數據包的一個(gè)不同的部分,由以太網(wǎng)控制器驅動(dòng)程序將這些不同的部分組合起來(lái)進(jìn)行傳輸。數據緩沖區不是相互鄰近的,這意味著(zhù)每塊緩沖區的頭和尾不在相同的線(xiàn)性地址空間內。

如圖2所示,操作系統將“Tx Data Ptr”變量或軟件指針傳遞到以太網(wǎng)控制器軟件驅動(dòng)程序。“Tx Data Ptr”具有描述符1的地址,描述符1指向描述符2,以此類(lèi)推。這些描述符都指向數據緩沖區。然后,以太網(wǎng)控制器驅動(dòng)程序通過(guò)本地總線(xiàn)將每一塊數據緩沖區轉移到以太網(wǎng)控制器。

接收操作按相反的順序執行。這個(gè)過(guò)程需要大量軟件參與,如果處理不當可能降低性能。同樣重要的是不同的數據緩沖區可能沒(méi)有在存儲器中自然地排列,這對于整體的網(wǎng)絡(luò )系統性能至關(guān)重要。

有限的選擇

當前,采用以太網(wǎng)連接的消費電子設備只限于下面的三種選擇:

1. 外部PCI以太網(wǎng)控制器——大多數嵌入式處理器不支持PCI總線(xiàn),因此選擇一個(gè)PCI以太網(wǎng)控制器通常就不可行。如表所示,根據市場(chǎng)研究表明,市場(chǎng)上8位或16位的CPU都不支持PCI,并且只有16%的32位CPU支持PCI,而大多數的嵌入式處理器支持一種本地/存儲總線(xiàn)。嵌入式CPU制造商沒(méi)有“擁抱”PCI是因為幾方面的原因。其一是成本。用來(lái)實(shí)現PCI的額外I/O管腳和電路會(huì )增加嵌入式處理器的成本。嵌入式CPU需要一種存儲器總線(xiàn),而在很多情況下,這個(gè)總線(xiàn)是與其他外設共享的。因此,增加另外一種寬的并行總線(xiàn)來(lái)支持PCI外圍設備并不現實(shí)。除此之外,通常在這些嵌入式系統中并不需要像即插即用這樣的先進(jìn)PCI功能。

2. 集成以太網(wǎng)。表顯示了內部集成了以太網(wǎng)控制器的嵌入式CPU所占百分比。很明顯,大多數嵌入式處理器并不支持集成的以太網(wǎng)控制器。

3. 外部的非PCI接口以太網(wǎng)控制器如圖1所示,大多數嵌入式處理器支持一種非PCI的本地總線(xiàn),而且不包含對內部以太網(wǎng)控制器的支持。



圖1:支持非PCI以太網(wǎng)連接的典型嵌入式系統



圖2:通過(guò)以太網(wǎng)發(fā)送應用數據

主要設計挑戰

在為非PCI嵌入式CPU增加高性能以太網(wǎng)連接功能的挑戰通常為那些傳統上非PCI接口的以太網(wǎng)控制器所忽略。然而,通過(guò)考慮一定的架構改進(jìn),非PCI以太網(wǎng)控制器可以提供更高的性能,同時(shí)還解決成本和可靠性的問(wèn)題。三個(gè)主要的挑戰是緩沖區排列、總線(xiàn)架構以及流控制。下面將仔細地探討這些問(wèn)題。

1. 緩沖區排列

當以太網(wǎng)的幀數據存在于嵌入式CPU的系統存儲器中的時(shí)候,就產(chǎn)生了以太網(wǎng)幀數據緩沖區的排列問(wèn)題。以太網(wǎng)幀數據會(huì )被分割開(kāi)來(lái)并分散到存儲器的多個(gè)緩沖區中。每個(gè)緩沖區片段可以在幀上的任一字節排列上開(kāi)始和結束,并且可能是任意長(cháng)度。

未排列的數據對于傳統的以太網(wǎng)控制器來(lái)說(shuō)并不理想,因為傳統的以太網(wǎng)控制器需要將發(fā)送數據以32位排列的形式提交給控制器。因為數據可能以未排列整齊的片斷形式到達驅動(dòng)程序,驅動(dòng)程序必須用CPU來(lái)收集分散的片斷,并在寫(xiě)入以太網(wǎng)控制器之前對數據進(jìn)行重新排列。這個(gè)過(guò)程的效率很低,因為必須從系統的存儲器中讀取數據、重新排列并寫(xiě)入到以太網(wǎng)控制器。相比從系統存儲器中讀取數據并直接寫(xiě)入到以太網(wǎng)控制器,這個(gè)過(guò)程至少要三步。

最糟糕的負面影響是與直接存儲器訪(fǎng)問(wèn)(DMA)控制器不兼容。傳統上,在嵌入式CPU中的DMA控制器不能執行數據的重新排列,這使得它們不能在系統中移動(dòng)以太網(wǎng)數據。數據移動(dòng)和重新排列的任務(wù)就落到了嵌入式CPU上,其所占用的MIPS本來(lái)可以在其它應用中得到更好的利用。

理想的以太網(wǎng)控制器會(huì )自動(dòng)地處理數據的重新排列。數據會(huì )以自然排列的形式傳遞,以太網(wǎng)控制器將了解包的數據邊界,然后以太網(wǎng)控制器在數據發(fā)送之前在內部透明地對數據進(jìn)行重新排列。這種透明的重新排列通過(guò)緩沖區復制使嵌入式CPU從重新排列數據的任務(wù)中解放出來(lái)?,F在系統就可以選擇使用簡(jiǎn)單的DMA控制器來(lái)移動(dòng)數據了。



表1:總線(xiàn)類(lèi)型和對集成以太網(wǎng)控制器的支持

2. 總線(xiàn)架構

嵌入式CPU為了發(fā)送以太網(wǎng)數據包,需要將數據寫(xiě)入到以太網(wǎng)控制器中的緩存內。反之,對于接收以太網(wǎng)數據包,嵌入式CPU必須從以太網(wǎng)控制器的內部緩存中讀出收到的數據。嵌入式CPU利用編程I/O(PIO)周期或DMA周期移動(dòng)數據。

不管是使用PIO或DMA進(jìn)行發(fā)送或者接收操作,數據都是通過(guò)嵌入式CPU的外部本地總線(xiàn)傳送的。每次操作都需要花費時(shí)間,并且花費的時(shí)間越多,操作對系統整體性能影響就越大。關(guān)鍵問(wèn)題是要使訪(fǎng)問(wèn)以太網(wǎng)控制器時(shí)間很短,以提高整個(gè)系統的速度。傳統上,低性能的以太網(wǎng)控制器在讀和寫(xiě)訪(fǎng)問(wèn)期間會(huì )迫使CPU處于等待狀態(tài),這等效于更長(cháng)的讀和寫(xiě)周期。在本地總線(xiàn)上增加更多的等待狀態(tài)意味著(zhù)CPU執行其它任務(wù)的時(shí)間更少,以及用于內部和外部設備的帶寬更少。

其它一些不太明顯的機制會(huì )導致額外的等待狀態(tài)。例如,很多的傳統以太網(wǎng)控制器需要很長(cháng)的數據和地址建立時(shí)間。這可能需要額外的連接邏輯以及鎖存器。在這種系統中,可能需要減少系統中每個(gè)器件的總線(xiàn)周期時(shí)間-包括存儲器。

某些嵌入式CPU采用其它機制來(lái)減少外部本地總線(xiàn)上的處理時(shí)間。這種機制的一個(gè)實(shí)例是突發(fā)模式讀處理。這種操作模式通常與DMA控制器有關(guān),可以降低總線(xiàn)周期占用。在突發(fā)處理期間,控制信號被維持,在每次讀操作時(shí)地址都改變。通常與PIO讀相關(guān)的讀周期之間的解除維持時(shí)間被消除。傳統的以太網(wǎng)控制器不支持突發(fā)模式讀。大多數嵌入式處理器本身支持SRAM類(lèi)型的本地總線(xiàn)接口。因此優(yōu)化以太網(wǎng)控制器以模擬SRAM存儲器接口很有意義。這樣做優(yōu)勢很明顯。這種以太網(wǎng)控制器不僅為大多數嵌入式處理器提供一種無(wú)縫的接口,而且所有前面已經(jīng)討論過(guò)的特性都可以使用,比如快速的整體總線(xiàn)周期時(shí)間、最小的地址和數據建立時(shí)間以及支持突發(fā)模式讀取等。

3. 流控制

另外一種增加非PCI接口以太網(wǎng)控制器性能的方式是優(yōu)化以太網(wǎng)流量情況。這可以通過(guò)支持以太網(wǎng)流控制實(shí)現。

以太網(wǎng)流控制容許以太網(wǎng)接收器減緩其對應的發(fā)送器的速度,這能夠防止接收器緩存溢出。中斷延遲或其它原因會(huì )導致嵌入式CPU無(wú)法跟上以太網(wǎng)數據接收的速度,這會(huì )導致接收緩存溢出。一旦出現溢出,接收到的數據便會(huì )丟失,從而導致嚴重的系統性能下降。

很多以太網(wǎng)設備使用一種“暫??刂?rdquo;幀支持全雙工流控制。暫停操作在規定的時(shí)間段內禁止發(fā)送數據幀。暫停操作由由一個(gè)暫??刂茙M成,這個(gè)幀包含全局分配的多播地址、暫停操作碼以及指出數據禁止傳輸的持續時(shí)間的參數組成。當接收到包含預留的多播地址和暫停操作碼的幀時(shí),以太網(wǎng)設備就禁止在指定的時(shí)間段內傳輸數據。在半雙工模式,反壓(backpressure)用于流控制。以太網(wǎng)控制器通過(guò)“堵塞”接收數據和故意產(chǎn)生沖突來(lái)調節數據接收。在檢測到?jīng)_突后,遠端站點(diǎn)將停止發(fā)送數據。

理想的以太網(wǎng)控制器需要能檢測其內部緩存空間,然后在沒(méi)有處理器的干預下自動(dòng)地發(fā)送一個(gè)暫停幀,或者發(fā)生堵塞。而且,設備應該能發(fā)送一個(gè)“零時(shí)間”的暫停幀,以在內部緩存有可用空間時(shí)重新發(fā)起數據傳送。自動(dòng)流控制通過(guò)減少處理器中斷次數和開(kāi)銷(xiāo)提高了系統的整體性能。恰當地實(shí)現流控制還能避免網(wǎng)絡(luò )兩端的接收緩存溢出。

本文小結

消費電子設備、娛樂(lè )音視頻設備以及傳統的家庭網(wǎng)絡(luò )設備(例如PC和打印機)正在向一個(gè)網(wǎng)絡(luò )融合,很明顯以太網(wǎng)成為家庭中實(shí)現連接的網(wǎng)絡(luò )選擇。在很多情況下,關(guān)于可以選擇哪種嵌入式CPU用于消費電子或音視頻設計,系統設計者的選擇有限。因此,在不換用高成本的CPU方案的條件下,實(shí)現期望的性能水平的唯一辦法是優(yōu)化現有的非PCI接口以太網(wǎng)控制器。通過(guò)優(yōu)化非PCI接口以太網(wǎng)控制器的架構,可以提高要求苛刻的應用的整體系統性能。

作者:Charlie Forni

工程總監,charles.forni@smsc.com

Paul Brant

高級首席系統架構師,paul.brant@smsc.com

SMSC公司



評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>