《電子技術應用》
您所在的位置:首頁 > 通信與網絡 > 業界動態 > 基于DSP的上網方案的軟硬件設計與實現

基于DSP的上網方案的軟硬件設計與實現

2008-09-19
作者:范 卿 韓崇昭 衛翀華

??? 摘? 要: 介紹了TMS320VC33芯片與RTL8019網卡的硬件接口電路的設計以及網卡驅動程序的開發,并將TCP/IP" title="TCP/IP">TCP/IP協議嵌入到TMS320VC33芯片中;討論了TCP/IP協議簇的分層次實現,并根據應用的需要對DSP中實現的TCP/IP協議進行了必要的簡化,實現了DSP的上網功能。?

??? 關鍵詞: TCP/IP協議? DSP? 嵌入式系統

?

??? 隨著現代網絡技術的發展,嵌入式系統如單片機、DSP等系統對接入網絡的需求日益增加,例如具有遠程抄表功能的電表系統、可以進行遠程控制的信息家電系統等。本文采用TI公司的TMS320VC33 DSP芯片設計與Realtek公司的RTL8019網卡的硬件接口電路,并在DSP中用軟件實現TCP/IP協議,使DSP芯片具備上網功能,從而可以用計算機通過網卡與DSP電路板進行大量數據交換并對其進行控制。?

1 硬件設計?

??? DSP與網卡的硬件接口電路圖如圖1所示。?

?

?

??? DSP的數據總線低16位接ISA網卡的16位數據線,ISA網卡的IOCS16線接高電平,設置網卡為16位的模式。?

??? 網卡共有20根地址線。將A7~A8、A10~A19接地,A0~A6和A9分別接DSP的A0~A7,用到的網卡地址為0240H~025FH,映射到DSP的Page3空間,地址映射為C000C0H~C000DFH。?

??? DSP的Reset信號用于復位網卡,由于DSP的Reset信號低有效,而網卡的Reset信號高有效,故中間應接非門。?

??? DSP的Page3和R/W信號用于選通網卡的讀寫信號IOR、IOW,實現的邏輯關系如圖2所示。?

??? IRQ9是網卡的中斷9,通過非門后接DSP的INT1引腳。?

??? RTL8019網卡有三種工作方式:?

??? 第一種為跳線方式,網卡的I/O和中斷由跳線決定;?

??? 第二種為即插即用方式,由軟件進行自動配置plug and play;?

??? 第三種為免跳線方式,網卡的I/O和中斷由外接的93C46里的內容決定。?

??? 計算機上" title="機上">機上一般實現的是即插即用方式,為了降低軟件編程的復雜度,將網卡設置為跳線方式。?

??? 上述所有的譯碼邏輯都在EPM7128中實現。?

??? 74ALVC164245是總線驅動芯片,可實現3.3V到5V的電平轉換。由于TMS320VC33和EPM7128是3.3V的器件,而ISA總線是5V的,所以信號線不能直接連接,需要通過74ALVC164245進行電平轉換和隔離。?

2 軟件設計?

2.1 網卡硬件驅動程序的設計?

??? 網卡驅動程序主要包括以下幾部分:?

??? (1)NIC的初始化?

??? NIC是網絡接口控制芯片,它負責網絡上數據的接收和發送。為了能夠使NIC啟動并處于準備接收或準備發送數據的狀態,必須對相關的寄存器進行初始化。這些寄存器包括CR、DCR、RBCR、PSTART、PSTOP、ISR、IMR、PAR0~PAR5、MAR0~MAR7、CURR、TCR、RCR等。?

??? (2)中斷服務程序" title="中斷服務程序">中斷服務程序?

??? 中斷服務程序一般完成兩項任務:一是設置中斷標志,以使相關程序能以此發現發生了中斷;二是取得中斷狀態寄存器的值,并將引起中斷的具體原因提交給相應的程序,這一過程也是通過設置中斷原因標志完成的。需要注意的是,中斷服務程序開始的時候要保護中斷現場,待程序處理完成后要恢復中斷現場;中斷服務程序應盡可能短小,以便在盡可能短的時間內執行完成,因此需要將一些不必要的工作交給其它程序來完成。?

??? (3)幀發送程序?

