中文名 | 單片機TCP/IP | 外文名 | danpianjiTCP/IP |
---|---|---|---|
特????點 | 程序存儲空間和外部RAM空間不大 | 協(xié)議棧 | eCos單片機TCP/IP協(xié)議棧 |
由于TCP協(xié)議棧的程序流程較為復(fù)雜,因為程序中需要處理對方發(fā)送過來的數(shù)據(jù)、發(fā)起的連接,而我方并不知道對方會何時進行什么樣的操作,這就使得協(xié)議處理起來較為復(fù)雜。另外一個原因是單片機TCP/IP協(xié)議棧的穩(wěn)定性是以非常重要的問題,一個穩(wěn)定的協(xié)議棧需要在實際應(yīng)用中經(jīng)過長時間的測試,所以編寫一個穩(wěn)定的單片機TCP/IP協(xié)議棧更加困難。為此另外一種選擇就是使用現(xiàn)有的TCP/IP協(xié)議棧。
1. eCos單片機TCP/IP協(xié)議棧:eCos TCP/IP棧是涉及與eCos操作系統(tǒng)/內(nèi)核一起運行的。eCos(和TCP/IP棧)由大量處理其結(jié)構(gòu)支持。eCos TCP/IP棧當前發(fā)布了一個測試版,作為一個單獨的模塊。
2. ZLIP 51單片機TCP/IP協(xié)議棧:ZLIP是專門為51單片機設(shè)計的嵌入式TCP/IP協(xié)議棧,可以在有操作系統(tǒng)和沒有操作系統(tǒng)情況下運行,具有代碼量適中、運行速度快、用戶接口簡單、兼容BSD socket接口的特點。實現(xiàn)了TCP、UDP、ICMP、ARP協(xié)議,ZLWeb實現(xiàn)了HTTP協(xié)議。支持多TCP連接、多UDP連接同時運行,支持在uc/os-II操作系統(tǒng)下多任務(wù)運行數(shù)據(jù)收發(fā)??梢杂糜?1單片機TCP/IP上網(wǎng)解決方案。
3. uc/ip 單片機TCP/IP協(xié)議棧:uC/IP(mew-kip)是為為控制其設(shè)計的一個TCP/IP協(xié)議棧。代碼基于BSD(很像所有其它棧)但對非常小的覆蓋范圍功能有所減少。它當前為Linux和DOS目標而建。
4. BSD 單片機TCP/IP協(xié)議棧:BSD棧歷史上是其他商業(yè)棧的開始點,大多數(shù)專業(yè)TCP/IP棧(如帶Wind-River VxWorks內(nèi)核的)是BSD棧派生的。這是因為BSD在BSD許可協(xié)議下提供了他們的棧,它們的許用證使你能以修改或未修改的形式結(jié)合它們的代碼而無須向創(chuàng)建者付版稅。與GPL許用證相比,如果你結(jié)合GPL源代碼,后者要求你的GPL中公開你的源代碼。
5. lwIP 單片機TCP/IP協(xié)議棧:lwIP(輕型)TCP/IP棧是TCP/IP協(xié)議棧的一個小型實現(xiàn)。它包括帶IP和ICMP的TCP和UDP傳輸層。還提供一個可選的BSD套接字API。為了性能,還包括一個零拷貝API。LwIP協(xié)議棧是為嵌入式系統(tǒng)設(shè)計的并能適合40KB的ROM和幾百字節(jié)的RAM。為了可移植性它用C編寫。
6. uIP 單片機TCP/IP協(xié)議棧:uIP是專門為8位和16單片機設(shè)計的一個非常小的TCP/IP協(xié)議棧。uIP完全用C編寫,以此可以移植到各種不同的結(jié)構(gòu)和操作系統(tǒng)上。一個編譯的棧可以有幾KB ROM或幾百字節(jié)RAM中運行。uIP還包括一個HTTP服務(wù)器作為服務(wù)內(nèi)容。
7. TinyTCP 單片機TCP/IP協(xié)議棧:TinyTCP棧是TCP/IP的一個非常小的簡單的實現(xiàn),它包括一個FTP客戶。TinyTCP是為燒入ROM設(shè)計的并且對大端結(jié)構(gòu)似乎是有用的(初始目標是68000芯片)。TinyTCP也包括一個簡單的以太網(wǎng)驅(qū)動器用于3Com多總線卡。
8. WATTCP 單片機TCP/IP協(xié)議棧:WATTCP是為嵌入基于DOS的系統(tǒng)而設(shè)計的一個小型TCP/IP棧。它包括一個Real Mode DOS版本和另一個32位擴展環(huán)境版本。
用戶在拿到一個單片機TCP/IP協(xié)議棧以后該如何處理呢。其中的處理分為兩個部分:上層接口和下層接口。
4. 1 上層接口
用戶使用單片機TCP/IP的目的實際非常明了,就是要實現(xiàn)數(shù)據(jù)的傳送,即從PC機(或者另一個單片機)上傳送過來的數(shù)據(jù)能夠在本地單片機上接收,反之亦然。所以如果屏蔽底層的話,單片機TCP/IP協(xié)議棧就是一個傳輸數(shù)據(jù)的手段。所以最后歸結(jié)到了使用send()、recv()函數(shù)即可。這就是使用單片機TCP/IP協(xié)議棧的核心所在。
但是事實上并沒有這么簡單,因為對于TCP需要有發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作以配合數(shù)據(jù)的傳輸。TCP/IP協(xié)議棧一般為用戶提供如下的接口:
1. 初始化協(xié)議棧和釋放協(xié)議棧的函數(shù)接口,類似Init(), Release()之類的函數(shù)。
2. 提供類似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函數(shù),用戶調(diào)用此類函數(shù)進行發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作。
3. 接受連接、接收數(shù)據(jù)、被動關(guān)閉的處理:由于此類操作是上位機發(fā)起的,所以TCP/IP協(xié)議棧必須提供一套機制來處理此類事件的發(fā)生。一般來說有兩種方法:
a) 主動等待:例如使用BSD的recv()函數(shù)等待數(shù)據(jù)的到來。
b) 回調(diào)機制:采用類似MFC的OnReceive()函數(shù)的回調(diào)機制,也即是說在接收到數(shù)據(jù)的時候會自動調(diào)用OnReceive()函數(shù)。
那么用戶如何使用以上的接口來實現(xiàn)遠程控制、遠程數(shù)據(jù)采集呢?方法很簡單。
例如如果需要實現(xiàn)一個對LED燈的亮和滅的遠程控制應(yīng)用。首先PC機使用TCP/IP發(fā)送工具例如SocketDlgTest程序發(fā)送一個字節(jié)的“1”到開發(fā)板(根據(jù)開發(fā)板的IP地址發(fā)送)。開發(fā)板在OnReceive函數(shù)中發(fā)現(xiàn)收到的是“1”,那么就通過P1端口將燈打開;反之如果收到的是“0”則將燈熄滅。
如果是實現(xiàn)一個遠程數(shù)據(jù)采集的應(yīng)用,例如定時進行溫度采集。首先PC機使用SocketDlgTest程序等待發(fā)來數(shù)據(jù)。開發(fā)板每隔一段時間采集一個數(shù)據(jù),然后通過send()函數(shù)將數(shù)據(jù)發(fā)送給PC機(根據(jù)PC機的IP地址發(fā)送),這樣PC就接收到了當前的遠程溫度數(shù)據(jù)。
4. 1 下層接口
下層接口是一個比較復(fù)雜的部分,實際上是TCP/IP協(xié)議棧和底層硬件的對接問題。如果用戶將TCP/IP協(xié)議棧移植到自己的單片機系統(tǒng)上。由于硬件上存在一定的差異,就需要修改底層代碼。這里需要包括:
1.網(wǎng)卡驅(qū)動:如果TCP/IP協(xié)議棧已經(jīng)提供了網(wǎng)卡驅(qū)動,并且驅(qū)動和用戶使用的網(wǎng)卡芯片一樣,那么就相對容易一些。這里只需要修改網(wǎng)卡的基地址即可。否則需要自己動手寫驅(qū)動程序。如果網(wǎng)卡采用RTL8019AS可以參考老古開發(fā)網(wǎng)的單片機與TCP/IP網(wǎng)絡(luò)。如果網(wǎng)卡采用CS8900,可以參考《嵌入式 TCP/IP 協(xié)議單片機技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用》
2.TCP/IP底層接口。一般單片機TCP/IP需要底層為其提供定時中斷、網(wǎng)卡中斷處理的入口。底層需要做相應(yīng)的處理。
在單片機上實現(xiàn)TCP/IP與在PC機上實現(xiàn)TCP/IP是有所不同的,參考《TCP/IP1單片機上的實現(xiàn)特點和方法》我們可以了解到,它的特點是:
1. 速度慢:根據(jù)該文檔的介紹12M晶振的51單片機的最快網(wǎng)絡(luò)傳送速度為25KB/s。其中的關(guān)鍵在于TCP/IP需要對傳送的每個字節(jié)進行校驗和計算,以及必要的拷貝。這樣51單片機的處理速度就不夠了。為了提高單片機TCP/IP的速度一般的方法是要對協(xié)議棧進行精簡。
2. 程序存儲空間和外部RAM空間不大:一般的單片機的最大程序和數(shù)據(jù)空間為64KB。TCP/IP協(xié)議一般需要對發(fā)送的數(shù)據(jù)進行緩存,而一個最大的數(shù)據(jù)包就有1500B左右,當網(wǎng)絡(luò)速度很大的時候內(nèi)存消耗將很大。對于非嵌入式TCP/IP協(xié)議棧,64KB的程序和數(shù)據(jù)空間是不夠的。
3. 單片機體系結(jié)構(gòu):51單片機是8位機,所以對于需要完成同一個數(shù)據(jù)操作,32位的PC機可能只需要10條指令,而51單片機可能需要幾百條指令。
沒用過這款單片機,看門狗復(fù)位有可能出現(xiàn)這種情況,你試試led=1; _delay(250000); led=1; _delay(250000);讓它一直高電平或者低電平,看會不會出現(xiàn)錯誤,...
你指的“不對”是什么不對?是產(chǎn)生的脈沖頻率不對?還是脈寬不對?還是程序運行不對?常量20與變量Z是有本質(zhì)差別的,程序運行的效果有差別也就是正?,F(xiàn)象。原因是:TH0=(65536-5*20)/256; ...
樓主,單片機的定義:就是相當于電腦CPU的簡化版。根據(jù)CORE(內(nèi)核)可分為:如8051內(nèi)核稱為51系列單片機;如arm7內(nèi)核稱為ARM7系列單片機;如arm920T.940T/926內(nèi)核稱為ARM9...
格式:pdf
大?。?span id="2euutre" class="single-tag-height">1.0MB
頁數(shù): 2頁
評分: 4.5
嵌入式TCP_IP協(xié)議單片機技術(shù)在網(wǎng)絡(luò)通信中的應(yīng)用
格式:pdf
大小:1.0MB
頁數(shù): 3頁
評分: 4.4
本文介紹了利用STC89C58RD+單片機做為主控芯片,GPRS模塊SIM300做為短消息接收器的LED條形圖文顯示屏系統(tǒng)的軟硬件設(shè)計。其中,單片機相當于整個系統(tǒng)的"神經(jīng)中樞",既要在AT命令下通過串口讀和刪除GPRS模塊收到的短消息并進行處理,又要控制條形屏顯示相應(yīng)的信息。
目前單片機上網(wǎng)技術(shù)是一個熱門技術(shù),很多高校學(xué)生選擇與此相關(guān)的畢業(yè)設(shè)計,同時高校也有與此相關(guān)的項目。為了快速實現(xiàn)單片機TCP/IP,可以通過使用單片機TCP/IP開發(fā)板來實現(xiàn)。一般一個單片機TCP/IP開發(fā)板需要包含如下的內(nèi)容:
1. 單片機TCP/IP協(xié)議棧:用戶可以根據(jù)協(xié)議棧提供的用戶接口來實現(xiàn)TCP的發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作。最好是該協(xié)議棧能夠兼容BSD socket接口。
2. 硬件電路板及其相關(guān)連接線:用此硬件可以建立嵌入式TCP/IP實驗環(huán)境。
3. 硬件原理圖:這可以方便用戶將相關(guān)硬件集成到自己的電路板中。
4. 配套開發(fā)工具:在嵌入式TCP/IP實驗環(huán)境中必須要有PC機端的軟件,用以和開發(fā)板進行通信。
下面介紹如何使用TCP/IP開發(fā)板來進行項目開發(fā)。
3. 1 開發(fā)板套件
為了建立單片機TCP/IP開發(fā)環(huán)境,需要一套開發(fā)套件,一般包含有:①開發(fā)板。②開發(fā)板光盤。③USB線。④對連網(wǎng)線。⑤普通網(wǎng)線。⑥串口線。其中TCP/IP協(xié)議棧相關(guān)資料在②開發(fā)板光盤上,③USB線一般用于從PC機USB端口獲得電。網(wǎng)線用于和PC機通信,⑥串口線用于和PC機串口通信。
3. 2 開發(fā)板部件
一個開發(fā)板本身是一個單片機系統(tǒng),包含有CPU、RAM、電源模塊、網(wǎng)絡(luò)模塊。網(wǎng)絡(luò)模塊有很多選擇,這里以RTL8019AS為例來說明。對于外部接口,最主要的是:⑨網(wǎng)線接口和⑩串口,它們是開發(fā)板和PC連接的接口。
3. 3 建立開發(fā)環(huán)境
建立單片機TCP/IP開發(fā)環(huán)境的步驟有如下幾步:
1. 連線:連線是將開發(fā)板與PC機的串口連接,給開發(fā)板上電,然后將開發(fā)板連接到和PC在同一個網(wǎng)段中。
2. 安裝軟件:需要安裝開發(fā)板的編譯環(huán)境。對于51單片機,一般選用KeilC51作為編譯器。設(shè)置IP地址,由于必須要求PC機和開發(fā)板處于同一個網(wǎng)段,所以需要將PC機的IP地址設(shè)置為開發(fā)板IP地址的同一個網(wǎng)段的IP地址(有時候也需要設(shè)置為特定的IP地址)。
3. 測試連接:一般可以通過PING命令,例如ping 192.168.0.2 –t來測試開發(fā)板和PC機的網(wǎng)絡(luò)是否處于連通狀態(tài)。
3. 3 開發(fā)基于開發(fā)板的新程序
這里介紹如何在不修改開發(fā)板硬件的基礎(chǔ)上,開發(fā)自己的單片機TCP/IP程序。開發(fā)新程序就是在開發(fā)板提供的TCP/IP協(xié)議棧的基礎(chǔ)上開發(fā)應(yīng)用層的協(xié)議。由于TCP層和IP層都已經(jīng)提供,所以用戶不用考慮其中的運行機制。TCP/IP協(xié)議棧一般為用戶提供如下的接口:
1. 初始化協(xié)議棧和釋放協(xié)議棧的函數(shù)接口,類似Init(), Release()之類的函數(shù)。
2. 提供類似BSD socket的socket, sendto, recvfro, connect, bind, listen, accept, send, recv, closesocket, shutdown, getpeername, getsockname, htonl, htons, ntohl, ntohs, inet_addr,inet_ntoa,ioctlsocket,setsockopt, getsockopt,select等API函數(shù),用戶調(diào)用此類函數(shù)進行發(fā)起連接、接受連接、發(fā)送數(shù)據(jù)、接收數(shù)據(jù)、關(guān)閉連接等操作。
3. 接受連接、接收數(shù)據(jù)、被動關(guān)閉的處理:由于此類操作是上位機發(fā)起的,所以TCP/IP協(xié)議棧必須提供一套機制來處理此類事件的發(fā)生。一般來說有兩種方法:
a) 主動等待:例如使用BSD的recv()函數(shù)等待數(shù)據(jù)的到來。
b) 回調(diào)機制:采用類似MFC的OnReceive()函數(shù)的回調(diào)機制,也即是說在接收到數(shù)據(jù)的時候會自動調(diào)用OnReceive()函數(shù)。
那么用戶如何使用以上的接口來實現(xiàn)遠程控制、遠程數(shù)據(jù)采集呢?方法很簡單。
例如現(xiàn)在需要實現(xiàn)一個對LED燈的亮和滅的遠程控制應(yīng)用。首先PC機使用TCP/IP發(fā)送工具例如SocketDlgTest程序發(fā)送一個字節(jié)的“1”到開發(fā)板(根據(jù)開發(fā)板的IP地址發(fā)送)。開發(fā)板在OnReceive函數(shù)中發(fā)現(xiàn)收到的是“1”,那么就通過P1端口將燈打開;反之如果收到的是“0”則將燈熄滅。
如果是實現(xiàn)一個遠程數(shù)據(jù)采集的應(yīng)用,例如定時進行溫度采集。首先PC機使用SocketDlgTest程序等待發(fā)來數(shù)據(jù)。開發(fā)板每隔一段時間采集一個數(shù)據(jù),然后通過send()函數(shù)將數(shù)據(jù)發(fā)送給PC機(根據(jù)PC機的IP地址發(fā)送),這樣PC就接收到了當前的遠程溫度數(shù)據(jù)。
4. 3 開發(fā)基于新硬件的程序
通過“開發(fā)基于開發(fā)板的新程序”一節(jié)的介紹后,開發(fā)基于新硬件的程序就相對容易了。這只要根據(jù)相應(yīng)的硬件調(diào)整通過單片機的控制端口例如P1進行控制或者數(shù)據(jù)采集即可。
2. 1 各類開發(fā)板
目前單片機TCP/IP一般有面向16位和32位的單片機的LWIP、面向8位單片機的uIP、面向51單片機的ZLIP等。目前51單片機上的TCP/IP協(xié)議棧以uIP和ZLIP為主,目前uIP的最高版本為V1.0,ZLIP的最高版本為ZLIP增值版V1.0。
2. 2 選擇注意事項
作為單片機上網(wǎng)技術(shù)學(xué)習(xí)者,選擇一款合適的開發(fā)板對于學(xué)習(xí)是事半功倍的,選擇開發(fā)板時應(yīng)該注意以下問題:
1. 價格考慮。TCP/IP開發(fā)板的最主要的東西在于TCP/IP協(xié)議棧本身,硬件的成本可以做得很低,所以不要因為低價而忽略了核心軟件。對于TCP/IP協(xié)議??梢詮娜缦路矫婵紤]:
a) 穩(wěn)定性:商家提供的TCP/IP協(xié)議棧是否有全面的測試,是否在連續(xù)PING的情況下不斷線,是否在發(fā)送接受大數(shù)據(jù)量(例如10M以上)時不丟失任何字節(jié)?對于使用者來說如果協(xié)議棧不穩(wěn)定,那么對于項目的順利開發(fā)將帶來很大麻煩。
b) 易用性:使用單片機TCP/IP開發(fā)板的用戶一般都對于嵌入式TCP/IP的使用不太了解,這就需要開發(fā)板提供更加完善的資料和使用手冊。包括函數(shù)定義、更多的例子程序等。
c) 廠家的技術(shù):某些廠家只是仿冒他人的開發(fā)板,用戶在使用中遇到的問題根本無法給于解答。這就需要用戶問清楚該協(xié)議棧是否是廠家自己設(shè)計的。
2. 外包裝和質(zhì)量保證:外包裝不好可是使得用戶收到時,開發(fā)板已經(jīng)在運輸過程中受損而無法使用。