基于嵌入式ARM處理器的M2M終端總體設(shè)計
引言
目前,對輸油管道、電力裝置、油井等進(jìn)行遠(yuǎn)程監(jiān)控主要采用人工巡邏的方式,這種方式存在實(shí)時性差、成本高、浪費(fèi)人力資源、無法對環(huán)境惡劣的地區(qū)進(jìn)行監(jiān)控、可能出現(xiàn)誤報等缺點(diǎn)。隨著工業(yè)領(lǐng)域現(xiàn)代化水平的提高和通信技術(shù)的發(fā)展,這種生產(chǎn)方式亟待得到改善。
M2M是指應(yīng)用無線移動通信技術(shù),實(shí)現(xiàn)機(jī)器與機(jī)器、機(jī)器與人之間數(shù)據(jù)通信和交流的一系列技術(shù)及其組合的總稱。GPRS具有覆蓋地域廣、通信距離遠(yuǎn)、網(wǎng)絡(luò) 可靠性高等優(yōu)點(diǎn)。隨著GPRS的推廣和應(yīng)用,以及基于GPRS的M2M產(chǎn)品的推出,采用GPRS技術(shù)來解決上述問題成為一種較好的方案。
嵌入式系統(tǒng)是當(dāng)前國內(nèi)外研究的熱點(diǎn)之一。采用嵌入式系統(tǒng)技術(shù)設(shè)計一種可以解決遠(yuǎn)程監(jiān)控領(lǐng)域數(shù)據(jù)傳輸問題的通用終端是必要的。本文重點(diǎn)闡述了基于嵌入式ARM處理器,結(jié)合GPRS模塊MC35i設(shè)計M2M終端的總體設(shè)計方案。
系統(tǒng)硬件組成
M2M終端的硬件核心為GPRS通信模塊MC35i和ARM處理器AT91SAM7S64,它們的接口設(shè)計如圖1所示。M2M終端對外留有2個 RS232串口,通過發(fā)送預(yù)先定義好的數(shù)字指令,可以實(shí)現(xiàn)M2M終端的啟動、關(guān)閉等。當(dāng)M2M終端與Internet建立連接后,只需把封裝好的數(shù)據(jù)通過 串口發(fā)送到M2M終端,由其完成向監(jiān)控中心發(fā)送數(shù)據(jù)的功能。
GPRS模塊
GPRS模塊是實(shí)現(xiàn)M2M終端平臺的核心部分,設(shè)計中采用西門子公司的GPRS通信模塊MC35i。本模塊包括CPU接口電路、SIM卡接口電路和 MC35i外圍電路,MC35i支持GPRS的四種編碼協(xié)議CS-1、CS-2、CS-3和CS-4,理論上最高傳輸速率可達(dá)172kbps。它具備完整 的GSM和GPRS功能,可以廣泛應(yīng)用在相關(guān)的M2M數(shù)據(jù)傳輸平臺上。MC35i提供了標(biāo)準(zhǔn)AT命令界面和一個RS232接口,用于與外部應(yīng)用系統(tǒng)連接。
ARM處理器
本數(shù)據(jù)傳輸平臺處理器采用ATMEL公司生產(chǎn)的32位 ARM7TDMI體系結(jié)構(gòu)處理器AT91SAM7S64,該芯片采用3.3V電壓進(jìn)行供電,支持低功耗模式,它具有64kB的FLASH和16kB的 SRAM,具備豐富的外圍設(shè)備資源,其中包括3個UART通信串口和1個USB2.0全速設(shè)備,利用本芯片完成系統(tǒng)功能的同時可以實(shí)現(xiàn)系統(tǒng)的高性價比。 CPU模塊硬件電路包括:時鐘電路、JTAG接口電路,RS232接口電路等。
電源設(shè)計
系統(tǒng)采用9V電源進(jìn)行供電,經(jīng)過TI公司LDO降壓芯片UA7805進(jìn)行一次降壓,使電壓降至5V。GPRS模塊MC35i要求的電源電壓為 3.3V~4.8V,而且要求電源必須能夠提供2A的尖峰電流,因此需要將5V電源通過一個0.7V壓降的肖特基二極管1N5819后輸入MC35i,同 時需要接入耐壓25V、1000μF的電解電容,以為MC35i提供足夠的尖峰電流,將5V電源經(jīng)過TI公司電源模塊REG1117-3.3將電壓降至 3.3V,為微處理器及其他芯片提供電源。 [!--empirenews.page--]
嵌入式軟件設(shè)計
采用嵌入式實(shí) 時操作系統(tǒng)可以更合適、有效地利用CPU的資源,簡化應(yīng)用軟件的設(shè)計,縮短系統(tǒng)開發(fā)時間,更好地保證系統(tǒng)的實(shí)時陛和可靠性。FreeRTOS是在 Sourceforge網(wǎng)站上發(fā)布的微內(nèi)核嵌入式實(shí)時操作系統(tǒng),它是完全免費(fèi)的操作系統(tǒng),具有源碼公開、可移植、可裁減、調(diào)度策略靈活的特點(diǎn)。作為一個輕 量級的操作系統(tǒng),F(xiàn)reeRTOS提供的功能包括:任務(wù)管理、時間管理、信號量、消息隊列、內(nèi)存管理等 FreeRTOS支持優(yōu)先級和輪換時間片兩種調(diào)度 算法,可根據(jù)用戶需要設(shè)置為可剝奪型內(nèi)核或不可剝奪型內(nèi)核。本文基于FreeRTOS給出了M2M終端實(shí)現(xiàn)PPP協(xié)商以及數(shù)據(jù)封裝傳輸?shù)能浖O(shè)計方案。
基于狀態(tài)機(jī)設(shè)計GPRS連接任務(wù)
由于網(wǎng)絡(luò)和信號較弱等原因,可能導(dǎo)致節(jié)點(diǎn)與GPRS網(wǎng)絡(luò)連接的失敗,采用基于狀態(tài)機(jī)的結(jié)構(gòu)設(shè)計方法對各個階段產(chǎn)生的錯誤進(jìn)行處理,能保障模塊與GPRS網(wǎng)絡(luò)建立可靠連接。程序狀態(tài)機(jī)如圖2所示。
閑待命態(tài):此時MC35i處在離線關(guān)閉狀態(tài),節(jié)點(diǎn)處在低功耗模式下,系統(tǒng)復(fù)位后處于此狀態(tài)。
GPRS參數(shù)設(shè)置態(tài):處理器控制啟動MC35i模塊后進(jìn)入此狀態(tài),通過發(fā)送AT命令對模塊及必要的網(wǎng)絡(luò)參數(shù)進(jìn)行設(shè)置,為使各個參數(shù)均設(shè)置成功,軟件設(shè)計中增加了容錯重試機(jī)制。
PPP協(xié)商態(tài):GPRS參數(shù)設(shè)置完成后,通過發(fā)送AT*99***1#<CR>命令開始MC35i模塊與GPRS網(wǎng)絡(luò)ISP(網(wǎng)絡(luò)服務(wù)提供 商)的PPP協(xié)商軟件設(shè)計中采用LCPHandler()函數(shù)完成LCP協(xié)商,PAPHandler()完成認(rèn)證,由IPCPHandler()完成 IPCP協(xié)商,如果最后獲得ISP和本節(jié)點(diǎn)的IP地址,則進(jìn)入PPPOVER態(tài),此后就能進(jìn)行數(shù)據(jù)的傳輸了,由于GPRS網(wǎng)絡(luò)等原因,PPP協(xié)商有時會失 敗,此時應(yīng)重啟MC35i模塊,再按照狀態(tài)機(jī)流程重新連接。
UDP數(shù)據(jù)傳輸態(tài):當(dāng)程序采用UDP方式進(jìn)行數(shù)據(jù)傳輸時,程序進(jìn)入此狀態(tài),通過xDataTrsmtTask()任務(wù)進(jìn)行數(shù)據(jù)的UDP/IP封裝和解析。
TCP數(shù)據(jù)傳輸態(tài):當(dāng)節(jié)點(diǎn)調(diào)用uip_cionnect()函數(shù)與監(jiān)控中心建立連接后,程序進(jìn)入TCP數(shù)據(jù)傳輸態(tài),進(jìn)行基于TCP的數(shù)據(jù)傳輸。
數(shù)據(jù)的封裝和傳輸
通過GPRS進(jìn)行數(shù)據(jù)的傳輸需要經(jīng)過Internet網(wǎng)絡(luò)進(jìn)行中轉(zhuǎn),因而傳輸?shù)臄?shù)據(jù)封裝必須進(jìn)行TCP/IP協(xié)議。文中利用軟件進(jìn)行了數(shù)據(jù)封裝,需要傳 輸?shù)臄?shù)據(jù)經(jīng)過傳輸層UDP協(xié)議頭封裝,然后是IP協(xié)議頭的封裝,最后進(jìn)行PPP協(xié)議的封裝。經(jīng)過封裝傳輸?shù)組C35i的數(shù)據(jù)格式如表1所示。
MC35i將接收到的數(shù)據(jù)透明地傳輸?shù)絀nternet網(wǎng)絡(luò)中。通過Internet網(wǎng)絡(luò)路由器中轉(zhuǎn),最終將數(shù)據(jù)傳輸?shù)奖O(jiān)控中心。接收端對接收到的數(shù)據(jù)按照相應(yīng)的層次進(jìn)行解析,從而確定數(shù)據(jù)的目標(biāo)程序。 [!--empirenews.page--]
系統(tǒng)軟件設(shè)計采用分層的結(jié)構(gòu),從底到上分別為:串口驅(qū)動層(物理層)、PPP協(xié)議層(鏈路層)、IP協(xié)議層(網(wǎng)絡(luò)層)、UDP協(xié)議和ICMP層(傳輸 層)以及應(yīng)用層。在移植好的LwIP協(xié)議棧中,通過在各層中建立相應(yīng)功能的線程,實(shí)現(xiàn)數(shù)據(jù)的封裝。底層軟件為上層軟件提供函數(shù)支持,上層軟件利用底層軟件 完成應(yīng)用程序的編寫和實(shí)現(xiàn)。軟件采用自底向上的設(shè)計方法逐步實(shí)現(xiàn)系統(tǒng)中各個函數(shù)的功能,各部分函數(shù)實(shí)現(xiàn)均采用模塊化的設(shè)計方法。每個任務(wù)對應(yīng)一個模塊 對 每個任務(wù)單獨(dú)進(jìn)行設(shè)計后,最終由FreeRTOS操作系統(tǒng)統(tǒng)一管理,通過采用信號量和郵箱的方式實(shí)現(xiàn)多個任務(wù)之間的通信,軟件各部分主要函數(shù)之間的關(guān)系如 圖3所示。
在MC35SerialISR()中將接收的數(shù)據(jù)存放到xQRxChars隊列中后,發(fā)送SemMC35Rx信號量來激活PPPRxTask()任務(wù),通過對接收數(shù)據(jù)的解析,確定數(shù)據(jù)包的類型,然后由相應(yīng)的函數(shù)對接收數(shù)據(jù)進(jìn)行處理。
如果接收的數(shù)據(jù)是應(yīng)用程序的數(shù)據(jù),將由IPRx()函數(shù)判斷目標(biāo)主機(jī)是否正確,再經(jīng)過傳輸層解析數(shù)據(jù)從而判定對數(shù)據(jù)處理的應(yīng)用程序。最后由應(yīng)用程序解析 數(shù)據(jù)并執(zhí)行相應(yīng)的功能,如將數(shù)據(jù)通過串口發(fā)送到主機(jī)、向數(shù)據(jù)采集系統(tǒng)發(fā)送控制命令、接收數(shù)據(jù)采集系統(tǒng)的數(shù)據(jù)并發(fā)送等。當(dāng)接收隊列中所有數(shù)據(jù)均處理完畢后, 延時250ms如果還沒有接收到數(shù)據(jù),則任務(wù)通過等待信號量SemMC35Rx將自己掛起。數(shù)據(jù)的發(fā)送過程是一個相反的過程。
應(yīng)用 程序根據(jù)需要的功能建立UDPTxTask()或ICMPTxTask()任務(wù),并將數(shù)據(jù)發(fā)送到xAPPTxQ隊列中。相應(yīng)的任務(wù)再調(diào)用IPTx()和 PPPTx()函數(shù)進(jìn)行數(shù)據(jù)的封裝并將數(shù)據(jù)發(fā)送到XqTxChar隊列中,從而喚醒MC35SerialISR()中斷程序?qū)?shù)據(jù)通過串口發(fā)送到 MC35i中進(jìn)行傳輸。為提高系統(tǒng)的實(shí)時性,本文中FreeRTOS采用可剝奪內(nèi)核方式進(jìn)行調(diào)度。采用FreeRTOS操作系統(tǒng)對任務(wù)進(jìn)行管理簡化了軟件 的編寫難度,同時提高了程序的可讀性和可移植性。
總結(jié)
基于GPRS M2M產(chǎn)品的無線數(shù)據(jù)傳輸以及遠(yuǎn)程監(jiān)控系統(tǒng)是目前國內(nèi)外研究的熱點(diǎn)。本文采用完全免費(fèi)的操作系統(tǒng)和TCP/IP協(xié)議棧給出的系統(tǒng)設(shè)計方案具備成本低、性能好、可升級等優(yōu)點(diǎn),為遠(yuǎn)程監(jiān)控系統(tǒng)相關(guān)領(lǐng)域的數(shù)據(jù)傳輸提供了一個可行的設(shè)計方案。