《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 嵌入式技術(shù) > 業(yè)界動(dòng)態(tài) > 基于TMS320VC5409的嵌入式WEB數(shù)據(jù)服務(wù)器的實(shí)現(xiàn)

基于TMS320VC5409的嵌入式WEB數(shù)據(jù)服務(wù)器的實(shí)現(xiàn)

2008-07-07
作者:高 翔1, 李 凌2,, 劉廣存3

??? 摘 要: 設(shè)計(jì)開發(fā)了一種適用于對(duì)數(shù)據(jù)傳輸率有一定要求的WEB數(shù)據(jù)服務(wù)器系統(tǒng),。系統(tǒng)以TMS320VC5409 DSP為主處理器,通過與RTL8019AS芯片連接實(shí)現(xiàn)了以太" title="以太">以太網(wǎng)接口,。完成了lwIP TCP/IP" title="TCP/IP">TCP/IP協(xié)議棧" title="協(xié)議棧">協(xié)議棧在TMS320VC5409的移植,,并在應(yīng)用層" title="應(yīng)用層">應(yīng)用層實(shí)現(xiàn)了一個(gè)嵌入式WEB數(shù)據(jù)服務(wù)器。
????關(guān)鍵詞: 嵌入式WEB數(shù)據(jù)服務(wù)器? 數(shù)據(jù)采集? TMS320VC5409? lwIP? RTL8019AS

?

??? 在較高速的嵌入式應(yīng)用場(chǎng)合,,普通單片機(jī)[1]的I/O" title="I/O">I/O接口速度以及協(xié)議處理速度經(jīng)常成為網(wǎng)絡(luò)數(shù)據(jù)傳輸?shù)钠款i,,因而并不是一種合適的設(shè)計(jì)選擇。這些系統(tǒng)中的主處理器通常都會(huì)有較快的處理和接口速度,,將這些快速接口與以太網(wǎng)控制芯片進(jìn)行連接可以實(shí)現(xiàn)滿足一定數(shù)據(jù)傳輸速率要求的網(wǎng)絡(luò)應(yīng)用,。本文基于TMS320VC5409數(shù)字信號(hào)處理器[2]和RTL8019AS以太網(wǎng)控制器[3]設(shè)計(jì)了一種適用于傳輸傳感器采集到的大量數(shù)據(jù)及處理后信息的快速以太網(wǎng)接口,并在此基礎(chǔ)上通過移植與應(yīng)用lwIP TCP/IP協(xié)議棧[4]實(shí)現(xiàn)了嵌入式WEB數(shù)據(jù)服務(wù)器,。
1 以太網(wǎng)控制器RTL8019AS[3]
??? 目前以太網(wǎng)技術(shù)在計(jì)算機(jī)系統(tǒng)中已經(jīng)發(fā)展到千兆位的帶寬速度,,但多數(shù)以太網(wǎng)接口芯片都是通過PCI總線與CPU連接。而在嵌入式系統(tǒng)中,,除非系統(tǒng)內(nèi)的高速處理器本身帶有PCI接口,,一般很難直接與這類芯片進(jìn)行連接。從經(jīng)濟(jì)與效率的角度考慮,,嵌入式系統(tǒng)采用相對(duì)慢速的10M以太網(wǎng)接口芯片RTL8019AS是合適的,。RTL8019AS是一種被廣泛應(yīng)用的廉價(jià)以太網(wǎng)接口控制器,與CPU的接口為ISA總線,,可以與各類處理器的外部接口進(jìn)行輕松連接,。芯片的特點(diǎn)如下:
??? (1) 符合Ethernet II和IEEE802.3 10Base5,10Base2,10BaseT,;
??? (2) 全雙工,收發(fā)速率可同時(shí)達(dá)到10Mbps,;
??? (3) 內(nèi)置16KB SRAM,,用于收發(fā)緩存環(huán),降低對(duì)主處理器的速度要求,;
??? (4) 支持8/16位可選寬數(shù)據(jù)總線,,8條中斷申請(qǐng)線以及16個(gè)可選I/O基地址;
??? (5) 支持UTP,、AUI和BNC接口自動(dòng)檢測(cè),,另外集成的10BaseT傳輸接口支持對(duì)接收線對(duì)的自動(dòng)極性校正;
??? (6) 支持4個(gè)診斷LED引腳的可編程輸出,。
2 TMS320VC5409與RTL8019AS的接口
2.1 C5409外部總線接口的特點(diǎn)[2]
?? C5409外部總線接口是其與多種外部器件進(jìn)行連接的主要通路,。通過外部總線上的各種控制信號(hào)引腳,C5409可以實(shí)現(xiàn)將對(duì)外部接口的訪問映射到對(duì)數(shù)據(jù)存儲(chǔ)空間,、程序存儲(chǔ)空間或I/O空間的訪問,。當(dāng)映射到存儲(chǔ)空間時(shí),接口的數(shù)據(jù)訪問率可以達(dá)到CPU的運(yùn)行頻率,,即100MHz,,10ns為一個(gè)訪問周期,而映射到I/O空間時(shí),,最快可以達(dá)到20ns一個(gè)訪問周期,,都足夠滿足訪問ISA總線的速率要求(RTL8019AS的最快ISA I/O寫速度50MHz,讀速度更低),。只要將RTL8019AS映射在I/O空間即可,。在I/O空間訪問時(shí),除了數(shù)據(jù)和地址總線外,,主要的控制信號(hào)是IS#,、R/W#、IOSTRB#信號(hào),。
2.2 C5409與RTL8019AS的連接
??? 具體的接口如圖1所示,。為簡(jiǎn)化系統(tǒng),選擇將RTL8019AS配置在跳線模式,,可以直接在配置引腳處進(jìn)行跳線或使用C5409的I/O引腳來模擬配置電平,,這樣就省去了外接9346配置芯片的必要。需要注意的是用C5409的I/O引腳來模擬配置電平時(shí),,RTL8019AS的復(fù)位信號(hào)RSTDRV需要最后拉低,,因?yàn)榕渲眯盘?hào)的狀態(tài)都是在RSTDRV的下降沿鎖定的。