??? 在網絡中,幀傳輸的過程是:發送方將待發送的數據按幀格式要求封裝成幀,然后通過網卡將幀發送到網絡的傳輸線上;接收方根據接收到的幀的目的地址確定是否將該幀提交給上層應用程序" title="應用程序">應用程序。幀的發送是指將待發送的數據以幀的形式發送到網絡傳輸線上,因此,幀的發送過程應該包括以下幾個步驟:?

??? ①裝幀;?

??? ②將幀送入NIC的發送緩沖區;?

??? ③初始化發送控制寄存器;?

??? ④啟動NIC將該幀發送到網絡傳輸線上。?

??? (4)幀接收程序?

??? 幀接收是指將網絡上的數據幀接收并緩存于網卡的接收緩沖環中,然后由主機程序將緩存于接收緩沖環的幀讀走并存入內存中以備程序使用。從中可以看出,幀的接收過程分成兩步:?

??? ①第一步由NIC通過本地DMA將幀存入接收緩沖環;?

??? ②第二步是通過遠程DMA并在主機的配合下將接收緩沖環中的幀讀入內存。?

2.2 TCP/IP協議的實現?

2.2.1 DSP中與PC機中實現TCP/IP協議的不同?

??? TCP/IP協議最先是在UNIX系統中實現的,后來在LINUX、DOS和WINDOWS系統中也實現了TCP/IP。但是,在UNIX上實現的TCP/IP協議的源代碼并不能直接移植到DSP上來,這是因為PC機和DSP存在著巨大的差異。?

??? PC機的運算速度非???一般都有一個多任務的操作系統,可以多任務并行執行,通過硬中斷與軟中斷、消息隊列和各種插口實現TCP/IP各協議層之間的通信和整個網絡的通信。而DSP運行速度相對較慢,缺乏多任務操作系統的平臺,只能通過順序執行加硬件中斷的方式來實現,并且因其還要同時執行數據采集、串口中斷等任務,所以中斷程序應盡量短,只完成設置各種狀態的標志位,而將相對較慢的網絡數據包的處理放在主程序中執行,以減少各種任務之間的沖突。?

??? PC機的內存非常大,現在一般都可達到32~128M的存儲容量,可以動態地分配和釋放內存,很容易實現存儲器緩存mbuf、網絡控制塊ncb等鏈狀結構,且可隨意增刪;同時能維持多條網絡連接,由于計算機處理速度快,幾乎不用考慮緩沖區溢出的問題。而DSP內部RAM一般只有十幾K,加上外部擴展的RAM也只能達到幾十K的容量,一個最大的以太網數據包就有1.5K左右,如果也按PC機的內存管理方式和數據結構,使用mbuf鏈,RAM肯定不夠用,因此只能在RAM中分配一個固定的1514字節的區段來存放接收到的以太網數據包,接收一包處理一包。?

??? PC機中TCP/IP協議都是分層次實現的,相互之間都是通過參數傳遞" title="參數傳遞">參數傳遞進行聯系,這樣有利于提高程序的模塊化和獨立性。而在DSP中,由于參數傳遞會占用過多的程序空間,且降低DSP的執行速度,所以應盡量減少參數傳遞,轉而使用全局變量和外部變量等來達到值的傳遞,因此各程序間的依賴程度大,往往會共享某一些變量和數據。?

??? PC機上實現了比較完整的TCP/IP協議。而在DSP中,由于運算速度和內存的限制,不可能支持所有的協議,一般只實現需要的部分,不需要的協議一概都不支持;而且即使需要的協議也不用像在PC機上實現那么復雜,可以根據硬件的具體情況和實現的需求進行必要的簡化。?

2.2.2 TCP/IP協議的具體實現?

??? TCP/IP協議是一個協議簇,包含了很多協議,在DSP上實現的所有協議如圖3所示,通??煞譃樗膶?不包括物理層)。?

?

?

??? 根據DSP的結構特點和所需要實現的功能,在DSP中實現了ARP(地址解析協議)、IP(網際協議)、ICMP(Internet控制報文協議)、UDP(用戶數據報協議)和TCP(傳輸控制協議),并對它們進行了簡化。?

