新闻中心

EEPW首页>嵌入式系统>设计应用> ARM处理器结合GPRS模块设计M2M终端的总体设计方案

ARM处理器结合GPRS模块设计M2M终端的总体设计方案

作者: 时间:2013-12-09 来源:网络 收藏
GPRS 参数设置态:处理器控制启动 MC35i 模块后进入此状态,通过发送 AT 命令对模块及必要的网络参数进行设置,为使各个参数均设置成功,软件设计中增加了容错重试机制。
PPP 协商态: GPRS 参数设置完成后,通过发送 AT*99***1#CR> 命令开始 MC35i 模块与 GPRS 网络 ISP( 网络服务提供商 ) PPP 协商。软件设计中采用 LCPHandler() 函数完成 LCP 协商, PAPHandler() 完成认证,由 IPCPHandler() 完成 IPCP 协商,如果最后获得 ISP 和本节点的 IP 地址,则进入 PPPOVER 态,此后就能进行数据的传输了。由于 GPRS 网络等原因, PPP 协商有时会失败,此时应重启 MC35i 模块,再按照状态机流程重新连接。
UDP 数据传输态:当程序采用 UDP 方式进行数据传输时,程序进入此状态。通过 xDataTrsmtTask() 任务进行数据的 UDP IP 封装和解析。
TCP 数据传输态:当节点调用 uip_cionnect() 函数与监控中心建立连接后,程序进入 TCP 数据传输态,进行基于 TCP 的数据传输。
数据的封装和传输
通过 GPRS 进行数据的传输需要经过 Internet 网络进行中转,因而传输的数据封装必须进行 TCP IP 协议。文中利用软件进行了数据封装。需要传输的数据经过传输层 UDP 协议头封装,然后是 IP 协议头的封装,最后进行 PPP 协议的封装。经过封装传输到 MC35i 的数据格式如表 1 所示。
ARM处理器结合GPRS模块设计M2M终端的总体设计方案
MC35i 将接收到的数据透明地传输到 Internet 网络中。通过 Internet 网络路由器中转,最终将数据传输到监控中心。接收端对接收到的数据按照相应的层次进行解析,从而确定数据的目标程序。
系统软件设计采用分层的结构,从底到上分别为:串口驱动层 ( 物理层 ) PPP 协议层 ( 链路层 ) IP 协议层 ( 网络层 ) UDP 协议和 ICMP ( 传输层 ) 以及应用层。在移植好的 LwIP 协议栈中,通过在各层中建立相应功能的线程,实现数据的封装。底层软件为上层软件提供函数支持,上层软件利用底层软件完成应用程序的编写和实现。软件采用自底向上的设计方法逐步实现系统中各个函数的功能,各部分函数实现均采用模块化的设计方法。每个任务对应一个模块。对每个任务单独进行设计后,最终由 FreeRTOS 操作系统统一管理,通过采用信号量和邮箱的方式实现多个任务之间的通信,软件各部分主要函数之间的关系如图 3 所示。
ARM处理器结合GPRS模块设计M2M终端的总体设计方案
MC35SerialISR() 中将接收的数据存放到 xQRxChars 队列中后,发送 SemMC35Rx 信号量来激活 PPPRxTask() 任务,通过对接收数据的解析,确定数据包的类型,然后由相应的函数对接收数据进行处理。
如果接收的数据是应用程序的数据,将由 IPRx() 函数判断目标主机是否正确,再经过传输层解析数据从而判定对数据处理的应用程序。最后由应用程序解析数据并执行相应的功能,如将数据通过串口发送到主机、向数据采集系统发送控制命令、接收数据采集系统的数据并发送等。当接收队列中所有数据均处理完毕后,延时 250ms 如果还没有接收到数据,则任务通过等待信号量 SemMC35Rx 将自己挂起。数据的发送过程是一个相反的过程。应用程序根据需要的功能建立 UDPTxTask() ICMPTxTask() 任务,并将数据发送到 xAPPTxQ 队列中。相应的任务再调用 IPTx() PPPTx() 函数进行数据的封装并将数据发送到 XqTxChar 队列中,从而唤醒 MC35SerialISR() 中断程序将数据通过串口发送到 MC35i 中进行传输。为提高系统的实时性,本文中 FreeRTOS 采用可剥夺内核方式进行调度。采用 FreeRTOS 操作系统对任务进行管理简化了软件的编写难度,同时提高了程序的可读性和可移植性。
结语
基于 GPRS M2M 产品的无线数据传输以及远程监控系统是目前国内外研究的热点。本文采用完全免费的操作系统和 TCP IP 协议栈给出的系统设计方案具备成本低、性能好、可升级等优点,为远程监控系统相关领域的数据传输提供了一个可行的设计方案。

上一页 1 2 下一页

关键词:ARM处理器GPRS模块M2M终端

评论


相关推荐

技术专区

关闭