陳舜青
摘要:TCP/IP是計(jì)算機(jī)網(wǎng)絡(luò)標(biāo)準(zhǔn)的一種,這個(gè)標(biāo)準(zhǔn)可以使傳輸?shù)臄?shù)據(jù)能在互聯(lián)網(wǎng)上實(shí)現(xiàn),不一定限制在局域網(wǎng)。該文提出了單片機(jī)與Internet網(wǎng)絡(luò)通信的實(shí)現(xiàn)方案,重點(diǎn)討論利用單片機(jī)控制網(wǎng)卡實(shí)現(xiàn)網(wǎng)絡(luò)傳輸?shù)募夹g(shù)。
關(guān)鍵詞:TCP/IP;單片機(jī);嵌入式設(shè)備
中圖分類號(hào):TP393 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1009-3044(2014)31-7523-02
Abstract: TCP/IP is a computer network standard, this standard can make the transmission of data can be realized in the Internet, do not be restricted in LAN. This paper presents the realization scheme of network communication of MCU and Internet, focuses on the use of single-chip microcomputer to control network card to realize the network transmission technology.
Key words: TCP/IP; Single chip microcomputer;Embedded equipment
1 概述
隨著計(jì)算機(jī)技術(shù)、網(wǎng)絡(luò)通信的迅速發(fā)展,人們?cè)诠ぷ骱腿粘I钪幸褲u漸離不開網(wǎng)絡(luò)。早先只有PC機(jī)與Internet網(wǎng)絡(luò)連接,現(xiàn)在家電、儀表等智能化設(shè)備也連上網(wǎng)了,而這些設(shè)備大多要用到8位微處理器。這些設(shè)備要實(shí)現(xiàn)與Internet網(wǎng)絡(luò)的通信,就要擴(kuò)展微處理器的網(wǎng)絡(luò)功能。TCP/IP協(xié)議是傳輸控制/網(wǎng)際協(xié)議,它是Internet互聯(lián)網(wǎng)的基礎(chǔ),是網(wǎng)絡(luò)中使用的基本的通信協(xié)議,實(shí)現(xiàn)電子設(shè)備網(wǎng)絡(luò)化是信息時(shí)代的需要。[1]
2 單片機(jī)上實(shí)現(xiàn)TCP/IP的必要性
在單片機(jī)上實(shí)現(xiàn)TCP/IP究竟有沒有必要?由于TCP/IP是一種計(jì)算機(jī)網(wǎng)絡(luò)標(biāo)準(zhǔn),以太網(wǎng)也已經(jīng)普遍使用。使用TCP/IP和以太網(wǎng)系統(tǒng),結(jié)構(gòu)會(huì)比較簡(jiǎn)單。嵌入式TCP/IP協(xié)議的單片機(jī)系統(tǒng),具有硬件少、成本低、傳輸速度快、體積小、操作方便等優(yōu)點(diǎn)。特別適合現(xiàn)有的網(wǎng)絡(luò)傳輸系統(tǒng),在數(shù)據(jù)傳輸、數(shù)據(jù)采集等領(lǐng)域具有廣闊的應(yīng)用前景。
比如目前比較流行的智能小區(qū),每個(gè)家庭以太網(wǎng)的8芯雙絞線一般都會(huì)有,在布線上,不能為每家布很多線。寬帶上網(wǎng)是直接通過(guò)以太網(wǎng)的,像遠(yuǎn)程抄表設(shè)備,可以利用已有的以太網(wǎng),但如果用其它網(wǎng)絡(luò)就要另外排線。以太網(wǎng)實(shí)現(xiàn)聯(lián)網(wǎng)成本低,將來(lái)還有可能把計(jì)算機(jī)、電視、電話三網(wǎng)合一。
采用TCP/IP可以使平臺(tái)統(tǒng)一、標(biāo)準(zhǔn)化,傳輸數(shù)據(jù)可以不局限在局域網(wǎng)上,而可以在全世界有互聯(lián)網(wǎng)的任何地方。假如在某個(gè)區(qū)域安裝了一些監(jiān)控設(shè)備,但接收信息并進(jìn)行處理的數(shù)據(jù)中心卻在其他地方,使用TCP/IP可以實(shí)現(xiàn)這種情況下的信息收集。TCP和UDP是TCP/IP協(xié)議中包含的兩種協(xié)議,TCP能確保數(shù)據(jù)傳輸正確無(wú)誤,UDP能面向音頻、視頻、廣播等方面的應(yīng)用。一個(gè)大型的智能小區(qū)的設(shè)備,統(tǒng)一遵守TCP/IP協(xié)議,多種設(shè)備才會(huì)兼容,由多家設(shè)備供應(yīng)商提供的設(shè)備,遠(yuǎn)程抄表系統(tǒng)、智能防盜系統(tǒng)等在統(tǒng)一的平臺(tái)上就可以兼容 [2] 。
3 單片機(jī)與電腦的不同點(diǎn)
單片機(jī)和電腦有很大的不同,在實(shí)現(xiàn)通信任務(wù)時(shí)各有利弊。電腦的存儲(chǔ)容量大,在PC機(jī)上撰寫TCP/IP程序,不必顧及代碼大小和程序運(yùn)行速度。但在單片機(jī)上既要考慮代碼大小,又要考慮代碼效率,即程序運(yùn)行速度。單片機(jī)的存儲(chǔ)容量中只有64K字節(jié)直接尋址空間,可以訪問(wèn)的內(nèi)存RAM也小得很,跟PC機(jī)的存儲(chǔ)空間比相差很遠(yuǎn)。內(nèi)存可用的RAM也很小,最多只能擴(kuò)64K的RAM,單片機(jī)的運(yùn)算速度也極為有限 [3] 。但是,單片機(jī)可以利用有限的空間以及特殊功能寄存器,譬如,使用SFR寄存器可以有效地對(duì)硬件I/O接口操作 [2] 。
總體上,在單片機(jī)與電腦UNIX系統(tǒng)下實(shí)現(xiàn)TCP/IP有以下區(qū)別:操作系統(tǒng)、內(nèi)存分配、指針、參數(shù)傳遞、變量定義、協(xié)議支持、硬件接口。
單片機(jī)TCP/IP就是在單片機(jī)上運(yùn)行的TCP/IP協(xié)議棧,也就是TCP/IP各層協(xié)議的總和。由于嵌入式聯(lián)網(wǎng)設(shè)備越來(lái)越多,需要在嵌入式設(shè)備上實(shí)現(xiàn)TCP/IP協(xié)議棧,但是嵌入式設(shè)備不同于PC機(jī),它們一般采用MCU而不是CPU作為核心處理器。
4 TCP/IP協(xié)議在單片機(jī)上的實(shí)現(xiàn)
早先TCP/IP的實(shí)現(xiàn)是在UNIX系統(tǒng)中,現(xiàn)在WINDOWS也實(shí)現(xiàn)了TCP/IP,再后來(lái)其它嵌入式處理器,如8位的MCS51、AVR單片機(jī)上移植了TCP/IP協(xié)議。
單片機(jī)上TCP/IP協(xié)議中的IP協(xié)議與UNIX的指令系統(tǒng)不一樣,資源也不一樣,在電腦上UNIX系統(tǒng)中實(shí)現(xiàn)的TCP/IP協(xié)議原代碼不能夠原樣移植到8位的單片機(jī)中 [3] 。
首先要配置硬件,也就是TCP/IP協(xié)議的物理層才能進(jìn)行后續(xù)工作,通常選擇合適的網(wǎng)卡芯片就可以。在嵌入式系統(tǒng)中經(jīng)常用到的是NE2000兼容系列網(wǎng)卡,尤其適合目前的嵌入式系統(tǒng)。實(shí)現(xiàn)TCP/IP協(xié)議的物理層可以選用性能較好的RTL8019AS以太網(wǎng)控制器,它符合IEEE 802.3載波偵聽多路訪問(wèn)局域網(wǎng)標(biāo)準(zhǔn)。
物理層的實(shí)現(xiàn)還要借助于網(wǎng)卡驅(qū)動(dòng)程序,對(duì)以太網(wǎng)中的數(shù)據(jù)包進(jìn)行收發(fā)。以太網(wǎng)數(shù)據(jù)包的收發(fā)需要提供收發(fā)雙方的物理地址,即MAC地址,就像現(xiàn)在寄快遞包裹一樣,需要明確是哪個(gè)設(shè)備發(fā)出,又由哪個(gè)設(shè)備接收。但I(xiàn)P協(xié)議卻是采用的IP地址,要用ARP地址解析協(xié)議將這兩種地址相互轉(zhuǎn)換,ARP是TCP/IP協(xié)議中通過(guò)IP地址得到物理地址的一個(gè)協(xié)議。通過(guò)在局域網(wǎng)上廣播包含IP地址的ARP請(qǐng)求,當(dāng)接收ARP返回信息后,將IP地址和MAC地址暫存在本地機(jī)ARP緩存中,這一步直接影響到協(xié)議的性能。
地址老化可以減少網(wǎng)絡(luò)中廣播包的總數(shù)、提高網(wǎng)絡(luò)傳輸效率,對(duì)協(xié)議進(jìn)行優(yōu)化。地址老化是指一個(gè)以前學(xué)到的地址如果在最大老化時(shí)間內(nèi)沒有再次被從網(wǎng)絡(luò)上獲得,這個(gè)地址將從交換機(jī)的地址列表中刪除,從而釋放出地址空間讓新學(xué)到的地址使用。這是交換機(jī)應(yīng)對(duì)龐大的網(wǎng)絡(luò)地址的一種行之有效的處理方法。建立ARP 表,對(duì)地址進(jìn)行緩存及ARP表的動(dòng)態(tài)更新。其中還有關(guān)鍵的一步是實(shí)現(xiàn)效率高且通用性強(qiáng)的IP校驗(yàn)程序,然后再編寫UDP、ICMP等程序。
ICMP 協(xié)議主要實(shí)現(xiàn)應(yīng)答報(bào)文和回應(yīng)請(qǐng)求,這是在網(wǎng)絡(luò)信息傳輸中最常用的,也就是用ping命令來(lái)測(cè)試網(wǎng)絡(luò)的通暢情況。ping命令可以測(cè)試計(jì)算機(jī)的IP地址和計(jì)算機(jī)名,并根據(jù)發(fā)送ICMP回應(yīng)報(bào)文及數(shù)據(jù)包的返回時(shí)間,來(lái)校驗(yàn)與本地計(jì)算機(jī)或異地計(jì)算機(jī)的連接狀況。
只有在安裝了TCP/IP協(xié)議后,才能使用ping命令。對(duì)方收到ping報(bào)文后要原樣返回,測(cè)試數(shù)據(jù)包的往返時(shí)間可以用數(shù)據(jù)包中包含的當(dāng)前時(shí)間,減去信宿機(jī)收到報(bào)文后的返回時(shí)間即可,從而計(jì)算出本機(jī)與信宿機(jī)的連接速度。用戶數(shù)據(jù)包協(xié)議UDP,是無(wú)連接的傳輸層協(xié)議,其系統(tǒng)開銷小、效率高、應(yīng)用廣泛。
UDP和TCP的校驗(yàn)要加上一個(gè)偽頭標(biāo), UDP 協(xié)議實(shí)現(xiàn)后,再通過(guò)簡(jiǎn)單文本傳輸協(xié)議TFTP實(shí)現(xiàn)開發(fā)板和PC機(jī)的雙向文件傳輸,使得網(wǎng)頁(yè)文件能夠動(dòng)態(tài)更新。在單片機(jī)系統(tǒng)中,資源非常有限,不需要實(shí)現(xiàn)全部協(xié)議。TCP 協(xié)議實(shí)現(xiàn)了,就可以接收HTTP請(qǐng)求并完成HTTP響應(yīng) [4] 。
由于8位單片機(jī)系統(tǒng)的廣泛應(yīng)用,采用8位單片機(jī)和以太網(wǎng)控制芯片組成單片機(jī)網(wǎng)絡(luò)通信系統(tǒng),單片機(jī)的內(nèi)部資源有限,根據(jù)實(shí)際應(yīng)用的需要和單片機(jī)的特點(diǎn),需要對(duì)TCP/IP協(xié)議進(jìn)行裁剪后再移植到系統(tǒng)中,然后再設(shè)計(jì)并實(shí)現(xiàn)嵌入式webserver應(yīng)用??蛻舳送ㄟ^(guò)瀏覽器中的網(wǎng)頁(yè)實(shí)時(shí)控制單片機(jī)應(yīng)用系統(tǒng)LED燈的兩種狀態(tài)亮和滅。8位單片機(jī)通過(guò)對(duì)HTTP協(xié)議進(jìn)行分析,在單片機(jī)內(nèi)部實(shí)現(xiàn)HTTP協(xié)議,并用HTML語(yǔ)言編寫web頁(yè)面,將網(wǎng)頁(yè)源代碼存儲(chǔ)到單片機(jī)內(nèi)部的EEPROM中,通過(guò)IE瀏覽器可以遠(yuǎn)程訪問(wèn)網(wǎng)頁(yè),并實(shí)現(xiàn)對(duì)系統(tǒng)的實(shí)時(shí)控制和監(jiān)控。webserver應(yīng)用在8位單片機(jī)中的實(shí)現(xiàn),使得單片機(jī)系統(tǒng)的監(jiān)控變得直觀、簡(jiǎn)便。讀取EEPROM時(shí)以訪問(wèn)數(shù)組的形式訪問(wèn)代碼,從而避免操作系統(tǒng)對(duì)文件讀取的限制,并且提高了系統(tǒng)的運(yùn)行效率 [3] 。
5 結(jié)束語(yǔ)
目前,高校信息資源建設(shè)正加速發(fā)展,軟件信息資源的共享促進(jìn)了教育極大的便利化,高等教育投資效益迅速提高。以單片機(jī)為核心的嵌入式系統(tǒng)在教育領(lǐng)域?qū)?huì)得到廣泛的應(yīng)用。以前,相對(duì)軟件資源來(lái)說(shuō),異地的硬件資源不通過(guò)網(wǎng)絡(luò)很難共享。有了嵌入式技術(shù)和TCP/IP協(xié)議的支持,在儀器設(shè)備中植入小型嵌入式芯片,甚至將微型嵌入式芯片植入人體和動(dòng)物體內(nèi),再使用單片機(jī)內(nèi)部嵌入的web頁(yè)面按鈕進(jìn)行操作,對(duì)儀器設(shè)備等進(jìn)行遠(yuǎn)程實(shí)時(shí)操縱或監(jiān)控,用單片機(jī)收集數(shù)據(jù),本地PC機(jī)接收單片機(jī)傳輸過(guò)來(lái)的數(shù)據(jù),在瀏覽器上將信息顯現(xiàn)出來(lái)。硬件設(shè)備的共享,節(jié)省了資源,提高了效益,將會(huì)極大地推動(dòng)教育智能化、信息化發(fā)展[3]。此外,在工業(yè)控制、醫(yī)療器械等行業(yè),嵌入式技術(shù)正體現(xiàn)它越來(lái)越大的優(yōu)勢(shì)。
參考文獻(xiàn):
[1] 趙亮.單片機(jī)C語(yǔ)言編程與實(shí)例[M].北京:人民郵電出版社,2003.
[2] [DB/OL].http://www.laogu.com/MY/pci12.htm老古單片機(jī)開發(fā)網(wǎng).
[3] [DB/OL].http://d.wanfangdata.com.cn/Thesis_Y1059048.aspx.劉建超,單片機(jī)與Internet網(wǎng)絡(luò)的通信應(yīng)用研究.
[4] [DB/OL].http://lizigang1983.blog.163.com/blog/static/62124652008231105627428/.