??? 在鏈路層中實現了ARP。每種網絡都有自己的尋址機制,以太網是通過以太網地址即通常所說的網卡硬件地址MAC進行尋址的,每個網卡出廠時都有一個唯一的MAC地址。IP地址則僅僅是對于TCP/IP協議簇有意義的地址,是一種虛擬地址。當賦予IP地址的IP包要在以太網中傳播時,必須將IP地址轉化為以太網地址才能進行正確的傳輸。ARP協議就是將32位的IP地址動態地映射為48位的以太網地址,從而保證網絡的正確傳輸。ARP協議由兩個文件arpin.c和arpout.c實現。arpin.c負責接收網絡上廣播的arp包,判斷arp包的類型是網絡上其它機子的請求包還是返回本機的響應包,判斷其合法性并進行相應的處理;arpout.c負責主機向網絡發送數據報時發送arp請求包以及被arpin.c調用響應收到的arp請求包。?

??? 在網絡層中實現了IP和ICMP。IP協議是TCP/IP協議簇中最核心的協議,它提供無連接的數據報傳送服務,所有上層協議都要以IP數據包格式傳輸。IP協議由兩個文件ipin.c和ipout.c實現。ipin.c負責接收IP數據包,收到IP包后,首先判斷其版本號、數據長度、目的地址、檢驗和是否正確,再根據IP首部的協議類型字段的值交給相應的上層協議處理;ipout.c負責發送IP數據包,接收上層協議傳遞下來的數據,加上20字節的IP首部,正確設置源IP地址和目的IP地址、協議類型,計算檢驗和,交給下面的鏈路層發送。PC機上的IP數據包,當它的長度超過網絡的MTU時,允許對它分段;在DSP中,則不支持IP數據包分段,也不支持IP選項字段。ICMP協議負責傳遞差錯報文以及其它需要注意的信息,且由ICMP首部8位的類型字段和8位的代碼字段決定信息的種類。在DSP中只實現了對回顯請求(類型代碼為80)報文的處理,從IP層收到ICMP包后,判斷其類型代碼段是否為80。如果是,將這兩個字段設置為00(回顯應答),計算檢驗和,再交給IP層發送;如果不是,則予以丟棄。從而實現了對ping功能的支持。?

??? 在運輸層實現了UDP和TCP。?

??? UDP協議是一種面向無連接的不可靠的協議,用兩個文件udpin.c和udpout.c來實現。udpin.c實現對udp包輸入的處理,判斷其端口號、檢驗和是否正確,正確則將其數據交給相應端口的應用程序,不正確則丟棄;udpout.c實現對udp包輸出的處理,從應用程序接收數據,設置相應的源端口號和目的端口號,再交給IP層發送。值得注意的是,計算UDP包的檢驗和與計算IP包的檢驗和是不一樣的,IP包的檢驗和只覆蓋了IP包的首部,而UDP包的檢驗和則覆蓋了UDP包的首部和所有的數據。UDP包計算檢驗和時還引入了一個12字節的偽首部,包括4字節的源IP地址、4字節的目的IP地址、1字節的零段、1字節的協議段和兩字節的檢驗和,其目的是讓UDP兩次檢查數據是否正確地到達了目的地。?

??? TCP協議與UDP協議雖然同是運輸層協議,但是它提供一種面向連接的可靠的字節流服務。TCP協議是所有協議中最復雜、也是最難實現的一塊,主要由tcpin.c、tcpout.c、tcptimer.c和tcpstatem.c四個文件分塊實現,并根據具體應用的需要進行簡化。TCP的控制塊tcb用結構體來實現,每一個tcb包含一條TCP連接的所有控制和狀態信息,全部的tcb形成了一個雙向鏈表,有利于在所有TCP連接中進行搜索。tcptimer.c負責管理TCP協議中的各種狀態信息,它內含前向后向指針,使之形成定時器超時,PC機上的TCP協議包含快慢兩個定時器,這里僅僅實現了一個500ms的慢速定時器,因為沒有快速定時器,所以不支持ACK報文延遲,收到一幀即立即發送ACK;tcpstatem.c是TCP的狀態機函數,根據TCP連接所處的不同狀態以及發生的事件來決定TCP連接的狀態變遷;tcpout.c負責tcp報文的發送,典型的發送過程是當接收到上層應用程序的數據時,首先發送SYN幀,與目標節點三次握手建立連接,之后加上TCP首部,交給下層IP模塊發送,并通過重傳定時器實現超時重發、持續定時器發送窗口探測幀等功能,待所有數據發送完畢并得到確認后發送FIN幀,通過四次握手關閉連接,tcpout.c還可在不同狀態和事件下被其它程序調用發送ACK幀、RST幀等其它TCP報文;tcpin.c負責接收從下層IP模塊接收到的TCP數據包,并根據TCP連接的狀態信息以及TCP首部的各個標志位進行分支處理,將數據交給對應端口的上層應用程序,并調用其它函數實現對TCP包的響應和狀態變遷。在PC機上往往可以同時維護多條TCP連接;但在DSP上,由于DSP速度和RAM容量的限制,只支持一條TCP連接;這樣大大簡化了程序的復雜度,同時也滿足了實際需要,如果今后有需要,還可以進行擴展。?