???????????????????
??? (1) 雖然RTL8019AS的地址總線有20根,但在不使用芯片的Boot ROM和PnP功能時(shí),,只需要其中的SA0~SA9,這樣可以保證RTL8019AS的I/O基地址為200H~300H,,共占用基地址之后的32字節(jié)空間。
??? (2) 數(shù)據(jù)總線是雙向總線,,需要考慮芯片間的電平匹配問題,。C5409是3.3V接口器件而RTL8019AS的接口電平為5V,因此需在總線上加入一個(gè)兼容3.3V和5V電平的驅(qū)動(dòng)芯片,,如LVTH16245A,。另外由RTL8019AS向C5409輸出的中斷和READY信號(hào)也需要通過驅(qū)動(dòng)芯片進(jìn)行電平匹配,。中斷信號(hào)通過非門翻轉(zhuǎn),。
??? (3) 由于C5409沒有分離的讀寫控制信號(hào),需要通過譯碼的方法來與RTL8019AS進(jìn)行連接,。對(duì)DSP的IS#,、R/W#和IOSTRB#信號(hào)譯碼可以獲得RTL8019AS的IORB和IOWB信號(hào),這里需要選擇快速的譯碼芯片以滿足控制信號(hào)的時(shí)序要求,。
??? (4) JP拉高表示工作在跳線模式,,IOCS16B拉高表示配置數(shù)據(jù)總線的寬度為16位,AEN驅(qū)動(dòng)為低,。RTL8019AS的復(fù)位信號(hào)RSTDRV直接以DSP的XF引腳控制,。
2.3 C5409對(duì)RTL8019AS控制與讀寫
??? (1)初始化RTL8019AS。首先在寄存器頁(yè)0,,通過配置三個(gè)指針寄存器BNRY,、PSTART、PSTOP來定義接收緩存區(qū)環(huán),,通過配置寄存器ISR和IMR來清除使能中斷,,然后在寄存器頁(yè)1配置物理地址寄存器PAR0~PAR5、多播地址寄存器MAR0~MAR7(在無需接收多播以太幀RCR寄存器的AM為0,,MARx無需配置)及當(dāng)前頁(yè)指針寄存器CURR,,最后回到寄存器頁(yè)0,初始化數(shù)據(jù)配置寄存器DCR,、接收配置寄存器RCR和發(fā)送配置寄存器TCR并向控制寄存器寫入開始命令,。
??? (2)接收以太幀。芯片在接收到一個(gè)完整的以太幀并校驗(yàn)正確后就會(huì)發(fā)出一個(gè)中斷并置狀態(tài)寄存器ISR和RSR的PRX位,,表示正確接收到一幀以太網(wǎng)數(shù)據(jù),。這時(shí)DSP就可以通過RTL8019AS的遠(yuǎn)程DMA通道從芯片內(nèi)部的接收緩存區(qū)環(huán)中讀出以太數(shù)據(jù)幀。在每個(gè)接收到的以太數(shù)據(jù)幀之前,,RTL8019AS會(huì)向這一幀的接收緩存區(qū)的頭四個(gè)字節(jié)中寫入接收狀態(tài),、下一包(即下一個(gè)以太幀)緩存區(qū)頭指針、當(dāng)前接收幀的字節(jié)數(shù)等信息,。在8位模式時(shí)如圖2所示,。這里字節(jié)長(zhǎng)度包括接收到的4字節(jié)校驗(yàn)數(shù)據(jù),。接收過程受到三個(gè)寄存器的控制:BNRY、RBCR0和RBCR1,,BNRY寄存器指向待接收數(shù)據(jù)幀在緩存區(qū)環(huán)中的首頁(yè)起始地址,,而RBCR0和RBCR1指定了待接收數(shù)據(jù)的長(zhǎng)度。DSP通過初始化這三個(gè)寄存器并向RTL8019AS發(fā)出“Remote read”命令來將數(shù)據(jù)從緩存區(qū)環(huán)讀出,。Remote DMA通道會(huì)自動(dòng)根據(jù)這三個(gè)寄存器來控制讀出的起始地址和長(zhǎng)度,。此外,還可以使用“Send Packet”命令來接收數(shù)據(jù),,這時(shí)BNRY,、RBCR0和RBCR1寄存器是自動(dòng)初始化的。

