肖 軍 韓黨群 儲(chǔ)海燕 畢 楊
摘 要:分析嵌入式TCP/IP協(xié)議的選取原則,采用ARM芯片和網(wǎng)絡(luò)接口控制芯片設(shè)計(jì)以太網(wǎng)接口,介紹ARM芯片對(duì)網(wǎng)絡(luò)接口控制芯片的控制過(guò)程和TCP/IP協(xié)議棧處理數(shù)據(jù)包的流程,完成嵌入式TCP/IP系統(tǒng)的開(kāi)發(fā)。該系統(tǒng)可以將數(shù)據(jù)按網(wǎng)絡(luò)協(xié)議處理,實(shí)現(xiàn)數(shù)據(jù)的以太網(wǎng)傳輸。其是一套基于嵌入式實(shí)時(shí)操作系統(tǒng)的嵌入式網(wǎng)絡(luò)軟件開(kāi)發(fā)平臺(tái),即在μC/OS-Ⅱ的平臺(tái)上,實(shí)現(xiàn)ARM微處理器的TCP/IP協(xié)議,在此平臺(tái)之上,可以方便地進(jìn)行嵌入式應(yīng)用系統(tǒng)的開(kāi)發(fā)。
關(guān)鍵詞:ARM;嵌入式系統(tǒng);TCP/IP;以太網(wǎng)
中圖分類號(hào):TP273文獻(xiàn)標(biāo)識(shí)碼:B
文章編號(hào):1004 373X(2009)02 045 03
Implement of Embedded TCP/IP Protocol Based on ARM
XIAO Jun,HAN Dangqun,CHU Haiyan,BI Yang
(Xi′an Aerotechnical College,Xi′an,710077,China)
Abstract:The embedded TCP/IP protocol of selection principle is analysed,which adopts ARM chip and network interface control chip to design an ethernet interface,introduces ARM chip to pick up control process of network interface control chip and process of TCP/IP protocol stack processing data wrap,embedded TCP/IP development is finished.That system can process the data by network protocol which carries out a data deliver.Solution of the embedded system access to the network is actually a network software platform based on an embedded real-time operating systems,and applications development based on this platform must be convenient.On the platform ofμC/OS-Ⅱ,the TCP/IP protocol of ARM microprocessor is realized.
Keywords:ARM;embedded system;TCP/IP;ethernet
0 引 言
以太網(wǎng)具有通用性強(qiáng)、技術(shù)成熟、帶寬迅速增加等特性,工業(yè)控制領(lǐng)域出現(xiàn)嵌入式技術(shù),尤其是ARM技術(shù)的發(fā)展和DSP在工業(yè)控制領(lǐng)域的廣泛應(yīng)用,利用嵌入式技術(shù)實(shí)現(xiàn)以太網(wǎng)通信已經(jīng)不難見(jiàn)到。嵌入式實(shí)時(shí)操作系統(tǒng)接入網(wǎng)絡(luò)后將使遠(yuǎn)程監(jiān)測(cè)、遠(yuǎn)程控制、遠(yuǎn)程診斷和遠(yuǎn)程維護(hù)變得越來(lái)越容易。從根本上講,嵌入式設(shè)備接入網(wǎng)絡(luò),當(dāng)前基本采用基于TCP/IP的通信協(xié)議。該方案以LPC2210為核心元件研究基于ARM的嵌入式TCP/IP協(xié)議的實(shí)現(xiàn)的硬件電路,同時(shí)在μC/OS-Ⅱ平臺(tái)上編寫應(yīng)用軟件程序。下面對(duì)系統(tǒng)做詳實(shí)的闡述,并重點(diǎn)介紹嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ[1]應(yīng)用于TCP/IP時(shí)應(yīng)進(jìn)行合理的裁減。
1 系統(tǒng)硬件設(shè)計(jì)
基于ARM的嵌入式TCP/IP網(wǎng)絡(luò)通信系統(tǒng)主要包括ARM芯片和以太網(wǎng)控制器等芯片組成的以太網(wǎng)接口、驅(qū)動(dòng)軟件和嵌入式TCP/IP協(xié)議棧。硬件原理圖如圖1所示。
該方案設(shè)計(jì)相對(duì)簡(jiǎn)單,硬件電路中采用的LPC2210[2]是Philips公司推出的微處理器,帶有16 KB RAM,76個(gè)通用I/O口,12個(gè)獨(dú)立外部中斷引腳,集成有8通道的10位A/D,能夠基于芯片設(shè)計(jì)復(fù)雜的系統(tǒng)。雖然LPC2210具有較快的訪問(wèn)速度,但片內(nèi)沒(méi)有集成FLASH,所以這里擴(kuò)展1片16 Mb FLASH SST 39VF160來(lái)保存用戶程序。其架構(gòu)滿足μC/OS-Ⅱ正常運(yùn)行的基本要求。
RTL8019AS是臺(tái)灣Realtek半導(dǎo)體公司生產(chǎn)的以太網(wǎng)控制器,其性能包括:支持EthernetⅡ和IEEE802.3標(biāo)準(zhǔn);支持8/16位數(shù)據(jù)總線;內(nèi)置16 KWord的SRAM;全雙工,收發(fā)同時(shí)達(dá)到10 Mb/s;支持BNC,AUI,UTP介質(zhì)。RTL8019AS可提供100腳的TQFP封裝,減少了PCB面積,更適合于嵌入式系統(tǒng)。HR901170A是漢仁電子有限公司生產(chǎn)的RJ45接口連接器(帶網(wǎng)絡(luò)變壓器/濾波器),該連接器滿足IEEE802.3和IEEE902.3ab標(biāo)準(zhǔn),能夠較好地抑制電磁干擾。通過(guò)HR901170A系統(tǒng)就可以連接到以太網(wǎng)上。
2 嵌入式協(xié)議的選擇
TCP/IP協(xié)議[3]是一組不同層次上的多個(gè)協(xié)議的組合,通常被認(rèn)為是一個(gè)包含鏈路層、網(wǎng)絡(luò)層、傳輸層和應(yīng)用層的4層協(xié)議系統(tǒng),如圖2所示。嵌入式系統(tǒng)是為完成某種特定的功能而設(shè)計(jì)的專用系統(tǒng)。嵌入式系統(tǒng)不要求(也不可能)實(shí)現(xiàn)所有的TCP/IP協(xié)議,所以嵌入式TCP/IP是對(duì)TCP/IP協(xié)議族進(jìn)行選擇而形成的協(xié)議集合。
首先在鏈路層上,由于采用以太網(wǎng)的接入方式,系統(tǒng)必須實(shí)現(xiàn)IEEE802.3所規(guī)定的CDMA/CD(載波監(jiān)聽(tīng)多路訪問(wèn)及沖突監(jiān)測(cè))協(xié)議,CDMA/CD協(xié)議不需用戶實(shí)現(xiàn),此協(xié)議只要采用通用的NIC(Network Interface Controller,網(wǎng)絡(luò)接口控制)芯片就可支持。為了保證系統(tǒng)在以太網(wǎng)中的通信,系統(tǒng)還需實(shí)現(xiàn)ARP應(yīng)答協(xié)議,該協(xié)議用于將IP地址映射成以太網(wǎng)MAC地址。ARP協(xié)議包括ARP請(qǐng)求和ARP響應(yīng)兩部分,系統(tǒng)與其他計(jì)算機(jī)通信,就必須要支持ARP響應(yīng)。ARP請(qǐng)求在本地建立了一個(gè)IP地址到MAC地址的映射,保證了對(duì)外通信的有的放矢。RARP(逆地址解析)協(xié)議主要用于解決如何從MAC地址得到IP地址,主要用于無(wú)盤工作站中。
在網(wǎng)絡(luò)層,由于系統(tǒng)要求能夠在Internet中進(jìn)行通信,因此系統(tǒng)要實(shí)現(xiàn)IP協(xié)議。在TCP/IP協(xié)議族中,網(wǎng)絡(luò)層協(xié)議包括IP協(xié)議(網(wǎng)際協(xié)議)、ICMP協(xié)議(Internet控制報(bào)文協(xié)議)以及IGMP協(xié)議(Internet組管理協(xié)議)等。IP協(xié)議是TCP/IP族的核心協(xié)議,它使異構(gòu)網(wǎng)絡(luò)之間的通信成為可能。因此RTU等系統(tǒng)數(shù)據(jù)跨越不同的網(wǎng)絡(luò)進(jìn)行傳輸就必須要實(shí)現(xiàn)IP協(xié)議。ICMP中規(guī)定了多種協(xié)議類型和代碼,如果完全地實(shí)現(xiàn)也要耗費(fèi)不少的系統(tǒng)資源,該嵌入式系統(tǒng)中,在ICMP協(xié)議中能夠測(cè)試網(wǎng)絡(luò)的連通情況即可。
傳輸層主要是在2臺(tái)主機(jī)之間提供端到端的通信。傳輸層有2種不相同的傳輸協(xié)議:TCP(傳輸控制協(xié)議)和UDP(用戶數(shù)據(jù)報(bào)協(xié)議)。TCP是面向連接的,在不可靠的網(wǎng)絡(luò)服務(wù)上提供端到端的可靠字節(jié)流。TCP協(xié)議設(shè)計(jì)了嚴(yán)格的3次建立連接握手過(guò)程、4次關(guān)閉連接握手過(guò)程以及捎帶確認(rèn)信息并通過(guò)滑動(dòng)窗口進(jìn)行流量控制的數(shù)據(jù)傳輸過(guò)程。UDP協(xié)議是不面向連接的,它只是簡(jiǎn)單地把數(shù)據(jù)報(bào)從一臺(tái)主機(jī)發(fā)送到另一臺(tái)主機(jī),但并不保證該數(shù)據(jù)報(bào)能到達(dá)另一端,可靠性必須由應(yīng)用層來(lái)提供??紤]到系統(tǒng)中數(shù)據(jù)傳輸質(zhì)量,這里采用TCP協(xié)議。
應(yīng)用層協(xié)議主要是指用戶進(jìn)程。其包括:HTTP協(xié)議、FTP協(xié)議、POP3協(xié)議、SMTP協(xié)議、SNMP協(xié)議。
3 系統(tǒng)軟件設(shè)計(jì)
該TCP/IP網(wǎng)絡(luò)通信系統(tǒng)為了具有較好的實(shí)時(shí)性和穩(wěn)定性,采用μC/OS-Ⅱ設(shè)計(jì)系統(tǒng)軟件。在μC/OS-Ⅱ平臺(tái)上,軟件設(shè)計(jì)工作主要包括:μC/OS-Ⅱ在LPC2210上的移植和TCP/IP協(xié)議在μC/OS-Ⅱ上的實(shí)現(xiàn)以及系統(tǒng)應(yīng)用程序的編寫。
μC/OS-Ⅱ的移植[4]工作主要集中在下面幾個(gè)文件中:OS_CPU.H,OS_CPU_A.ASM,OS_CPU_C.C。另外,在INCLUDES.H中必須包括LPC2210文件LPC2210.H;OS_CFG.H用于系統(tǒng)應(yīng)用μC/OS-Ⅱ中的初始化配置。OS_CPU.H主要包括一些與處理器和編譯器相關(guān)的常量和類型定義等,而且需注意LPC2210的堆棧方向是由高到低,用OS_STK_GROWTH來(lái)設(shè)置堆棧的增長(zhǎng)方向。因此將OS_STK_GROWTH設(shè)為1。OS_CPU_A.ASM中需編寫4個(gè)匯編語(yǔ)言函數(shù):OS_TASK_SW(),OS_IntCtxSw(),OSStartHighRdy()和OSTickISR()。
以太網(wǎng)鏈路層遵循的IEEE802.3協(xié)議的CSMA/CD和CRC校驗(yàn)等功能由網(wǎng)絡(luò)控制芯片Rtl8019AS完成,LPC2210芯片則完成其他TCP/IP協(xié)議的解釋和執(zhí)行。LPC2210控制RTL8019AS完成通信任務(wù)時(shí),首先要對(duì)RTL8019AS復(fù)位,并對(duì)RTL8019AS的寄存器進(jìn)行初始化,確定發(fā)送和接收的條件,然后才能發(fā)送數(shù)據(jù)或接收數(shù)據(jù)。當(dāng)一幀數(shù)據(jù)發(fā)送結(jié)束、接收到1幀數(shù)據(jù)或出錯(cuò)等事件發(fā)生時(shí),RTL8019AS向LPC2210申請(qǐng)中斷,LPC2210響應(yīng)中斷后根據(jù)中斷狀態(tài)寄存器的內(nèi)容進(jìn)行相應(yīng)的處理。
在LPC2210內(nèi)部,ARM程序完成對(duì)數(shù)據(jù)的打包解包。系統(tǒng)復(fù)位后,系統(tǒng)首先發(fā)送ARP請(qǐng)求,建立地址映射,并內(nèi)部中斷進(jìn)行定時(shí)更新。ARM芯片根據(jù)情況將采集或收集到數(shù)據(jù)按照TCP協(xié)議或UDP協(xié)議格式打包,送入網(wǎng)卡芯片,由網(wǎng)卡芯片將數(shù)據(jù)輸出到局域網(wǎng)中。ARM芯片對(duì)數(shù)據(jù)報(bào)進(jìn)行分析,如果是ARP(物理地址解析)數(shù)據(jù)包,則程序轉(zhuǎn)入ARP處理程序。如果是IP數(shù)據(jù)包則進(jìn)一步判斷是哪個(gè)協(xié)議向IP傳送數(shù)據(jù)。如果是ICMP協(xié)議,判斷是否為Ping請(qǐng)求,是則應(yīng)答,不是丟棄該數(shù)據(jù)包;如果是TCP或UDP協(xié)議,且端口正確則按相應(yīng)的協(xié)議處理數(shù)據(jù),端口不正確丟棄數(shù)據(jù)包。TCP/IP系統(tǒng)框圖如圖3所示。
TCP/IP在μC/OS-Ⅱ上的設(shè)計(jì)結(jié)束后,剩下的工作就是編寫應(yīng)用程序。將系統(tǒng)劃分成若干個(gè)任務(wù),每個(gè)任務(wù)對(duì)應(yīng)一個(gè)獨(dú)立的無(wú)限循環(huán)的主程序,完成一個(gè)特定的功能。為簡(jiǎn)化設(shè)計(jì),應(yīng)用程序采用靜態(tài)優(yōu)先級(jí),即應(yīng)用程序在執(zhí)行的過(guò)程中各個(gè)任務(wù)優(yōu)先級(jí)保持不變。
4 結(jié) 語(yǔ)
基于ARM的嵌入式TCP/IP協(xié)議的設(shè)計(jì)方案,論述了軟、硬件的設(shè)計(jì)方法和協(xié)議的選擇。該設(shè)計(jì)方案在硬件實(shí)現(xiàn)上簡(jiǎn)潔可靠;軟件實(shí)現(xiàn)上可維護(hù)性好;可擴(kuò)展性好,有利于系統(tǒng)的后續(xù)開(kāi)發(fā),降低了系統(tǒng)設(shè)計(jì)的復(fù)雜性。實(shí)驗(yàn)證明該方案可行性強(qiáng),可以直接把系統(tǒng)的處理數(shù)據(jù)送到以太網(wǎng)上傳輸。可以看出,ARM和嵌入式TCP/IP協(xié)議將會(huì)得到更大的發(fā)展和更廣闊的應(yīng)用。
參考文獻(xiàn)
[1]Jean J Labrosse.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ[M].2版.北京:北京航空航天大學(xué)出版社,2003.
[2]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2005.
[3]周立功.ARM嵌入式系統(tǒng)軟件開(kāi)發(fā)實(shí)例(一)[M].北京:北京航空航天大學(xué)出版社,2004.
[4]任哲.嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-Ⅱ原理及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2005.
[5]杜春雷.ARM體系結(jié)構(gòu)與編程[M].北京:清華大學(xué)出版社,2003.
[6]季昱,林俊超,宋飛.ARM嵌入式應(yīng)用系統(tǒng)開(kāi)發(fā)典型實(shí)例[M].北京:中國(guó)電力出版社,2005.
[7]馬忠梅,馬廣云.ARM嵌入式處理器結(jié)構(gòu)與應(yīng)用基礎(chǔ)[M].北京:北京航空航天大學(xué)出版社,2002.
[8]王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開(kāi)發(fā)基于ARM微處理器與μC/OS-Ⅱ?qū)崟r(shí)操作系統(tǒng)[M].北京:清華大學(xué)出版社,2002.
[9]田澤.嵌入式系統(tǒng)開(kāi)發(fā)與應(yīng)用教程[M].北京:北京航空航天大學(xué)出版社,2005.
[10]肖軍,邵景峰,馬輝,等.嵌入式實(shí)時(shí)操作系統(tǒng)與網(wǎng)絡(luò)構(gòu)件的設(shè)計(jì)[J].可編程控制器與工廠自動(dòng)化,2006(10):70-72,48.
[11]邵貝貝.單片機(jī)嵌入式應(yīng)用的在線開(kāi)發(fā)方法[M].北京:清華大學(xué)出版社,2004.
作者簡(jiǎn)介 肖 軍 男,1981年出生,陜西西安人,西安航空技術(shù)高等??茖W(xué)校,助教,碩士。研究方向?yàn)榍度胧较到y(tǒng)的開(kāi)發(fā)。