基于A(yíng)RM9的無(wú)線(xiàn)數據終端的設計與實(shí)現
關(guān)鍵詞:ARM-Linux內核;AT91RM9200;無(wú)線(xiàn)數據終端;GPRS/CDMA
0.引 言
隨著(zhù)GPRS/CDMA網(wǎng)絡(luò )技術(shù)的逐步成熟,無(wú)線(xiàn)數據相關(guān)應用已經(jīng)成為當前的熱點(diǎn)應用,特別是對于電力、電信、石油、水利、地質(zhì)、和交通行業(yè)中場(chǎng)所不固定的應用場(chǎng)合,由于有線(xiàn)網(wǎng)絡(luò )的架設受到種種條件的限制,采用基于GPRS/CDMA的無(wú)線(xiàn)網(wǎng)絡(luò )技術(shù),具有無(wú)可比擬的優(yōu)勢。傳統的無(wú)線(xiàn)數據終端一般是采用“單片機+GPRS/CDMA調制解調器”的系統結構,這種結構硬件成本略低,但功能比較有限,在協(xié)議的開(kāi)發(fā)和支持上都有一定難度。而近年來(lái),以ARM為代表的嵌入式32位微處理器技術(shù)得到了飛速發(fā)展,無(wú)論是在功耗、便攜性還是在硬件成本上,許多高性能的ARM芯片已經(jīng)與單片機相差無(wú)幾,因此在許多工業(yè)應用設計中,使用ARM芯片取代傳統的8/16位單片機已經(jīng)是一個(gè)非常經(jīng)濟、理想的選擇。
無(wú)線(xiàn)數據終端系統以“高性能嵌入式微處理器+GPRS/CDMA模塊” 的系統架構取代了傳統的無(wú)線(xiàn)數據終端設計方案,此方案雖然硬件成本稍高,需要高性能嵌入式微處理器來(lái)支持嵌入式操作系統,但可以實(shí)現豐富協(xié)議接口,便于移植和向高端系統應用升級,同時(shí)更加便于數據采集與遠程監控的實(shí)現。這樣不僅可以利用ARM芯片豐富的片內、片外資源簡(jiǎn)化系統硬件結構,更為方便的是,可以通過(guò)運行嵌入式操作系統來(lái)實(shí)現豐富協(xié)議接口,減小實(shí)際應用的開(kāi)發(fā)難度且便于向高端系統應用升級。
1.硬件結構
無(wú)線(xiàn)數據終端系統是嵌入到一個(gè)工業(yè)控制系統中使用,同時(shí)綜合考慮其他相關(guān)需求和功能擴展,因此選用AT91RM9200處理器作為系統的核心處理單元,外接GPRS/CDMA模塊,作為整個(gè)系統的硬件平臺。AT91RM9200是ATMEL公司生產(chǎn)的一款高性能的基于ARM架構到32位嵌入式的ARM9芯片,AT91RM9200是一款工業(yè)級到ARM9芯片,工作溫度范圍可達-40℃~85℃,存儲溫度-60℃~150℃。CPU內嵌16KB數據Cache和16KB指令Cache,帶有MMU存儲器關(guān)聯(lián)單元,在180MHz時(shí)工作頻率下運行速度可達200MIPS.芯片內嵌10M/100M自適應以太網(wǎng)口、USB2.0協(xié)議到USB HOST和Device接口,具有多媒體卡接口MCI,3個(gè)同步串口SSC,4個(gè)USART接口以及SPI接口等,最多可達122個(gè)可編程I/O口。AT91RM9200性能穩定,功能強大,時(shí)工業(yè)控制、網(wǎng)絡(luò )通訊等應用的首選,也適合于汽車(chē)、醫藥等領(lǐng)域。圖1是無(wú)線(xiàn)數據終端系統的總體硬件結構圖。
圖1 無(wú)線(xiàn)數據終端的總體硬件結構圖
在圖1所示的硬件結構中,R232/RS485接口和RJ45網(wǎng)絡(luò )接口用來(lái)實(shí)現客戶(hù)的接口需求,與各種用戶(hù)前端設備進(jìn)行關(guān)聯(lián),GPRS/CDMA模塊提供系統的無(wú)線(xiàn)數據通信鏈路,通過(guò)UART接口和AT91RM9200通信,實(shí)現數據的無(wú)線(xiàn)傳輸。圖中的其他功能模塊實(shí)現系統所需的基本功能,整體硬件結構相對比較簡(jiǎn)單。
目前成熟的無(wú)線(xiàn)網(wǎng)絡(luò )技術(shù)中,主要有GPRS和CDMA兩種技術(shù),系統設計時(shí)可以針對不同的應用地區電信運營(yíng)商的網(wǎng)絡(luò )覆蓋情況選擇GPRS或CDMA模塊實(shí)現無(wú)線(xiàn)網(wǎng)絡(luò )的連接。其中,GPRS模塊我們采用的是目前比較流行而且最易購買(mǎi)的西門(mén)子公司的MC39i模塊(GPRS),CDMA模塊我們采用WAVECOM的Q2358C模塊(CDMA)。MC39i采用GPRS分時(shí)復用的Class 8 的標準,支持EGSM900和GSM1800雙頻,它具有TC35的全部功能并且很容易集成。該GPRS模塊接收速率可以達到86.20kbps,發(fā)送速率可以達到21.5kbps。接口為40pin,包括電源、3V SIM卡、RS232接口、語(yǔ)音、控制等管腳/50Ω天線(xiàn)接口。CDMA模塊選用Wavecom公司的Q2358C模塊,它是一個(gè)單頻800MHZ,CDMA20001xRTT模塊, RS-232和聲音通過(guò)15pin接口連接,電源通過(guò)4pin接都相連,含有SMA天線(xiàn)接口和活動(dòng)UIM插槽,可以通過(guò)通過(guò)AT指令進(jìn)行控制。本應用設計時(shí)主要使用了三個(gè)接口,即電源接口、SIM接口和串行接口。GPRS/CDMA模塊包含完整的SIM接口信號和一個(gè)完整的全功能串口,因此模塊的SIM接口和串口的連接非常簡(jiǎn)單,直接將模塊的接口與ARM系統的對應接口連接即可。
2.軟件平臺
2.1 構建可移植嵌入式Linux系統
無(wú)線(xiàn)數據終端的軟件開(kāi)發(fā)一般分為兩部分,即系統軟件的移植與配置和高級應用程序的開(kāi)發(fā),其中前者是后者實(shí)現的基礎。嵌入式Linux是目前廣泛應用的一種嵌入式操作系統,嵌入式Linux針對嵌入式系統的特點(diǎn),對Linux的內核進(jìn)行了修改和重新編譯,包含了Linux常用的API,保留了Linux系統原有的強大的網(wǎng)絡(luò )功能,高穩定性,豐富的文件系統支持功能。
采用的微處理器AT91RM9200 內部帶有MMU,所以采用ARM Linux,使用Linux2.4.18內核,他的特點(diǎn)主要是給內部帶有存儲管理單元MMU 的處理器提供良好的支持。硬件系統主要芯片包括:CPU 采用ATMELARM9處理器AT91RM9200;內存芯片為現代HY57V641620; FALSH 采用SST39VF160;BOOT FLASH 為ATMEL AT29C010;由于A(yíng)T91RM9200內嵌一個(gè)以太網(wǎng)控制器,支持媒體獨立接口MII和帶緩沖DMA接口,可在半雙工或全雙工模式下提供情報10/100Mb/s的以太網(wǎng)接入。兼容IEEE802.3MAC控制層協(xié)議。同時(shí),為滿(mǎn)足系統的無(wú)線(xiàn)數據終端的應用需求,還對系統源代碼進(jìn)行了改進(jìn),利用AT91RM9200芯片支持DMA機制,對串口驅動(dòng)代碼進(jìn)行改寫(xiě),將數據收發(fā)方式由原先的字節中斷改為DMA方式,這樣便可以通過(guò)避免大量的CPU計算開(kāi)銷(xiāo)來(lái)提高核心處理單元與GPRS模塊間通信的吞吐量。
2.2 ARM-Linux內核功能設計
GPRS/CDMA的網(wǎng)絡(luò )連接是無(wú)線(xiàn)數據終端的基礎功能,它是通過(guò)PPP(點(diǎn)對點(diǎn)協(xié)定)協(xié)議來(lái)完成的。PPP是在串行連接的數據鏈路實(shí)現IP以及其他網(wǎng)絡(luò )協(xié)議的一種機制。同時(shí)為節省成本,無(wú)線(xiàn)數據終端常常是作為一個(gè)無(wú)線(xiàn)路由網(wǎng)關(guān)來(lái)使用,即內部局域網(wǎng)計算機能夠通過(guò)它透明訪(fǎng)問(wèn)Internet。嵌入式Linux的網(wǎng)絡(luò )體系結構繼承了Linux網(wǎng)絡(luò )系統具有穩定、高效和功能齊全的優(yōu)點(diǎn),同時(shí)按照應用的需要進(jìn)行了適當的移植和配置就能滿(mǎn)足要求,在完成相關(guān)內核修改后,需要重新編譯內核。
(1)增加ARM-Linux內核的NAT支持。內核中與NAT相關(guān)的配置都在“Networking options”菜單下,一般需要選中的選項包括:“Network packet filtering (replaces ipchains)”選項和“IP: Netfilter Configuration”子菜單中與NAT規則相關(guān)的配置,其他選項則根據應用需求來(lái)選擇。另外,還需要選中內核的“/proc file system support”和“Sysctl support”選項,這樣系統運行時(shí)才可以通過(guò)Sysctl接口來(lái)動(dòng)態(tài)更改內核參數。
(2)增加ARM-Linux內核的PPP支持。內核中與PPP協(xié)議相關(guān)的配置選項都包含在“Network device support”選項下,需要選中的選項包括PPP協(xié)議支持、PPP異步/同步串口通信以及PPP壓縮等。
(3)移植IPTables和PPP應用程序。IPTables是Linux系統上用來(lái)創(chuàng )建NAT規則的一個(gè)開(kāi)源的工具程序,從網(wǎng)絡(luò )上可以下載其源碼。PPPD是PPP的一個(gè)應用程序,為PPP提供一種在點(diǎn)對點(diǎn)串行線(xiàn)路上傳輸數據流的方法,而Chat則是PPPD一個(gè)配套程序,它用來(lái)?yè)芴柌⒌却崾?,然后根據提示輸入用?hù)名和密碼等登陸信息??梢詮木W(wǎng)絡(luò )上下載IPTables和PPP源碼,然后根據源代碼版本使用相應版本的ARM-Linux交叉編譯器進(jìn)行編譯,便可以得到相應二進(jìn)制程序。
(4)編寫(xiě)聯(lián)網(wǎng)撥號腳本文件,調試GPRS/CDMA聯(lián)網(wǎng), 完成系統利用成熟GPRS/CDMA技術(shù)的網(wǎng)絡(luò )連接。
3.系統實(shí)現
通過(guò)對完善增加ARM-Linux內核的功能后,ARM-Linux內核已經(jīng)具有了PPP和NAT功能,同時(shí)通過(guò)編寫(xiě)聯(lián)網(wǎng)撥號腳本,完成與GPRS/CDMA網(wǎng)絡(luò )連接之后,需要根據設備的具體應用需求開(kāi)發(fā)相關(guān)的應用程序。
3.1 NAT配置
嵌入式Linux是一種開(kāi)發(fā)源代碼、軟實(shí)時(shí)、多任務(wù)的嵌入式操作系統,通常它是在標準的Linux的基礎上針對嵌入式系統進(jìn)行裁減和優(yōu)化后形成的,而且裁減和優(yōu)化后的Linux體積更小,性能更加穩定,因此在許多實(shí)際應用中都使用網(wǎng)絡(luò )地址轉化技術(shù)(NAT)這種最為簡(jiǎn)單、常用的方式。
NAT技術(shù)本質(zhì)上是通過(guò)修改IP包的源地址或目的地址來(lái)實(shí)現。如果一個(gè)節點(diǎn)執行了NAT,它會(huì )修改通過(guò)它轉發(fā)的IP包的源地址或者目的地址,并且節點(diǎn)會(huì )記住它是怎樣修改了這個(gè)包,因此當相應的應答包從另一個(gè)方向到達時(shí),它就知道如何反向修改應答包。其中,修改IP包的源地址常被稱(chēng)為IP偽裝技術(shù),當內部網(wǎng)絡(luò )節點(diǎn)作為客戶(hù)端,需要發(fā)起對Internet的訪(fǎng)問(wèn)時(shí),就可以采用這種方式。而修改IP包的目的地址中最常用的就是端口轉發(fā)技術(shù),它可以讓內部網(wǎng)絡(luò )上運行的服務(wù)器,如Web、FTP等,能夠被外部網(wǎng)絡(luò )的機器訪(fǎng)問(wèn)。
根據應用需求,制定相應的NAT規則。對于各種NAT應用,需要使用IPTables程序來(lái)設定相應的控制規則。例如,實(shí)現應用中的IP偽裝功能,在控制臺中運行下列命令:
$ echo 1 > /proc/sys/net/ipv4/ip_forward
$ iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
第一行指令是用來(lái)開(kāi)啟操作系統的IP轉發(fā)功能,如為方便開(kāi)機自動(dòng)執行也可以將命令編輯為文件firewall,然后編輯/etc/rc.d/rc.local文件,,在末尾加上/etc/rc.d/firewall以確保開(kāi)機時(shí)能自動(dòng)執行該腳本。第二條命令則是設置所有通過(guò)ppp0設備(撥號后生成的網(wǎng)絡(luò )設備)發(fā)出的數據報的源地址都使用ppp0的IP地址。這樣,與GPRS/CDMA數據相連的局域網(wǎng)內的計算機只需要將網(wǎng)絡(luò )連接的默認網(wǎng)關(guān)和DNS服務(wù)器設置成GPRS數據終端的IP地址就可以訪(fǎng)問(wèn)Internet。
而對于NAT的端口轉發(fā)功能,如假定GPRS數據終端的內部IP為192.168.0.1,通過(guò)撥號上網(wǎng)得到的IP為202.96.128.168,運行Web服務(wù)器的計算機節點(diǎn)的IP為192.168.0.100,監聽(tīng)常用的80端口。那么需要在GPRS/CDMA數據終端上進(jìn)行端口注冊,假定將該服務(wù)注冊為GPRS數據終端上的TCP 8080端口。則運行命令:
$ iptables -A PREROUTING -t nat -p tcp -i ppp0 --dport 8080 -j DNAT --to 192.168.0.100:80
完成端口注冊并開(kāi)啟IP轉發(fā)功能后,外部用戶(hù)通過(guò)訪(fǎng)問(wèn)http://202.96.128.168:8080就可以訪(fǎng)問(wèn)到內部的Web服務(wù)器了,但在一般的實(shí)際應用中都是將上述Shell命令和NAT規則編寫(xiě)為一個(gè)可執行的腳本文件,由系統啟動(dòng)后自動(dòng)調用執行。
3.2 轉換網(wǎng)關(guān)程序
在傳統的工業(yè)控制領(lǐng)域,有成千上萬(wàn)的感應器,PLC,控制器,監測器,讀卡器等RS-232/485/422串口設備,都是通過(guò)RS-232串口通信或者RS-485/42總線(xiàn)通信與PC進(jìn)行數據通信,隨著(zhù)社會(huì )需求的發(fā)展,從而要求更大的系統,更加穩定的系統,更大的數據流量的系統。使得現有的RS-232串口通信,RS-485/422總線(xiàn)通信不能滿(mǎn)足社會(huì )的需求。需要一種簡(jiǎn)單、經(jīng)濟的方式,能將這些傳統設備接入主流網(wǎng)絡(luò ),同時(shí)不需要對這些設備的結構進(jìn)行改變。當將GPRS/CDMA無(wú)線(xiàn)數據終端應用于這種需求時(shí),就必須在它上面實(shí)現串行通信轉網(wǎng)絡(luò )(TCP/IP)通信功能。
轉換網(wǎng)關(guān)程序實(shí)際上就是在GPRS/CDMA無(wú)線(xiàn)數據終端完成串行通信轉網(wǎng)絡(luò )(TCP/IP)通信功能模塊,能夠將串行通信數據以TCP/IP包的形式發(fā)出,而將收到的TCP/IP數據包用串行通信的方式傳輸,完成相互間的透明轉換。在許多應用中,需要通過(guò)無(wú)線(xiàn)終端與Internet網(wǎng)絡(luò )上服務(wù)器進(jìn)行網(wǎng)絡(luò )通信。轉換的實(shí)現方法如下:
⑴ 通過(guò)配置文件或者命令行參數的方式得到所需的各種配置參數,包括串口設置參數,如波特率、數據位、停止位、奇偶校驗、流控等,以及網(wǎng)絡(luò )通信的設置參數,如網(wǎng)絡(luò )通信協(xié)議、服務(wù)端口等等;
⑵ 根據串口設置參數進(jìn)行相應的系統串口設置;
⑶ 根據網(wǎng)絡(luò )通信設置,建立Socket,如果網(wǎng)絡(luò )通信采用的是TCP協(xié)議,還需要預先建立網(wǎng)絡(luò )連接。
⑷ 使用Linux的select機制,不斷檢查Socket和串口是否可以發(fā)送和接收。程序必須同時(shí)維持兩個(gè)緩存區,一個(gè)是Socket數據緩存,另一個(gè)是串口數據緩存。如果Socket有數據獲得就放入串口數據緩存中,串口有數據獲得就放入Socket數據緩存。如果Socket或串口可以發(fā)送,就將相應的緩存數據發(fā)送出去。
編寫(xiě)完成上述程序運行后,無(wú)線(xiàn)數據終端便充當了串行通信設備與以太網(wǎng)之間的通信轉換器的角色,實(shí)現了兩者間的信息交互。
4.結束語(yǔ)
本文在A(yíng)RM9的嵌入式Linux平臺上,詳細介紹了基于A(yíng)T91RM9200的無(wú)線(xiàn)數據終端的實(shí)現,利用嵌入式Linux系統下的網(wǎng)絡(luò )通信設計, 通過(guò)對Linux的內核進(jìn)行了修改和重新編譯后,增加了相應的PPP和NAT功能,憑借ARM9的良好性能,以及Linux在嵌入式系統和網(wǎng)絡(luò )通信上的優(yōu)勢,編寫(xiě)實(shí)現串行通信轉網(wǎng)絡(luò )的轉換網(wǎng)關(guān)程序。本系統的設計在其他嵌入式設備上的無(wú)線(xiàn)應用方面有一定的應用價(jià)值和指導意義。本文作者創(chuàng )新點(diǎn)充分利用了ARM豐富的硬件資源簡(jiǎn)化了系統結構,并通過(guò)對嵌入式Linux系統核心編譯增加對NAT和PPP的支持,同時(shí)移植成熟的IPTables和PPP應用程序,實(shí)現應用系統的結構簡(jiǎn)化,實(shí)現簡(jiǎn)單,功能實(shí)用。
作者簡(jiǎn)介:張宗平(1977-),男, 廣東南雄人,廣東出入境檢驗檢疫局信息中心工程師。主要研究方向為:DSS系統相關(guān)及OLTP業(yè)務(wù)系統建設、維護,嵌入式系統應用技術(shù)等。
Biography: ZHANG,Zongping,(1977-),Male,Nanxiong guangdong,The engineer of Computer Information Center,Guangdong Entry/Exit Inspection and Quarantine Bureau of the P.R.China.His research interest include DSS,The establishment and maintenance of OLTP,The Application of Embedded System Technology .
cdma相關(guān)文章:cdma原理
評論