???????????????????????????????
??? (3)發(fā)送以太幀,。發(fā)送過程受到四個(gè)寄存器的控制:CRDA0,、CRDA1、RBCR0和RBCR1,,其中CRDA0和CRDA1寄存器指向待發(fā)送數(shù)據(jù)幀將要寫入到緩存區(qū)環(huán)中的起始地址,,而RBCR0和RBCR1指定了待發(fā)送數(shù)據(jù)的長(zhǎng)度。DSP通過初始化這幾個(gè)寄存器并向RTL8019AS發(fā)出“Remote write”命令來將數(shù)據(jù)寫到緩存區(qū)環(huán),。Remote DMA通道會(huì)自動(dòng)根據(jù)三個(gè)寄存器來控制寫入的起始地址和長(zhǎng)度,。為了向以太網(wǎng)發(fā)送數(shù)據(jù)幀,DSP只要將控制寄存器CR的TXP置為1即可,,RTL8019AS會(huì)自動(dòng)完成數(shù)據(jù)的校驗(yàn)并發(fā)送,。
3 TCP/IP協(xié)議的實(shí)現(xiàn)
??? 由于嵌入式硬件上處理資源和實(shí)時(shí)性要求的限制,其TCP/IP協(xié)議的實(shí)現(xiàn)與在通常的計(jì)算機(jī)上實(shí)現(xiàn)是有差別的,,要求占用存儲(chǔ)空間盡可能的小,,處理速度足夠快,因此一般都要針對(duì)應(yīng)用的特點(diǎn)對(duì)TCP/IP協(xié)議進(jìn)行必要的裁剪與優(yōu)化,。
??? 較普遍的TCP/IP協(xié)議嵌入式實(shí)現(xiàn)主要有兩種方案,,一是基于各種實(shí)時(shí)操作系統(tǒng)的TCP/IP協(xié)議棧,如VxWorksμC/OS-II,、μClinux,、CMX-RTOS等嵌入式實(shí)時(shí)操作系統(tǒng)都內(nèi)嵌或有可配置的TCP/IP協(xié)議棧實(shí)現(xiàn)模塊;另外一種方式是直接在嵌入式硬件上實(shí)現(xiàn),,如Microchip公司為其PIC單片機(jī)設(shè)計(jì)的TCP/IP協(xié)議棧,。對(duì)一些處理任務(wù)比較簡(jiǎn)單而且實(shí)時(shí)性要求很高的系統(tǒng)來說,直接實(shí)現(xiàn)的方式是較好的選擇,。在本系統(tǒng)中,,根據(jù)具體應(yīng)用的特點(diǎn),選擇對(duì)開源軟件lwIP(a light-weight implementation of the TCP/IP protocol suite)[4]進(jìn)行適當(dāng)?shù)牟眉艉髮⑵湟浦驳紺5409 DSP上,直接實(shí)現(xiàn)了IP,、ARP,、TCP、ICMP協(xié)議和以太網(wǎng)驅(qū)動(dòng),,代碼長(zhǎng)度28KB,,占用數(shù)據(jù)空間9KB。
??? 應(yīng)用層與lwIP協(xié)議棧的接口可以有兩種方式,,一是通過調(diào)用lwIP API函數(shù),;二是直接調(diào)用協(xié)議的實(shí)現(xiàn)模塊,即使用原始API函數(shù),。lwIP API函數(shù)為上層應(yīng)用提供了使用協(xié)議棧常態(tài)的順序的編程模式,,即基于“open-read-write-close”模式,這是一種類BSD socket的API,。而原始API是一種基于回調(diào)(callback)機(jī)制的應(yīng)用程序接口,,調(diào)用這種接口使得應(yīng)用層與lwIP協(xié)議棧聯(lián)系得更緊密,,要求應(yīng)用程序員對(duì)lwIP的底層機(jī)制了解得更透徹,,因此相對(duì)來說編寫程序會(huì)更困難一些,程序代碼也更難理解,。然而好處也顯而易見——處理速度更快,占用內(nèi)存更小,,對(duì)小型系統(tǒng)而言很有意義。
4 嵌入式WEB數(shù)據(jù)服務(wù)器應(yīng)用
??? 本系統(tǒng)通過調(diào)用協(xié)議棧的原始應(yīng)用層接口來實(shí)現(xiàn)嵌入式WEB數(shù)據(jù)服務(wù)器應(yīng)用,,其原理如圖3所示,。其作用是將傳感器采集到的數(shù)據(jù)或數(shù)據(jù)處理后的信息按照預(yù)先約定的格式存儲(chǔ)在數(shù)據(jù)緩存中,每收到一次網(wǎng)絡(luò)上的主機(jī)發(fā)來的“Get AE”命令就將處理的結(jié)果發(fā)送出去,。ae_init函數(shù)用來在初始化時(shí)啟動(dòng)數(shù)據(jù)服務(wù)應(yīng)用,;在建立TCP連接時(shí)ae_accept函數(shù)用來在協(xié)議控制塊PCB中注冊(cè)應(yīng)用層處理函數(shù),每次在建立連接時(shí)都會(huì)被協(xié)議棧調(diào)用,;ae_recv是實(shí)際的應(yīng)用層處理函數(shù),,在每次接收到從對(duì)應(yīng)連接上發(fā)來的應(yīng)用層命令時(shí),協(xié)議棧都會(huì)調(diào)用它做出合適的處理和響應(yīng),,這里主要是用來向客戶端主機(jī)傳輸傳感器數(shù)據(jù)或信息,。在未進(jìn)行優(yōu)化的情況下,在一個(gè)正常工作(有外部Internet連接)的局域網(wǎng)內(nèi),,系統(tǒng)能達(dá)到最少110KBps的傳輸速率,,基本滿足設(shè)計(jì)要求。若需進(jìn)一步提高傳輸帶寬,,可以應(yīng)用100M或更高速度的網(wǎng)卡芯片與DSP進(jìn)行接口,。

