基于mc35i的m2m終端設計與研究xkpf
嵌入式軟件設計
采用嵌入式實(shí)時(shí)操作系統可以更合適、有效地利用CPU的資源,簡(jiǎn)化應用軟件的設計,縮短系統開(kāi)發(fā)時(shí)間,更好地保證系統的實(shí)時(shí)陛和可靠性。 FreeRTOS是在Sourceforge網(wǎng)站上發(fā)布的微內核嵌入式實(shí)時(shí)操作系統,它是完全免費的操作系統,具有源碼公開(kāi)、可移植、可裁減、調度策略靈活的特點(diǎn)。作為一個(gè)輕量級的操作系統,FreeRTOS提供的功能包括:任務(wù)管理、時(shí)間管理、信號量、消息隊列、內存管理等
FreeRTOS支持優(yōu)先級和輪換時(shí)間片兩種調度算法,可根據用戶(hù)需要設置為可剝奪型內核或不可剝奪型內核。本文基于FreeRTOS給出了M2M終端實(shí)現PPP協(xié)商以及數據封裝傳輸的軟件設計方案。
基于狀態(tài)機設計GPRS連接任務(wù)
由于網(wǎng)絡(luò )和信號較弱等原因,可能導致節點(diǎn)與GPRS網(wǎng)絡(luò )連接的失敗,采用基于狀態(tài)機的結構設計方法對各個(gè)階段產(chǎn)生的錯誤進(jìn)行處理,能保障模塊與GPRS網(wǎng)絡(luò )建立可靠連接。程序狀態(tài)機如圖2所示。
本文引用地址:http://dyxdggzs.com/article/195191.htm
閑待命態(tài):此時(shí)mc35i處在離線(xiàn)關(guān)閉狀態(tài),節點(diǎn)處在低功耗模式下,系統復位后處于此狀態(tài)。
GPRS參數設置態(tài):處理器控制啟動(dòng)MC35i模塊后進(jìn)入此狀態(tài),通過(guò)發(fā)送AT命令對模塊及必要的網(wǎng)絡(luò )參數進(jìn)行設置,為使各個(gè)參數均設置成功,軟件設計中增加了容錯重試機制。
PPP協(xié)商態(tài):GPRS參數設置完成后,通過(guò)發(fā)送AT*99***1#命令開(kāi)始MC35i模塊與GPRS網(wǎng)絡(luò )ISP(網(wǎng)絡(luò )服務(wù)提供商) 的PPP協(xié)商軟件設計中采用LCPHandler()函數完成LCP協(xié)商,PAPHandler()完成認證,由IPCPHandler()完成IPCP 協(xié)商,如果最后獲得ISP和本節點(diǎn)的IP地址,則進(jìn)入PPPOVER態(tài),此后就能進(jìn)行數據的傳輸了,由于GPRS網(wǎng)絡(luò )等原因,PPP協(xié)商有時(shí)會(huì )失敗,此時(shí)應重啟MC35i模塊,再按照狀態(tài)機流程重新連接。
UDP數據傳輸態(tài):當程序采用UDP方式進(jìn)行數據傳輸時(shí),程序進(jìn)入此狀態(tài),通過(guò)xDataTrsmtTask()任務(wù)進(jìn)行數據的UDP/IP封裝和解析。
TCP數據傳輸態(tài):當節點(diǎn)調用uip_cionnect()函數與監控中心建立連接后,程序進(jìn)入TCP數據傳輸態(tài),進(jìn)行基于TCP的數據傳輸。
數據的封裝和傳輸
通過(guò)GPRS進(jìn)行數據的傳輸需要經(jīng)過(guò)Internet網(wǎng)絡(luò )進(jìn)行中轉,因而傳輸的數據封裝必須進(jìn)行TCP/IP協(xié)議。文中利用軟件進(jìn)行了數據封裝,需要傳輸的數據經(jīng)過(guò)傳輸層UDP協(xié)議頭封裝,然后是IP協(xié)議頭的封裝,最后進(jìn)行PPP協(xié)議的封裝。經(jīng)過(guò)封裝傳輸到MC35i的數據格式如表1所示。
MC35i將接收到的數據透明地傳輸到Internet網(wǎng)絡(luò )中。通過(guò)Internet網(wǎng)絡(luò )路由器中轉,最終將數據傳輸到監控中心。接收端對接收到的數據按照相應的層次進(jìn)行解析,從而確定數據的目標程序。
系統軟件設計采用分層的結構,從底到上分別為:串口驅動(dòng)層(物理層)、PPP協(xié)議層(鏈路層)、IP協(xié)議層(網(wǎng)絡(luò )層)、UDP協(xié)議和 ICMP層(傳輸層)以及應用層。在移植好的LwIP協(xié)議棧中,通過(guò)在各層中建立相應功能的線(xiàn)程,實(shí)現數據的封裝。底層軟件為上層軟件提供函數支持,上層軟件利用底層軟件完成應用程序的編寫(xiě)和實(shí)現。軟件采用自底向上的設計方法逐步實(shí)現系統中各個(gè)函數的功能,各部分函數實(shí)現均采用模塊化的設計方法。每個(gè)任務(wù)對應一個(gè)模塊
評論