基於TMS320F2812的快速乙太網路通訊系統平台
| [日期:2008-7-22] |
來源:今日電子/21IC 作者:湖南工學院 易 傑 |
[字型:大 中 小] |
引言
隨著Internet應用的日益普及,資訊共用程度的不斷提高。嵌入式裝置的數字化和網路化已經成為必然趨勢,目前市場上的主流嵌入式作業系統都包含了TCP/IP網路通訊協定棧。這些商品化的TCP/IP協議棧運行可靠、效能也非常好,但是價格較高,降低了市場競爭力。因此,開發自主智慧財產權的TCP/IP協議棧的要求變的日益迫切而有意義。
本文的研究目標是建立一個DSP系統的網路通訊平台,實現DSP系統與網路中其他通訊裝置的高速資料轉送。雖然選擇了TI公司的TMS320F2812 DSP,但是本文提出的方案,具有很大程度的通用性,對其他系列的DSP或CPU系統也有一定的參考價值。
TCP/IP協議棧的體繫結構
乙太網路最典型的應用形式是Ethernet+TCP/IP,即在由乙太網路構建的底層傳輸網路上採用已成為通用標準的網路傳輸協議TCP/IP進行資料通訊,這是當今最流行,應用最廣泛的乙太網路通訊方式。
國際標準組織(ISO)制定了開放式系統互連(OSI)參考模型,將通訊會話需要的各個過程劃分為7個相對獨立的功能層次,與OSI參考模型不同,TCP/IP模型側重於互連裝置之間的資料轉送,而不是嚴格的層次劃分。
通常,OSI參考模型在從理論上解釋互連網通訊機制時比較適合,而TCP/IP模型則在具體的軟體實現中更為適合。
系統硬體設計
1 系統的總體結構
本文的乙太網路通訊系統大致分為5個層次,由下向上分別為:硬體層、裝置驅動層、作業系統、網路模組和使用者代碼。系統硬體電路,包括DSP系統和乙太網路控制晶片Ax88796的介面電路,是系統的物理基礎。快速乙太網路驅動程式處於硬體抽象層,本身雖為軟體,但與硬體結合緊密,為作業系統提供了訪問快速乙太網路控制晶片Ax88796或改變其工作行為的系統調用。μC/OS-Ⅱ作業系統處於系統核心,為使用者代碼統一管理系統軟硬體資源,提供使用者所需的底層服務。TCP/IP協議棧軟體為μC/OS-Ⅱ作業系統擴充了網路通訊能力。使用者代碼處理特定的應用程式細節,可以直接使用TCP/IP協議模組提供的API函數,開發基於乙太網路的通訊項目。
2 系統硬體框圖
系統硬體包括TMS320F2812與IS61LV51216儲存空間晶片的介面電路、TMS320F2812與快速乙太網路控制晶片Ax88796的介面電路。系統的軟體代碼在調試階段存放在擴充的RAM中,離線運行後,用於儲存傳輸的映像資料,故擴充了512KB。使用了ISSI公司產生的IS61LV51216儲存空間晶片。乙太網路控制晶片Ax88796通過ISA介面與DSP相連,通過網路隔離器16ST8515後,接入乙太網路絡中。電源監控電路在系統電源電壓出現波動時,給DSP系統提供複位訊號,使系統程式重新初始化並運行,避免出現不可預知的錯誤。
圖1 硬體框圖
3 DSP系統硬體設計
①系統電源設計
為了降低晶片功耗,TMS320F2812採用1.8V(1.9V@150MHz)核心電壓,但GPIO、FLASH等模組採用3.3V供電。本課題選用TI公司的TPS767D301電源晶片。該晶片輸出兩路電壓,一路3.3V,另一路1.5~5.5V可調,支援1A電流輸出。系統中DSP晶片正常工作下消耗電流230mA,乙太網路介面晶片最大消耗電流120mA,RAM最大消耗電流180mA,系統總功耗為530mA,故TPS767D301能滿足系統要求。
②系統時鐘設計
系統的時鐘電路有兩種方案可選擇,一種是使用外部時鐘源,即有源晶振。另一種是使用DSP內部的振蕩驅動電路,外接一個晶體和兩個電容。有源晶振的特點是不需要晶片內部振蕩器,加上額定的電壓就能輸出規則的方波,缺點是輸出波形只能是固定的兩個電壓值:低電平(0V)和高電平(輸入供電電壓),另外器件成本高。外接晶體的特點是使用晶片內部振蕩電路,輸出的波形為正弦波,波形幅度由控制器決定,不存在電壓匹配的問題。
TMS320F2812的I/O引腳一般為3.3V,但時鐘輸入腳卻是個例外,只能承受1.8V/1.9V的輸入電壓,而1.8V/1.9V的有源晶振市場上罕有出售,故採用無源晶振。
③複位電路設計
系統中有兩個晶片需要複位訊號:DSP晶片和乙太網路控制晶片Ax88796。但二者對複位訊號的要求各不相同,DSP是低電平複位,而Ax88796是高電平複位,故採用TI公司的專用複位晶片TPS3307。該晶片具有上電複位、手動複位和電源監控三項功能。電路2所示。
上電複位電路保證系統在上電200ms後自動產生一個複位訊號,使DSP進入正常的程式入口,Ax88796初始化內部寄存器。手動複位的功能是當系統出現程式跑飛或需要系統重新初始化並運行時,按下複位按鍵產生複位訊號,使DSP進入正常的程式入口。
④系統RAM擴充
TMS320F2812內部已經整合了18KB的RAM,對於一般的應用來說,已經無須再擴充外部RAM。但是片內RAM能以150MIPS的速度進行訪問,在對運算速度要求很高的處理常式中,通常將經常訪問的程式段放到內部RAM中運行,這樣能大大提高運行速度,因此片內RAM顯得格外寶貴。而且本系統是一個網路通訊系統,將來會用於進行大量映像的網路傳輸,因而也要求外括RAM用於存放影像檔。
圖2 複位電路
RAM選用ISSI公司的IS61LV51216,儲存容量為512K×16位,3.3V的供電電壓,訪問速度有8ns、10ns、12ns、15ns可選擇。當CPU運行在150MHz的時候,地址和資料的最小有效時間為3個刻度,即20ns,所以該儲存空間介面不用考慮時序設計的問題。
4 快速乙太網路硬體介面設計
Ax88796內部整合有10/100Mb/s自適應的物理層收發器和8K×16位的SRAM,支援MCS-51系列、80186系列、ISA以及MC68K系列等多種CPU匯流排類型。Ax88796提供基於IEEE802.3/IEEE 802.3u區域網路標準的10Mb/s和100Mb/s乙太網路控制功能,並採用IEEE 802.3u相容的媒質無關介面MII(Media Independent Interface)。此外,Ax88796還提供可選的標準列印介面,用於串連列印裝置或作通用I/O連接埠。
①Ax88796的ISA介面設計
Ax88796有兩個輸入引腳CPU[1:0]設定不同的工作模式,用於和不同的CPU匯流排相連。在與TMS320F2812串連時,將CPU[1:0]都拉低,設定為ISA匯流排介面。Ax88796的地址匯流排SA與資料匯流排SD分別與TMS320F2812的地址/資料匯流排相連,TMS320F2812通過I/O讀寫Ax88796的寄存器來控制其狀態,通過遠程DMA FIFOs與Ax88796的內部SRAM進行資料交換。Ax88796的基地址預設值200H,所以基位址範圍為200H~21FH。Ax88796的ISA介面有10根地址線,SA[9:0]。
②Ax88796電源設計
Ax88796具有多種電壓類型:VDD、VDDA、VDDPD和VDDO,分別為晶片內部的數字電路、類比電路、相位偵測模組、收發器驅動模組提供電源。雖然同為3.3V電壓,但為了防止各個模組通過電源線發生串繞,要求各電源獨立供電,於是設計了電源隔離、濾波電路,將系統的3.3V供電電壓,通過LC濾波分為Ax88796所需的四路電壓。
系統軟體設計
1 系統軟體結構
除應用程式層使用者程式外,系統軟體可看做作業系統μC/OS-Ⅱ的功能擴充:Ax88796驅動程式屏蔽底層硬體,為作業系統擴充了訪問網路裝置的能力;TCP/IP協議軟體為作業系統擴充了網路通訊能力。
TCP/IP通常被劃分為一個四層協議系統,每一層負責不同的功能。
● 介面層:Ax88796的驅動程式,直接存取Ax88796硬體裝置,控制Ax88796的行為模式。
● 網路層:處理分組在網路中的活動,例如分組的選路。
● 運輸層:為兩台主機上的應用程式提供端到端的通訊。
● 應用程式層:負責處理特定的應用程式細節。
在DSP上實現的100M快速乙太網路通訊,關鍵要考慮兩個方面:
● 如何控制硬體裝置將資料發送到乙太網路中(或者將乙太網路中的資料接收到DSP內)。
● 如何產生待發送的資料(或者如何解釋接收到的資料)。
二者分別由網路裝置驅動程式和TCP/IP協議軟體解決。
本系統的軟體部分包含3個方面:快速乙太網路驅動程式、μC/OS-Ⅱ作業系統和TCP/IP協議棧軟體。
2 快速乙太網路驅動程式開發
①Ax88796的寄存器
Ax88796的寄存器映射在從基地址200H到21FH地址空間內,共32個地址空間,因此Ax88796採取了分頁機制,各寄存器分別存放在不同寄存器頁內。
對Ax88796的寄存器進行正確的設定是系統啟動並執行基礎,下面是幾個重要寄存器:
● CR(命令寄存器):用於選擇寄存器頁,啟動和停止網卡。
● ISR(中斷狀態寄存器):反映Ax88796目前狀態,CPU通過讀取它判斷引起中斷的原因。
● DCR(資料控制寄存器):位元組順序、DMA位元組/字傳輸模式選擇。
● PSTART、PSTOP、BNRY、CPR:這四個寄存器與接收緩衝區有關。PSTART設定起始頁,PSTOP設定停止頁,這兩個寄存器設定了接收緩衝區的首尾。BNRY指示最後一個被取走的緩衝區頁,CPR指示第一個用於接收的緩衝區頁。
● TPSR、TBCR0、TBCR1:這三個寄存器與發送緩衝區有關。TPSR設定發送緩衝區的起始頁,TBCR0、TBCR1設定發送位元組數。
● RSAR0、RSAR1、RBCR0、RBCR1:Ax88796通過遠程DMA和系統交換資料,前兩個寄存器設定遠程DMA的起始地址,後兩個設定遠程DMA資料位元組數。
②接收過程
接收資料幀的過程涉及到的寄存器主要有兩個:CPR和BNRY。CPR寄存器指向新接收到的資料幀要存放的起始頁地址,作為本地DMA的寫指標;BNRY寄存器指向還未讀取的資料幀的起始頁地址,作為遠程DMA的讀指標。當CPR追上BNRY時,表示接收緩衝區已滿,後續的資料幀將會被丟棄;當BNRY追上CPR時,表示接收緩衝區已空。
③發送過程
圖3 發送過程
發送過程比較簡單,發送過程的流程3所示。
3 嵌入式多任務作業系統μC/OS-Ⅱ的移植
所謂移植,就是使μC/OS-Ⅱ核心能在某個微處理器或微控制器上運行。為了方便移植,大部分的μC/OS-Ⅱ代碼是用C語言寫的;但仍需要用C和組合語言寫一些與處理器相關的代碼,這是因為在讀寫處理器寄存器時只能通過組合語言來實現。因此要使 μC/OS-Ⅱ正常運行,處理器必須滿足以下要求:
● 處理器支援中斷,並且能產生定時中斷(通常在10~1kHz之間)。
● 使用C語言可以開啟和關閉處理器的中斷。
● 處理器支援能夠容納一定量資料的硬體堆棧。
● 處理器有將堆棧指標和其他寄存器讀出和儲存到堆棧或記憶體中的指令。
μC/OS-Ⅱ的移植工作主要包括兩個內容:
● OS_CPU_C.C檔案中的一個C語言函數
● OS_CPU_A.ASM檔案中的四個組合語言函數
由於篇幅有限,這裡就不詳細說明這兩個檔案的具體編寫了。
4 TCP/IP協議棧的系統結構
①網路介面層模組
網路介面層模組包含Ax88796裝置驅動、緩衝區管理和介面調度三方面。定義了網路介面抽象模型,屏蔽了網路物理細節,使上層軟體能使用相同的資料結構作用於不同的物理網路。
②ARP模組
ARP協議將上層的協議地址(IP地址)與底層的硬體地址進行映射,從而形成了只能使用IP地址的上層軟體和只能使用物理地址的下層裝置驅動程式之間的分界線。ARP模組處理來自於網路的ARP資料分組,更新和維護ARP快取,並為發送資料報提供相應的硬體地址綁定。
③ICMP模組
ICMP協議內容比較豐富,最常用的就是PC上ping程式所實現的回送請求和回送應答功能。本課題中,主要就是實現了回送應答功能,這樣使用者可以使用PC探測DSP是否網路暢通,其他功能目前暫時預留,待將來升級。
④IP模組
IP模組是整個協議棧的中心環節,它接收來自網路的輸入資料報,同時也接收來自上層協議的輸出資料報,IP為資料報選擇路由,或者將其發往一個網路介面,或者將其交給原生上層協議軟體(迴環)。
⑤TCP模組
TCP為不可靠的IP串連提供可靠的、具有流量控制的、端到端的資料轉送。TCP模組中包含三個關鍵過程:資料輸入、資料輸出和逾時重發。自適應重發機制是TCP的核心組成部分,自適應的修改串連的平均往返時間。
⑥UDP模組
UDP協議提供不需連線的通訊,相對於TCP協議,它非常簡單。雖然UDP不能保證可靠性,但是效率非常高。
⑦Socket介面模組
Socket模組主要是為了封裝底層協議軟體,使得使用者在DSP上開發網路程式更加方便。
系統測試舉例
Internet Explorer(IE)是Windows作業系統內嵌的網頁瀏覽器。Web(網頁)是這個資訊共用社會使用最廣泛的資訊組織形式。通過往DSP軟體中添加Web服務功能,可以使本系統能夠更好的融入Internet之中,使用者可以通過IE瀏覽器直接對本系統進行設定和查看系統的反饋資料。開啟IE瀏覽器,在地址欄鍵入“192.168.8.66”,即可訪問預存在DSP系統中的遠端資料採集頁面。
結束語
測試表明本系統完全滿足了網路通訊系統所具備的各項功能,它將DSP的強大運算處理能力和Internet聯絡起來,使得DSP系統不再是“資訊孤島”,能夠方便的與網路上的其他裝置進行資訊共用,進一步擴充DSP的應用前景。