??? 綜上所述,TCP/IP協議的具體處理流程如圖4所示。?

?

?

??? 本文通過DSP與網卡的硬件接口的設計及編程,使DSP實現了基于以太網的TCP/IP通信,從而使DSP可以通過網線進行聯網,并可以實時地與計算機進行通信,交換大量的數據和控制信息。本文所介紹的技術已經在作者參加的國家“973”項目“復雜自然環境時空定量信息的獲取與融合處理的理論與應用”的硬件設計中得到應用,并運行良好。?

參考文獻?

1 W. Richard Stevens著,陸雪瑩等譯.TCP/IP詳解二:實現. 北京:機械工業出版社,2000?

2 RTL8019芯片技術資料. Realtek公司, 1995?

3 TMS320VC33芯片技術資料. Ti公司, 2001?

4 劉國福,張 屺,王光明. 基于DSP的10Mbit/s共享以太網絡的設計. 電子技術,2001(7):5~7?

5 李 明,康靜秋,賈智平. 嵌入式TCP/IP協議棧的研究與開發. 計算機工程與應用, 2002(16)

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
欧美成人精品三级在线观看| 国产日韩一区在线| 久久er精品视频| 亚洲欧美国产不卡| 在线一区二区三区四区五区| 日韩一级网站| 亚洲精品视频在线观看免费| 亚洲国产高清高潮精品美女| 久久av二区| 久久精品亚洲精品| 久久精品国产精品| 久久国产视频网| 欧美专区中文字幕| 亚洲电影在线观看| 亚洲国产mv| 亚洲精品美女在线观看| 亚洲精品免费在线播放| 亚洲精品午夜精品| 9i看片成人免费高清| 日韩亚洲视频| 这里只有精品视频在线| 亚洲一区视频在线观看视频| 亚洲夜晚福利在线观看| 午夜在线视频观看日韩17c| 欧美在线观看网站| 久久先锋资源| 久久综合中文| 欧美精品成人一区二区在线观看| 欧美va天堂| 欧美日韩中国免费专区在线看| 欧美日韩精品不卡| 国产精品大片免费观看| 国产精品永久免费观看| 国模一区二区三区| 亚洲大胆在线| 夜夜嗨av一区二区三区网站四季av | 欧美午夜宅男影院在线观看| 欧美视频一区二区三区四区| 国产精品女人网站| 国产主播喷水一区二区| 一区二区在线视频播放| 亚洲人成亚洲人成在线观看| 中文在线不卡视频| 欧美一区在线看| 亚洲精品影视| 亚洲欧美一区二区视频| 久久全球大尺度高清视频| 女生裸体视频一区二区三区| 欧美日韩国产va另类| 国产精品网红福利| 一区二区视频免费完整版观看| 亚洲国产精品成人一区二区 | 国产一区二区三区精品欧美日韩一区二区三区 | 亚洲视频播放| 欧美伊久线香蕉线新在线| 久久综合给合久久狠狠色| 欧美日韩国产片| 国产无一区二区| 亚洲狠狠婷婷| 亚洲欧美日韩成人| 亚洲免费观看视频| 欧美中文字幕不卡| 欧美区国产区| 国产原创一区二区| 99国产精品99久久久久久粉嫩| 性欧美大战久久久久久久久| 99re在线精品| 久久亚洲一区二区三区四区| 欧美日韩综合精品| 尤物精品在线| 亚洲一区在线视频| 亚洲美女一区| 久久久精品性| 国产精品国产精品| 亚洲国产毛片完整版| 欧美亚洲视频在线观看| 99精品国产99久久久久久福利| 久久精品国产亚洲aⅴ| 欧美日韩调教| 亚洲国产精品久久久久婷婷884| 亚洲一区999| 99在线热播精品免费| 久久综合九色欧美综合狠狠| 国产精品黄色在线观看| 最新国产の精品合集bt伙计| 亚洲成色精品| 久久精品视频在线| 国产精品女人网站| 夜夜爽夜夜爽精品视频| 久久精品一区四区| 久久国产一区二区三区| 国产精品久久国产三级国电话系列| 亚洲大胆av| 久久精品一区二区国产| 欧美亚洲一区在线| 国产精品久久久久久久午夜| 亚洲欧洲另类| 亚洲国产精品激情在线观看| 欧美一区二区三区免费视| 欧美午夜精品久久久久久久| 亚洲人精品午夜在线观看| 亚洲国产天堂久久国产91| 久久久一本精品99久久精品66| 国产精品一区免费观看| 一区二区三区四区五区精品视频 | 亚洲午夜一二三区视频| 欧美区一区二区三区| 在线国产精品播放| 久久国产精品一区二区| 久久久久国产免费免费| 国产视频一区在线| 欧美一区2区视频在线观看| 欧美一区视频在线| 国产日韩欧美在线一区| 亚洲制服丝袜在线| 午夜一区二区三视频在线观看| 国产精品久久久久久久久久久久久| avtt综合网| 亚洲一区二区三区三| 国产精品av久久久久久麻豆网| 一级日韩一区在线观看| 亚洲一区国产视频| 国产精品国产三级欧美二区| 亚洲图片自拍偷拍| 午夜欧美视频| 国产日韩综合一区二区性色av| 亚洲欧美日韩高清| 久久精品亚洲乱码伦伦中文 | 亚洲国产精品电影在线观看| 男女精品网站| 亚洲精品乱码久久久久久久久 | 亚洲丁香婷深爱综合| 亚洲人久久久| 欧美日韩精品久久久| 亚洲毛片在线观看| 亚洲一区视频在线| 国产欧美精品xxxx另类| 欧美在线播放视频| 免费观看在线综合色| 亚洲区一区二区三区| 国产精品99久久久久久白浆小说 | 欧美激情综合| 一区二区电影免费观看| 亚洲欧美三级伦理| 国产日韩专区在线| 91久久精品国产91久久性色tv| 欧美大秀在线观看| 日韩一区二区精品葵司在线| 亚洲欧美日韩成人| 国产亚洲欧洲一区高清在线观看 | 亚洲狼人综合| 午夜亚洲性色福利视频| 狠狠色伊人亚洲综合成人| 亚洲黄色性网站| 欧美日韩在线播放一区二区| 亚洲一级在线| 久久午夜色播影院免费高清| 亚洲欧洲精品一区二区三区不卡| 亚洲午夜女主播在线直播| 国产日韩欧美一二三区| 亚洲日韩中文字幕在线播放| 欧美婷婷久久| 久久激情视频久久| 欧美日韩一区二区三区在线视频| 亚洲小视频在线观看| 久久在线免费观看| 一区二区日韩| 久久久夜精品| 99视频有精品| 久久久久**毛片大全| 亚洲精品一区二区三区不| 欧美在线视频播放| 亚洲精品免费一区二区三区| 欧美一区二区三区四区夜夜大片 | 洋洋av久久久久久久一区| 久久久99国产精品免费| 亚洲精品乱码久久久久久黑人| 欧美在线亚洲综合一区| 亚洲国产视频一区| 欧美一区二区大片| 亚洲人成在线播放| 久久久久久香蕉网| 一区二区欧美在线观看| 免费中文字幕日韩欧美| 亚洲男女自偷自拍图片另类| 欧美激情视频一区二区三区不卡| 亚洲男女自偷自拍| 欧美精品一区二区三区蜜臀| 欧美一区二区免费观在线| 欧美日韩在线免费观看| 亚洲国产精品电影| 国产日韩欧美a| 亚洲午夜高清视频| 亚洲国产专区校园欧美| 久久成人综合视频| 一区二区三区不卡视频在线观看 | 亚洲专区在线| 极品少妇一区二区| 新狼窝色av性久久久久久| 亚洲国产精品传媒在线观看|