???????????????????????
??? 在嵌入式系統(tǒng)中實(shí)現(xiàn)以太網(wǎng)接口的主要困難:一是合適的接口芯片較少,集成的方案(即處理器內(nèi)嵌以太網(wǎng)接口)成本又相對(duì)較高;二是TCP/IP協(xié)議棧的實(shí)現(xiàn),。隨著嵌入式系統(tǒng)網(wǎng)絡(luò)應(yīng)用的發(fā)展,,第一個(gè)困難會(huì)隨著芯片技術(shù)的發(fā)展逐漸解決,而對(duì)于第二個(gè)困難,,使用開源代碼是一個(gè)經(jīng)濟(jì)的合適選擇,。目前,對(duì)大多數(shù)應(yīng)用來說,,本文的系統(tǒng)都是一個(gè)可行的低成本方案,,能夠滿足一定的數(shù)據(jù)傳輸率要求,且因?yàn)镃5409 DSP接口還有帶寬裕量,,系統(tǒng)具有較高的可擴(kuò)展性,,可以連接更快傳輸率的以太網(wǎng)芯片。本文設(shè)計(jì)的嵌入式WEB數(shù)據(jù)服務(wù)器,,已在一個(gè)聲發(fā)射(AE)傳感器數(shù)據(jù)采集及分析系統(tǒng)中得到使用并達(dá)到了預(yù)期的效果,。
參考文獻(xiàn)
[1] ?曹宇, 魏豐,胡士毅. 用51單片機(jī)控制RTL8019AS實(shí)現(xiàn)以太網(wǎng)通訊. 電子技術(shù)應(yīng)用, 2003,29(1):21-23.
[2] ?TMS320VC5409 Fixed-point digital signal processor?datasheet. Texas Instruments Inc, 2000.
[3] ?RTL8019AS datasheet. RealTek Semiconductor Corp, 2005, 8.

[4] ?Adam Dunkels. Design and implementation of the lwIP?TCP/IP stack.http://www.sics.se/

~adam/lwip/doc/lwip.pdf, ?2001, 2.

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,,并不代表本網(wǎng)站贊同其觀點(diǎn)。轉(zhuǎn)載的所有的文章,、圖片,、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者,。如涉及作品內(nèi)容,、版權(quán)和其它問題,請(qǐng)及時(shí)通過電子郵件或電話通知我們,,以便迅速采取適當(dāng)措施,,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118,;郵箱:[email protected],。