嵌入式ARM处理器在M2M终端总体设计中的应用

发布者:EtherealGaze最新更新时间:2012-12-29 来源: dzsc关键字:ARM处理器  M2M终端  GPRS通信 手机看文章 扫描二维码
随时随地手机看文章

     引言

  目前,对输油管道、电力装置、油井等进行远程监控主要采用人工巡逻的方式,这种方式存在实时性差、成本高、浪费人力资源、无法对环境恶劣的地区进行监控、可能出现误报等缺点。随着工业领域现代化水平的提高和通信技术的发展,这种生产方式亟待得到改善。

  M2M是指应用无线移动通信技术,实现机器与机器、机器与人之间数据通信和交流的一系列技术及其组合的总称。GPRS具有覆盖地域广、通信距离远、网络可靠性高等优点。随着GPRS的推广和应用,以及基于GPRS的M2M产品的推出,采用GPRS技术来解决上述问题成为一种较好的方案。

  嵌入式系统是当前国内外研究的热点之一。采用嵌入式系统技术设计一种可以解决远程监控领域数据传输问题的通用终端是必要的。本文重点阐述了基于嵌入式ARM处理器,结合GPRS模块MC35i设计M2M终端的总体设计方案。

  系统硬件组成

  M2M终端的硬件核心为GPRS通信模块MC35i和ARM处理器AT91SAM7S64,它们的接口设计如图1所示。M2M终端对外留有2个RS232串口,通过发送预先定义好的数字指令,可以实现M2M终端的启动、关闭等。当M2M终端与Internet建立连接后,只需把封装好的数据通过串口发送到M2M终端,由其完成向监控中心发送数据的功能。


  GPRS模块

  GPRS模块是实现M2M终端平台的核心部分,设计中采用西门子公司的GPRS通信模块MC35i。本模块包括CPU接口电路、SIM卡接口电路和MC35i外围电路,MC35i支持GPRS的四种编码协议CS-1、CS-2、CS-3和CS-4,理论上最高传输速率可达172kbps。它具备完整的GSM和GPRS功能,可以广泛应用在相关的M2M数据传输平台上。MC35i提供了标准AT命令界面和一个RS232接口,用于与外部应用系统连接。

  ARM处理器

  本数据传输平台处理器采用ATMEL公司生产的32位ARM7TDMI体系结构处理器AT91SAM7S64,该芯片采用3.3V电压进行供电,支持低功耗模式,它具有64kB的FLASH和16kB的SRAM,具备丰富的外围设备资源,其中包括3个UART通信串口和1个USB2.0全速设备,利用本芯片完成系统功能的同时可以实现系统的高性价比。CPU模块硬件电路包括:时钟电路、JTAG接口电路,RS232接口电路等。

  电源设计

  系统采用9V电源进行供电,经过TI公司LDO降压芯片UA7805进行一次降压,使电压降至5V。GPRS模块MC35i要求的电源电压为3.3V~4.8V,而且要求电源必须能够提供2A的尖峰电流,因此需要将5V电源通过一个0.7V压降的肖特基二极管1N5819后输入MC35i,同时需要接入耐压25V、1000μF的电解电容,以为MC35i提供足够的尖峰电流,将5V电源经过TI公司电源模块REG1117-3.3将电压降至3.3V,为微处理器及其他芯片提供电源。

  嵌入式软件设计

  采用嵌入式实时操作系统可以更合适、有效地利用CPU的资源,简化应用软件的设计,缩短系统开发时间,更好地保证系统的实时陛和可靠性。FreeRTOS是在Sourceforge网站上发布的微内核嵌入式实时操作系统,它是完全免费的操作系统,具有源码公开、可移植、可裁减、调度策略灵活的特点。作为一个轻量级的操作系统,FreeRTOS提供的功能包括:任务管理、时间管理、信号量、消息队列、内存管理等

  FreeRTOS支持优先级和轮换时间片两种调度算法,可根据用户需要设置为可剥夺型内核或不可剥夺型内核。本文基于FreeRTOS给出了M2M终端实现PPP协商以及数据封装传输的软件设计方案。

  基于状态机设计GPRS连接任务

  由于网络和信号较弱等原因,可能导致节点与GPRS网络连接的失败,采用基于状态机的结构设计方法对各个阶段产生的错误进行处理,能保障模块与GPRS网络建立可靠连接。程序状态机如图2所示。


  闲待命态:此时MC35i处在离线关闭状态,节点处在低功耗模式下,系统复位后处于此状态。

  GPRS参数设置态:处理器控制启动MC35i模块后进入此状态,通过发送AT命令对模块及必要的网络参数进行设置,为使各个参数均设置成功,软件设计中增加了容错重试机制。[page]

  PPP协商态:GPRS参数设置完成后,通过发送AT*99***1#命令开始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将接收到的数据透明地传输到Internet网络中。通过Internet网络路由器中转,最终将数据传输到监控中心。接收端对接收到的数据按照相应的层次进行解析,从而确定数据的目标程序。

  系统软件设计采用分层的结构,从底到上分别为:串口驱动层(物理层)、PPP协议层(链路层)、IP协议层(网络层)、UDP协议和ICMP层(传输层)以及应用层。在移植好的LwIP协议栈中,通过在各层中建立相应功能的线程,实现数据的封装。底层软件为上层软件提供函数支持,上层软件利用底层软件完成应用程序的编写和实现。软件采用自底向上的设计方法逐步实现系统中各个函数的功能,各部分函数实现均采用模块化的设计方法。每个任务对应一个模块

  对每个任务单独进行设计后,最终由FreeRTOS操作系统统一管理,通过采用信号量和邮箱的方式实现多个任务之间的通信,软件各部分主要函数之间的关系如图3所示。


  在MC35SerialISR()中将接收的数据存放到xQRxChars队列中后,发送SemMC35Rx信号量来激活PPPRxTask()任务,通过对接收数据的解析,确定数据包的类型,然后由相应的函数对接收数据进行处理。

  如果接收的数据是应用程序的数据,将由IPRx()函数判断目标主机是否正确,再经过传输层解析数据从而判定对数据处理的应用程序。最后由应用程序解析数据并执行相应的功能,如将数据通过串口发送到主机、向数据采集系统发送控制命令、接收数据采集系统的数据并发送等。当接收队列中所有数据均处理完毕后,延时250ms如果还没有接收到数据,则任务通过等待信号量SemMC35Rx将自己挂起。数据的发送过程是一个相反的过程。

  应用程序根据需要的功能建立UDPTxTask()或ICMPTxTask()任务,并将数据发送到xAPPTxQ队列中。相应的任务再调用IPTx()和PPPTx()函数进行数据的封装并将数据发送到XqTxChar队列中,从而唤醒MC35SerialISR()中断程序将数据通过串口发送到MC35i中进行传输。为提高系统的实时性,本文中FreeRTOS采用可剥夺内核方式进行调度。采用FreeRTOS操作系统对任务进行管理简化了软件的编写难度,同时提高了程序的可读性和可移植性。

  总结

  基于GPRS M2M产品的无线数据传输以及远程监控系统是目前国内外研究的热点。本文采用完全免费的操作系统和TCP/IP协议栈给出的系统设计方案具备成本低、性能好、可升级等优点,为远程监控系统相关领域的数据传输提供了一个可行的设计方案。

