摘 要: 設(shè)計(jì)開發(fā)了一種適用于對(duì)數(shù)據(jù)傳輸率有一定要求的WEB數(shù)據(jù)服務(wù)器系統(tǒng)。系統(tǒng)以TMS320VC5409 DSP為主處理器,通過與RTL8019AS芯片連接實(shí)現(xiàn)了以太網(wǎng)接口。完成了lwIP TCP/IP協(xié)議棧在TMS320VC5409的移植,并在應(yīng)用層實(shí)現(xiàn)了一個(gè)嵌入式WEB數(shù)據(jù)服務(wù)器。
關(guān)鍵詞: 嵌入式WEB數(shù)據(jù)服務(wù)器 數(shù)據(jù)采集 TMS320VC5409 lwIP RTL8019AS
在較高速的嵌入式應(yīng)用場合,普通單片機(jī)[1]的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)檢測,另外集成的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所示。為簡化系統(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。首先在寄存器頁0,通過配置三個(gè)指針寄存器BNRY、PSTART、PSTOP來定義接收緩存區(qū)環(huán),通過配置寄存器ISR和IMR來清除使能中斷,然后在寄存器頁1配置物理地址寄存器PAR0~PAR5、多播地址寄存器MAR0~MAR7(在無需接收多播以太幀RCR寄存器的AM為0,MARx無需配置)及當(dāng)前頁指針寄存器CURR,最后回到寄存器頁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é)長度包括接收到的4字節(jié)校驗(yàn)數(shù)據(jù)。接收過程受到三個(gè)寄存器的控制:BNRY、RBCR0和RBCR1,BNRY寄存器指向待接收數(shù)據(jù)幀在緩存區(qū)環(huán)中的首頁起始地址,而RBCR0和RBCR1指定了待接收數(shù)據(jù)的長度。DSP通過初始化這三個(gè)寄存器并向RTL8019AS發(fā)出“Remote read”命令來將數(shù)據(jù)從緩存區(qū)環(huán)讀出。Remote DMA通道會(huì)自動(dòng)根據(jù)這三個(gè)寄存器來控制讀出的起始地址和長度。此外,還可以使用“Send Packet”命令來接收數(shù)據(jù),這時(shí)BNRY、RBCR0和RBCR1寄存器是自動(dòng)初始化的。





