<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è) > 嵌入式系統 > 設計應用 > 基于TMS320VC5409的嵌入式WEB數據服務(wù)器的實(shí)現

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

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


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


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


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

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

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

linux操作系統文章專(zhuān)題:linux操作系統詳解(linux不再難懂)

tcp/ip相關(guān)文章:tcp/ip是什么




評論


相關(guān)推薦

技術(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>