关键字:ARM处理器  M2M终端  GPRS通信 引用地址:嵌入式ARM处理器在M2M终端总体设计中的应用

上一篇:ARM的uClinux的设计与应用
下一篇:DSP + ARM架构处理器为机器视觉带来强大运算和控制能力

推荐阅读最新更新时间:2024-03-16 13:15

三星ARM处理器S3C4510B的HDLC通道使用及编程
摘要 三星16/32位ARM处理器S3C4510B是目前在国内应用非常广泛的一种性价比很高的ARM处理器,本文在介绍S3C4510B中HDLC通道结构特点的基础上,详细说明了4510中HDLC通道在DMA收发方式下的工作过程,使用方法和编程中的一些注意事项。 1:S3C4510B简介 S3C4510B(以下简称4510)是韩国三星公司开发的一款基于ARM7TDMI架构的16/32位高性能微处理器。具用丰富的外围接口,如以太网,HDLC等,可灵活配置,适用于多种应用。4510具有以下性能特点: ◆ 8K字节的内部CACHE,也可用作内部SRAM ◆ 两线IIC接口,作为IIC主器件使用 ◆ 以太网控制
[应用]
乖乖,48核ARM服务器芯片要让英特尔肝颤?
在今年六月,芯片供应商Cavium公司首次发布了其ThunderX系统级芯片(SoC)产品。而在近日,Cavium公司宣布,ThunderX芯片目前已经正式发售,其中包括了一个业界第一款48核ARMv8处理器。 四款ThunderX产品包括:针对云计算工作负载的ThunderX_CP、用于云计算存储应用的ThunderX_ST、应用于网络应用程序的ThunderX_NT以及确保计算安全的ThunderX_SC。 Cavium公司数据中心处理器集团产品营销总监Rishi Chugh表示:“ThunderX的四款产品都采用了48核SKU,其中,所有针对96核服务器的双插槽配置都强制为每一个插槽SKU配备了一个48核组件。”
[单片机]
ARM处理器S3C4480在高精度直流开关电源设计中的应用
0 引言  近年来,嵌入式技术发展极为迅速,出现了以单片机、专用嵌入式ARM为核心的高集成度处理器,并在通信、自动化、电力电子等领域得到了广泛应用。电源行业也开始采用内部集成资源丰富的嵌入式控制器来构成大型开关电源的控制系统。开关电源是效率较高的一种电源,是由占空比可凋的脉宽调制波(PWM)来控制M0S管、IGBT等开关器件的开通与关闭,从而实现电压电流稳定输出,其性能的优劣直接关系到整个电子系统的工作性能指标。将SAMSUNC公司的嵌入式ARM处理器S3C44BOX芯片,应用到开关电源的控制系统的设计中,采用C语言和少量汇编语言,就可以实现一种以嵌入式ARM处理器为核心、具有智能PID控制器以及触摸屏、液晶显示器等功能的开关电
[单片机]
<font color='red'>ARM处理器</font>S3C4480在高精度直流开关电源设计中的应用
ARM的体系结构与编程系列博客——ARM处理器系列介绍
ARM处理器系列介绍 现在到了3月,过年过得过于舒服了。系列博客也停更了近半月,我果然是个慢(lan)性(gui)子,那么趁着到校的第一天晚上,就写一篇博客来继续我的系列博客了!众所周知,ARM处理器的应用广泛,现在就为大家介绍一些基于ARM体系结构的处理器: ARM7 ARM9 ARM9E ARM10E SecurCore ARM11 回到顶部 ARM处理器简介 下面我将从上述列举的几个处理器,来给大家介绍ARM处理器 ARM7系列 ARM7系列处理器是低功耗的32位RISC处理器。主要用于对功耗和成本要求比较苛刻的消费类产品。ARM7系列的处理器还支持16位的Thumb指令集。ARM7系列市场上包括ARM7
[单片机]
ARM处理器简介及RISC设计要点
第一ARM处理器简介及RISC特点 ARM处理器简介 ARM(Advanced RISC Machines)是一个32位RISC(精简指令集)处理器架构,ARM处理器则是ARM架构下的微处理器。ARM处理器广泛的使用在许多嵌入式系统。ARM处理器的特点有指令长度固定,执行效率高,低成本等。 RISC设计主要特点 1、指令集——RISC减少了指令集的种类,通常一个周期一条指令,采用固定长度的指令格式,编译器或程序员通过几条指令完成一个复杂的操作。而CISC指令集的指令长度通常不固定。 2、流水线——RISC采用单周期指令,且指令长度固定,便于流水线操作执行。 3、寄存器——RISC的处理器拥有更多的通用寄存
[网络通信]
基于mc35i的m2m终端设计与研究
  引言   目前,对输油管道、电力装置、油井等进行远程监控主要采用人工巡逻的方式,这种方式存在实时性差、成本高、浪费人力资源、无法对环境恶劣的地区进行监控、可能出现误报等缺点。随着工业领域现代化水平的提高和通信技术的发展,这种生产方式亟待得到改善。   m2m是指应用无线移动通信技术,实现机器与机器、机器与人之间数据通信和交流的一系列技术及其组合的总称。GPRS具有覆盖地域广、通信距离远、网络可靠性高等优点。随着GPRS的推广和应用,以及基于GPRS的M2M产品的推出,采用GPRS技术来解决上述问题成为一种较好的方案。   嵌入式系统是当前国内外研究的热点之一。采用嵌入式系统技术设计一种可以解决远程监控领域数据传输问题的通
