基于單片機的嵌入式系統(tǒng)網(wǎng)絡設計方案
在網(wǎng)絡技術應用日益廣泛的今天,網(wǎng)絡傳輸是最經(jīng)濟有效的數(shù)據(jù)傳輸方式。如何利用廉價的51單片機來控制網(wǎng)卡芯片進行數(shù)據(jù)傳輸,加載TCP/IP協(xié)議連接到互聯(lián)網(wǎng),實現(xiàn)網(wǎng)絡通信成了眾多設計者的目標。但由于指令及資源的限制,實施過程會有許多困難。我們在設計方案中舍棄了耗費資源的高級協(xié)議,采用發(fā)送小數(shù)據(jù)包的方式以避免分段,來簡化TCP協(xié)議和UDP協(xié)議,實現(xiàn)互聯(lián)接入。
硬件設計與實現(xiàn)
系統(tǒng)的硬件結構框圖如圖1所示。本系統(tǒng)的微控制器是Winbond公司的78E58,網(wǎng)絡接口芯片是與NE2000系列兼容的Realtek公司的RTL8019AS.RTL8019AS內置了10BASE-T收發(fā)器,外接一個隔離LPF濾波器,經(jīng)RJ-45接口輸出。外部RAM是62256,24C02是I2C總線的 EEPROM.
圖1 嵌入式協(xié)議轉換硬件框圖
系統(tǒng)的軟件設計與實現(xiàn)
為適應上網(wǎng)的需求,系統(tǒng)軟件設計主要包括兩部分內容:一是要執(zhí)行對RTL8019AS等的控制功能,二是要執(zhí)行與連接Internet相關的功能,實現(xiàn)TCP/IP協(xié)議。本文著重介紹第二部分,主程序采用C51語言編寫。
RTL8019AS初始化
要將嵌入式系統(tǒng)接入以太網(wǎng),首先要設置RTL8019AS的工作方式和工作狀態(tài),分配收發(fā)數(shù)據(jù)的緩沖區(qū),通過對地址及數(shù)據(jù)口的讀寫來完成以太網(wǎng)幀的接收與發(fā)送。然后設置RTL8019AS的工作參數(shù),亦即設置內部控制寄存器。對RTL8019AS的工作參數(shù)進行設置完畢后,進入正常工作狀態(tài),接下來就讀寫RTL8019AS的RAM以完成數(shù)據(jù)包的接收和發(fā)送。由于篇幅有限,這里就不再詳述。
TCP/IP模型
TCP/IP協(xié)議是一套把Internet上的各種系統(tǒng)互連起來的協(xié)議族,保證Internet上數(shù)據(jù)的準確快速傳輸。TCP/IP通常采用一種簡化的四層模型:應用層、傳輸層、網(wǎng)絡層、鏈路層。
本系統(tǒng)中,應用層傳遞來自以太網(wǎng)和數(shù)據(jù)終端的數(shù)據(jù),并對數(shù)據(jù)報作打包拆包處理。傳輸層采用傳輸控制協(xié)議TCP或用戶數(shù)據(jù)協(xié)議UDP.網(wǎng)絡層實現(xiàn)IP協(xié)議,還要實現(xiàn)能報告數(shù)據(jù)傳輸差錯等情況的ICMP協(xié)議。鏈路層部分由RTL8019AS完成,鏈路層由控制同一物理網(wǎng)絡上的不同機器間數(shù)據(jù)傳送的底層協(xié)議組成。
在單片機里只實現(xiàn)與需要有關的部分,而不使用的協(xié)議則一概不支持。單片機應用的TCP/IP協(xié)議大多是為了完成數(shù)據(jù)采集和數(shù)據(jù)傳輸,而不需要網(wǎng)頁瀏覽、文件傳輸這些功能。
ARP協(xié)議(地址解析協(xié)議)
以太網(wǎng)是TCP/IP協(xié)議主要采用的局域網(wǎng)技術,是系統(tǒng)接入Internet的基礎。ARP本質是完成網(wǎng)絡地址到以太網(wǎng)物理地址的動態(tài)映射。UNIX系統(tǒng)的ARP協(xié)議支持以太網(wǎng)、令牌環(huán)等網(wǎng)絡,但我們的單片機系統(tǒng)里只支持以太網(wǎng)。
IP協(xié)議(網(wǎng)際協(xié)議)
IP是TCP/IP協(xié)議族中最為核心的協(xié)議。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都以IP數(shù)據(jù)報格式傳輸。就對某些協(xié)議而言,IP包最大可以為65K,可以分段傳輸,而在單片機里根本無法容納如此大的數(shù)據(jù)包,因此一般是不支持分段的。我們的設計中采用發(fā)送小數(shù)據(jù)包的方式,以避免分段。
TCP協(xié)議(傳輸控制協(xié)議)
TCP數(shù)據(jù)封裝在一個IP數(shù)據(jù)報中,并具有自己的TCP首部, TCP協(xié)議定義十分復雜,鑒于51單片機的片內資源十分有限,本系統(tǒng)對TCP協(xié)議進行了一定的簡化處理。標準的TCP協(xié)議使用慢啟動的滑動窗口機制,如果只使用單個窗口,就變成了一種簡單確認的處理方法。即只需對單個數(shù)據(jù)報發(fā)送和確認,節(jié)約了系統(tǒng)資源,也使維護更加方便。
編程實現(xiàn)TCP協(xié)議的另一個難點在于TCP建立連接和終止連接的具體過程的實現(xiàn)。TCP協(xié)議是一個面向連接的協(xié)議,連接的雙方無論是哪一方向另一方發(fā)送數(shù)據(jù),都必須先通過“三次握手”過程在雙方之間建立一條連接,和通過“四次握手”終止連接。
連接建立后,TCP就可以發(fā)送數(shù)據(jù)塊,稱為數(shù)據(jù)段。當TCP發(fā)出一個段后,它啟動一個定時器,等待目的端確認收到這個報文段。如果不能及時收到一個確認,將重發(fā)這個報文段。另外,TCP將保持它首部和數(shù)據(jù)的檢驗和。
tcp/ip相關文章:tcp/ip是什么
評論