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