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