[工业控制]
基于ARM处理器的CAN-Ethernet通信模块实现
近20 年来工业测控系统发展的趋势是:分散控制和集中管理、标准化和开放性。工业测控系统从传统的集中测量控制系统转向网络化的集散控制系统。随着现场总线技术高速发展和标准化程度不断提高,以现场总线技术为基础的开放型集散测控系统—现场总线测控系统得到了广泛的应用。同时,以太网的应用也迅速向工业测控系统渗透,在工业自动化应用中异军突起。 这种趋势的出现与计算机技术、信息技术、网络通信技术的高速发展相关。现代工业系统信息交换的需求也已经从管理层内部迅速覆盖到控制、现场设备等各个层次,连接上层网络和现场总线的通信设备成为工厂自动化系统中的关键设备之一。CAN-Ethernet通信模块,是一种直接连接以太网和CAN现场总线的设备,有效解决了控制
[网络通信]
关于arm处理器 内存编址模式 与 字节对齐方式
在x86+Linux上写的程序,在PC机上运行得很好。可是使用ARM的gcc进行交叉编译,再送到DaVinci目标板上运行的时候,出现了Bus error。 出现的位置如下(其中Debug的内容是我在程序中添加的调试信息): root@211.69.193.189:~# arm_v5t_le-gcc -g shit.c root@211.69.193.189:~# ./a.out Debug: malloc space for the actual data: temp_buf = 0x13118 Debug: in my_recvn() Debug: nleft = 52 Bus error 打开调试器进行调试: root@211
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved