TCP/IP協(xié)議在VRS51單片機(jī)上的實現(xiàn)
隨著人們對信息化程度的要求不斷提高, 設(shè)備上網(wǎng)已經(jīng)成為一個趨勢。32位機(jī)資源豐富,上網(wǎng)方案也較為成熟,但成本相對較高,因而價位偏低的8位機(jī)上網(wǎng)方案成為研究的熱點(diǎn)。但是,8位機(jī)資源有限,因此在實現(xiàn)8位機(jī)以太網(wǎng)連接時,一定要考慮周全。本文介紹在VRS51L3074上實現(xiàn)TCP/IP協(xié)議棧uIP的移植,成功實現(xiàn)了socket通信。
硬件平臺
本方案的硬件平臺主要由VRS51L3074和CS8900A組成,經(jīng)網(wǎng)絡(luò)變壓器的隔離,CS8900A與網(wǎng)絡(luò)接口RJ-45連接上,這樣整個系統(tǒng)就可以連接到Ethernet。數(shù)據(jù)輸入可由串口傳遞給系統(tǒng)。
VRS51L3074簡介
VRS51L3074是Ramtron公司最新推出的單周期、基于8051內(nèi)核、功能豐富的SOC單片機(jī),是全球第一款集成FRAM的高性能單片機(jī)。CPU最高處理速度可達(dá)40MIPS,內(nèi)置64kB Flash存儲器支持ISP、IAP功能、4kB+256B的SRAM以及8kB的FRAM,帶有完全可配置的I2C接口和SPI接口等片內(nèi)外設(shè),支持JTAG下載和非侵入式在線調(diào)試。VRS51系列單片機(jī)和8051完全兼容,支持SDCC、Keil等C編譯器,編譯和下載時需要一些特殊的配置。Versa Ware JTAG軟件是VRS51系列單片機(jī)的下載工具,和Keil uVision配合使用時需要一些配置。
CS8900A簡介
CS8900A是CIRRUS LOGIC公司的一種低價位、高集成度、低功耗、全雙工的16bit以太網(wǎng)控制器,是一款專門為嵌入式系統(tǒng)設(shè)計優(yōu)化的以太網(wǎng)控制器。該芯片的突出特點(diǎn)就是使用靈活,其物理層接口、數(shù)據(jù)傳輸模式、工作模式都能根據(jù)需要而進(jìn)行動態(tài)配置,可通過內(nèi)部寄存器的配置來適應(yīng)不同的應(yīng)用環(huán)境。CS8900A有三種工作模式:I/O模式、存儲器模式和DMA模式。
CS8900A基本工作原理是:在收到由主機(jī)發(fā)來的數(shù)據(jù)報后,偵聽網(wǎng)絡(luò)線路。如果線路忙,它就等到線路空閑為止,否則立即發(fā)送該數(shù)據(jù)幀 。發(fā)送過程中,首先它添加以太網(wǎng)幀頭(包括先導(dǎo)字段和幀開始標(biāo)志),然后生成CRC校驗碼,最后將此數(shù)據(jù)幀發(fā)送到以太網(wǎng)上。接收時,它將從以太網(wǎng)收到的數(shù)據(jù)幀在經(jīng)過解碼、去掉幀頭和地址檢驗等步驟后緩存在片內(nèi)。通過CRC校驗后,它會根據(jù)初始化配置情況,通知主機(jī)CS8900A收到了數(shù)據(jù)幀,最后用某種傳輸模式傳到主機(jī)的存儲區(qū)中。
嵌入式TCP/IP協(xié)議棧uIP
TCP/IP是一個協(xié)議族,它是一個四層協(xié)議模型,包括應(yīng)用層、傳輸層、網(wǎng)絡(luò)層和網(wǎng)絡(luò)接口層。應(yīng)用層定義清晰的會話過程,HTTP、FTP、Telnet和SMTP等都屬于應(yīng)用層協(xié)議;傳輸層提供端到端的通信,該協(xié)議有傳輸控制協(xié)議(TCP)和用戶數(shù)據(jù)報協(xié)議(UDP);網(wǎng)絡(luò)層負(fù)責(zé)數(shù)據(jù)打包和邏輯尋址,IP、ICMP和ARP等協(xié)議都屬于網(wǎng)絡(luò)層;網(wǎng)絡(luò)接口層負(fù)責(zé)在源和目的節(jié)點(diǎn)間線路上進(jìn)行無差錯的傳輸數(shù)據(jù),具有流量控制等功能。
TCP/IP協(xié)議較為復(fù)雜,實現(xiàn)起來非常困難,一般都采用現(xiàn)有的TCP/IP協(xié)議棧來實現(xiàn)。本系統(tǒng)就是采用源碼開放的免費(fèi)嵌入式TCP/IP協(xié)議棧uIP來實現(xiàn)TCP/IP協(xié)議的。
uIP是專門為8位和16位嵌入式微控制器設(shè)計的微型TCP/IP協(xié)議棧 , 它是由瑞典計算機(jī)學(xué)院的Adam Dunkels開發(fā)的免費(fèi)開源軟件,最新版本為uIP1.0。uIP完全是由C語言編寫的,因此可移植到各種不同的CPU結(jié)構(gòu)和操作系統(tǒng)上。uIP提供了網(wǎng)絡(luò)通信所必須的協(xié)議,本身代碼和占用的內(nèi)存數(shù)都非常少,uIP的源代碼只有幾kB,RAM僅占用幾百字節(jié)。uIP具有如下特點(diǎn):
1)完整的說明文檔和公開的源代碼,全部由C編寫,并附有詳細(xì)的注釋,便于移植。
2)極少的代碼占用量和RAM資源要求,尤其適合于8/16位單片機(jī)。
3)支持IP、ARP、TCP、ICMP和UDP等基本功能。
4)高度的可配置性以適應(yīng)不同資源條件和應(yīng)用場合。
5)支持多個主動連接和被動連接并發(fā),支持連接的動態(tài)分配和釋放。
6)簡易的應(yīng)用層接口和設(shè)備驅(qū)動層接口。
7)完善的示例程序和協(xié)議實現(xiàn)范例。
為了節(jié)省資源占用,簡化應(yīng)用接口,uIP1.0在內(nèi)部實現(xiàn)上做了特殊處理。
1)注意各模塊的融合,減少處理函數(shù)的個數(shù)和調(diào)用次數(shù),提高代碼復(fù)用率以減少ROM占用。
2)基于單一全局?jǐn)?shù)組的收發(fā)數(shù)據(jù)緩沖區(qū),不支持內(nèi)存動態(tài)分配,由應(yīng)用負(fù)責(zé)處理收發(fā)的數(shù)據(jù)。
3 )基于事件驅(qū)動的應(yīng)用程序接口,各并發(fā)連接采用輪循處理,僅當(dāng)網(wǎng)絡(luò)事件發(fā)生時,由uIP內(nèi)核喚起應(yīng)用程序處理,這樣uIP用戶只須關(guān)注特定應(yīng)用就可以了。傳統(tǒng)的TCP/IP實現(xiàn)一般要基于多任務(wù)處理環(huán)境,而大多數(shù)8位機(jī)系統(tǒng)不具備這個條件。
4)應(yīng)用程序主動參與部分協(xié)議棧功能的實現(xiàn)(如TCP的重發(fā)機(jī)制,數(shù)據(jù)包分段和流量控制),由uIP內(nèi)核設(shè)置重發(fā)事件,應(yīng)用程序重新生成數(shù)據(jù)提交發(fā)送,免去了大量內(nèi)部緩存的占用。基于事件驅(qū)動的應(yīng)用接口使得這些實現(xiàn)較為簡單。
uIP實現(xiàn)了TCP/IP協(xié)議族的四個基本協(xié)議:ARP(地址解析協(xié)議),IP(網(wǎng)際協(xié)議),ICMP(因特網(wǎng)信息控制協(xié)議)和TCP(傳輸控制協(xié)議),UDP協(xié)議是可選模塊。
IP(Internet Protocol網(wǎng)際協(xié)議)是TCP/IP協(xié)議族中最為核心的協(xié)議,提供不可靠的無連接的數(shù)據(jù)報傳送服務(wù)。所有的TCP、UDP、ICMP及IGMP數(shù)據(jù)都是以IP數(shù)據(jù)報格式傳輸?shù)?。uIP的IP協(xié)議主要負(fù)責(zé)封裝TCP幀、驗證輸入包IP頭的正確性、接受IP數(shù)據(jù)報進(jìn)行處理并向上層協(xié)議提交以及TCP與ICMP之間的復(fù)用數(shù)據(jù)包。為了節(jié)省占用空間,uIP1.0只支持一個數(shù)據(jù)報的分片和重組。
TCP(Transmission Control Protocol)協(xié)議是傳輸層的協(xié)議之一,它提供高可靠性的數(shù)據(jù)通信。TCP的主要工作是把應(yīng)用程序交給的數(shù)據(jù)分成適當(dāng)?shù)男K交給下面的網(wǎng)絡(luò)層,確認(rèn)收到的分組,設(shè)置發(fā)送最后確認(rèn)分組的超時時鐘等。TCP是uIP重點(diǎn)實現(xiàn)的協(xié)議。為了減少存儲器空間占用,uIP沒有實現(xiàn)TCP發(fā)送和接收數(shù)據(jù)的窗口調(diào)整,且不會緩存收到的TCP段,而是立即交給應(yīng)用程序處理。重發(fā)也是由應(yīng)用程序?qū)崿F(xiàn)的。在輸出數(shù)據(jù)時,每一個連接只能有一個正在傳輸?shù)腡CP段。
51單片機(jī)相關(guān)文章:51單片機(jī)教程
tcp/ip相關(guān)文章:tcp/ip是什么
pos機(jī)相關(guān)文章:pos機(jī)原理
評論