|
|||||||||||
| 技術交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術 | 電源技術 | 測控之家 | EMC技術 | ARM技術 | EDA技術 | PCB技術 | 嵌入式系統(tǒng) 驅動編程 | 集成電路 | 器件替換 | 模擬技術 | 新手園地 | 單 片 機 | DSP技術 | MCU技術 | IC 設計 | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe |
如何學習TCPIP(基于51單片機) |
| 作者:gwnpeter 欄目:單片機 |
總體說來,TCPIP并不是一件十分神秘的事情,尤其是基于MCU的應用,不要求進行特別復雜的處理,很多情況下只需要實現(xiàn)最最基本的功能就行了。在實現(xiàn)MCU的TCPIP移植之前,必須對TCPIP有一定程度的了解,可以找一本合適的書籍來翻閱一下,《TCP/IP詳解,卷1:協(xié)議》http://www.laogu.com/display.aspx?did=510是一本完整而詳細的TCP/IP協(xié)議指南。描述了屬于每一層的各個協(xié)議以及它們如何在不同操作系統(tǒng)中運行。 對于TCPIP在MCU上的應用并不要求對協(xié)議的所有部分都了解的那么清楚,重點需要了解TCPIP的各個層次的關系,鏈路層,有時也稱作數(shù)據(jù)鏈路層或網(wǎng)絡接口層,通常包括操作系統(tǒng)中的設備驅動程序和計算機中對應的網(wǎng)絡接口卡。它們一起處理與電纜(或其他任何傳輸媒介)的物理接口細節(jié)。網(wǎng)絡層,有時也稱作互聯(lián)網(wǎng)層,處理分組在網(wǎng)絡中的活動,例如分組的選路。在T C P / I P協(xié)議族中,網(wǎng)絡層協(xié)議包括I P協(xié)議(網(wǎng)際協(xié)議),I C M P協(xié)議(I n t e r n e t互聯(lián)網(wǎng)控制報文協(xié)議),以及I G M P協(xié)議(I n t e r n e t組管理協(xié)議)。 運輸層主要為兩臺主機上的應用程序提供端到端的通信。在T C P / I P協(xié)議族中,有兩個互不相同的傳輸協(xié)議: T C P(傳輸控制協(xié)議)和U D P(用戶數(shù)據(jù)報協(xié)議)。T C P為兩臺主機提供高可靠性的數(shù)據(jù)通信。它所做的工作包括把應用程序交給它的數(shù)據(jù)分成合適的小塊交給下面的網(wǎng)絡層,確認接收到的分組,設置發(fā)送最后確認分組的超時時鐘等。由于運輸層提供了高可靠性的端到端的通信,因此應用層可以忽略所有這些細節(jié)。而另一方面, U D P則為應用層提供一種非常簡單的服務。它只是把稱作數(shù)據(jù)報的分組從一臺主機發(fā)送到另一臺主機,但并不保證該數(shù)據(jù)報能到達另一端。任何必需的可靠性必須由應用層來提供。這兩種運輸層協(xié)議分別在不同的應用程序中有不同的用途。應用層負責處理特定的應用程序細節(jié)。幾乎各種不同的T C P / I P實現(xiàn)都會提供Telnet,FTP,SMTP 簡單郵件傳送協(xié)議,SNMP簡單網(wǎng)絡管理協(xié)議這些通用的應用程序。 各種類型的數(shù)據(jù)報格式也是需要了解的重點,使用Sniffer軟件可以十分方便的在電腦上查看各種數(shù)據(jù)報的收發(fā)狀態(tài).同時Sniffer也是以后調試TCPIP協(xié)議寨的一個很有用的工具,Sniffer的使用方式可以在www.google.com上很方便的搜索到. TCP/IP的分層,以太網(wǎng)封裝,IP首部,子網(wǎng)尋址和子網(wǎng)掩碼,ARP地址解析協(xié)議,ICMP控制報文協(xié)議中的ECHO(Ping程序),UDP用戶數(shù)據(jù)報協(xié)議,TFTP簡單文件傳送協(xié)議,特別是TCP傳輸控制協(xié)議是TCPIP在MCU上應用所必需掌握的關鍵知識. 在對TCPIP有了一定程度的了解之后,如何具體的實現(xiàn)就成了問題的關鍵,我在學習TCPIP的過程中前后一共使用或閱讀了下面的3中TCPIP協(xié)議寨,這里有對3個協(xié)議寨的比較和下載地址. uIP,適合8bit單片機上使用,但是結構比較復雜,不適宜進行移植,也不是一份很適合閱讀的代碼.下載地址http://www.sics.se/~adam/uip/ Lwip,適合16/32bit單片機上使用,是嵌入式系統(tǒng)開發(fā)人員最好的學習TCPIP的代碼,下載地址http://www.sics.se/~adam/lwip/ zLip,南開大學電子應用實驗室編寫的一個協(xié)議寨,有uip和lwip的優(yōu)點,推薦初學者學習http://www.laogu.com/display.aspx?did=859 (待續(xù)) |
| 2樓: | >>參與討論 |
| 作者: gwnpeter 于 2005/1/21 9:57:00 發(fā)布:
如何學習TCPIP(基于51單片機)(2) 在了解了具體實現(xiàn)之后,就有需要在MCU上具體的運行一下了,這里提供一個我做的硬件電路,但是其中我使用了GAL16V8芯片進行地址分配,所以需要有一個支持16V8的燒寫器了,同時,如果將AT89C55芯片換成SST89C58,并從www.sst.com公司網(wǎng)站上下載一個MONITOR 51的仿真監(jiān)控程序,使用燒寫器寫入SST89C58中,就可以通過串口和Keil軟件配合進行硬件仿真了.(市場上的那些100多元的51仿真器就是這個樣子的). Gal的代碼如下(abel hdl語言編寫),使用猜測的方式都應該明白什么意思了把?! MODULE chipsel title 'ADDRESS to CS' U1 DEVICE 'P16V8R'; a6,a7,a8,a9,a10 pin 19,1,2,3,4 a11,a12,a13,a14,a15 pin 5,6,7,8,9; csram,cs8019 pin 18,17; addr=[a15,a14,a13,a12,a11,a10,a9,a8,a7,a6]; equations csram = !(addr < ^h3FC); cs8019 = !(addr == ^h3FC); end chipsel; 原理圖,PCB: ![]() ![]() 下載壓縮文件包: http://www.21icsearch.com/buzi/upimage/upfile/2005121959230.pdf (下載之后將后綴pdf改為rar,解壓之后的jed文件就是編譯之后的Gal的目標代碼,使用ABEL4或者碩isp lever 2.0編譯) 打開下載的Zlip代碼,修改一下#define RTL_BASE_ADDRESS 0xb000為#define RTL_BASE_ADDRESS 0xff00,編譯,選擇mon51進行硬件仿真,打開Sniffer,嘗試Ping一下,能連通了嗎?Sniffer有收到數(shù)據(jù)報了嗎?下面就是加入自己的應用程序了... |
|
| 3樓: | >>參與討論 |
| 作者: gwnpeter 于 2005/1/21 10:19:00 發(fā)布:
如何學習TCPIP(基于51單片機)(3) 應用程序就自己加吧,不過如果想學好TCPIP,最好就是自己寫一下TCPIP協(xié)議寨,我寫過了的,下面的硬件實 現(xiàn)的就是網(wǎng)絡接口的U盤,因為沒有加上文件系統(tǒng),所以只能存儲一個文件,實際硬件只有半個煙盒大小,而且因為 沒有足夠的RAM空間,所以編程的時候需要十分注意內存的使用哦! ![]() 下載壓縮文件包(原力圖和部分代碼): http://www.21icsearch.com/buzi/upimage/upfile/20051211023250.pdf (下載之后將后綴pdf改為rar) |
|
| 4樓: | >>參與討論 |
| 作者: yangtse 于 2005/1/21 10:52:00 發(fā)布:
連接好像打不開。 |
|
| 5樓: | >>參與討論 |
| 作者: gwnpeter 于 2005/1/21 11:04:00 發(fā)布:
那個打不開????? |
|
| 6樓: | >>參與討論 |
| 作者: njp508 于 2005/1/21 15:59:00 發(fā)布:
RE 老大,好東西呀。非常感謝。。。 * - 本貼最后修改時間:2005-1-21 16:07:09 修改者:njp508 |
|
|
|
| 免費注冊為維庫電子開發(fā)網(wǎng)會員,參與電子工程師社區(qū)討論,點此進入 |
Copyright © 1998-2006 m.58mhw.cn 浙ICP證030469號 |