基于GPRS通信的MCU固件远程更新技术的实现
仪器仪表商**:在以、大数据、云计算为代表的信息科技**式发展的今天,产品越来越丰富,并且版本的升级迭代速度非常快。如果需要对软件代码进行升级,或者生产厂家想要对产品进行修改,就必须到现场重新烧写程序。这样,从时间到成本都造成了很大的开销,非常不灵活。因此远程更新的固件就成为解决这一问题的有效手段。本文以F103VET6 为平台,使用GPRS通信方式和IAP 技术实现MCU固件的远程更新。该技术对于具备GPRS通信的嵌入式产品有很好的帮助,对3G或者4G的嵌入式产品也有借鉴的意义。1系统的硬件设计 本系统的结构如图1所示。MCU使用芯片STM32F103VET6,该处理器是(ST)公司发布的基于M3内核的增强型系列处理器,工作频率最高达到72 MHz,带有片内RAM、片内Flash和丰富的外设。GPRS模块的型号是G510。MCU通过串口,使用AT命令与G510模块进行数据交互。转串口模块作为PC与MCU的数据交互的有效手段,通过打印数据信息就可以知道MCU的工作状态。产生两种,包括为MCU和USB模块供电的3.3 V电压和为GPRS模块供电的4.0 V电压。
2MCU的地址 STM32F103VET6的内核是CortexM3,它的存储系统采用统一寻址方式,程序存储器、数据存储器、寄存器和输入输出接口被组织在同一个4 GB的线性地址空间内。存储空间被分成8个主要块,每个块为512 MB。以STM32F103VET6处理器为例, 图2为代码块和片内SRAM的地址映射图。STM32F103VET6有512 KB的Flash存储空间,地址从008000000至00807ffff;有64 KB的SRAM,地址从020000000到02000ffff。
通过设置BOOT[1:0]引脚值为00,使STM32F103 VET6上电后从Flash的008000000地址处开始执行代码。 3IAP技术的实现 3.1IAP技术原理 在应用编程(IAP)技术是指MCU在执行用户程序的过程中对片内Flash 的部分区域进行擦写,把真正的用户二进制代码烧写到Flash中。在这里,IAP的程序要实现两个功能: 一是通过GPRS通信接收已经编译链接好的二进制的应用代码到内存;二是将应用代码烧写到片内Flash 中。系统复位后,MCU首先执行IAP和GPRS通信程序,此段代码必须使用硬件烧写器,比如Jlink烧写到MCU中;等待MCU接收并烧写好真正的功能代码后,跳转至此段代码开始执行用户程序。这两段代码都是烧写在片内Flash中,必须保证两段代码的存放区域不能重叠,否则会出现程序覆盖,将无法正确执行用户程序。通过设置标志位,并且存储到Flash中,来判断上电后执行的是IAP程序还是用户程序。 3.2烧写文件格式 IAP驱动和GPRS通信程序是用MDK编译器生成的HEX文件,通过JTAG烧写到STM32F103VET6的Flash中,起始地址是008000000。由于MDK产生的是HEX文件,因此需要使用转换工具将用于通过GPRS通信方式从服务器端下发到终端的固件代码由HEX文件格式转换成BIN文件格式。终端将新的固件代码写入到Flash中,起始地址设为008020000。 3.3软件实现 由于要更新的固件的存储地址是008020000,因此需要调整新固件的中断向量表的地址:NVIC_SetVectorTable(NVIC_VectTab_FLASH,008020000)。使用起始地址为00807f800最后一页Flash存储字符型变量Update_Flag,该变量的值保存了固件更新的状态。当Update_Flag等于0时,代表无应用程序,MCU执行IAP驱动和GPRS通信程序;当Update_Flag等于1时,代表应用程序是已经写入Flash中的有效代码,则MCU执行新的固件程序。系统的软件流程如图3所示。
连接的流程图STM32F103VET6与GPRS模块的数据交互通过串口来完成,终端与服务器的连接建立的过程如图4所示。建立连接后,MCU可以发送报文A1向服务器请求新固件。服务器收到此报文后,把要发送的BIN格式的新固件按照表1所示的报文格式发送至终端。帧长度是包含从类型到校验位的总长度。这里考虑到G510传输每帧数据的最长字节数和Flash写操作的方便性,设定数据区的最大长度为1024 B。服务器端打开BIN格式的文件,并且按照表1所示的帧格式把数据装载成帧A2,然后发送。用帧计数来避免因为网络拥堵等问题造成的数据传输错误。采用应答式的交互方式,终端每次收到一条固件帧,就以正确帧R1或者错误帧R2回应。R1和R2中包含帧计数和服务器端设置延时,发送完一帧数据后,延时5 s,在这段时间内,没有收到回应的数据则重发。服务器发送完最后一帧固件数据,并且收到正确的回答后,再发送一帧结束数据A3,使终端知道固件已经全部发送完毕。具体的服务器和终端的数据传输的流程图如图5所示。
先使用JTAG把IAP驱动和GPRS通信的代码写入到Flash的起始地址008000000处,然后复位终端,等待终端与服务器建立好连接。服务器使用图6所示的客户端界面形成规范的报文,然后发送到终端,实现终端固件的远程更新。
4结论 通过实验,用户代码被正常执行,说明远程更新已经正常实现。因此,IAP 技术为远程更新用户代码提供了极大的方便,不仅能够提高产品性能,增强产品的功能,而且大大降低了企业产品运营和维护的成本,是一门实用性很强的技术,在将来的3G、4G等嵌入式产品中将会被广泛地使用。
如何实现对示波器的远程控制?摘要:数字能准确捕获各种信号,故已成为科研实验和工程项目中各类信号采集、记录和分析的主要设备之一。但是很多情况下,需要把数字示波器采集到的数据进行数据处理和分析,并最终完成远程的自动测试和分析的需求。所以今天我们就来说说如何实现对示波器的远程控制。
1、 基础介绍
计算机通过LAN(网口)或者 接口与示波器建立连接来控制示波器。如图1 所示。
一听到要控制示波器,大家都会想到通过SCPI 命令来控制示波器。那如何来实现呢?可选的方案有:
(1)通过编写程序代码,如使用C,C++,C#等语言结合开发环境(如VS2012)来编写代码;
(2)通过LabVIEW,使用图形界面来实现。
今天我们就来说说如何使用LabVIEW 实现对ZDS2024 示波器的控制。
LabVIEW 的定义:
LabVIEW 由National Instruments 公司开发,于1986 年发布第一个版本,是一种用图标和连线代替文本行来创建应用程序的图形化编程语言。LabVIEW 提供了一门编程语言所拥有的语法功能,只是它以图形的方式提供。
LabVIEW 基本由一个个VI 文件组成。每个VI 由前面板和程序框图组成。可以从两个角度来理解VI 文件:
(1)从用户交互来说,前面板负责设计用户交互界面,类似UI 设计工具,一般包括用户操作控件和输出结果控件,像文本框、按钮、波形显示控件等;而程序框图负责将用户的操作经过一系列的处理,并最终输出结果,显示在前面板上。
(2)从功能模块来说,每个VI 文件类似于C 语言中的一个函数,前面板用来设计函数的参数(输入)和返回值(输出),程序框图类似函数体,实现具体逻辑。
2、 安装软件和ZDS2024 驱动库
首先必须安装好LabVIEW 和NI-VISA。将ZDS2024 的驱动库文件夹Zhiyuan ZDS2000 Series for TCP,拷贝到LabVIEW 安装目录instr.lib 目录下。Zhiyuan ZDS2000 Series for TCP针对以太网连接。
3、配置NI-VISA来控制示波器
启动Masurement & Automation Explorer 软件,选择设备和接口,在添加网络设备中,使用Manual Entry of Raw Scoket(手动输入原始SOCKET)方式连接,ZDS2024 示波器采用端口号5025 来接收SCPI 命令。如图2 和图3 所示。设置好后,可进行测试,确保连接成功。
4、例程设计
启动LabVIEW 创建一个新的VI 文件。这里以从示波器读取数据,并显示在波形控件上为例。
设计的VI 前面板为如图4 所示。
左边的三个控制用于输入设置,包括连接的VISA 资源名称,获取数据的通道,最大延迟时如何实现对示波器的远程控制间。右边为结果波形显示控件。设计好前面板以后,就可以进入程序框图设计了。在VI 的程序框图中的Function 面板中,选择“仪器I/O”可以找到有关ZDS2024 的驱动库的模块,可以在程序框图中直接使用,设计结果如图5 所示。
在程序框图中,先初始化示波器,并启动示波器的AutoSetup 功能,然后循环获取示波器的数据,并送显示,直到用户中止或者获取数据过程中出现错误。最后可以在前面板启动运行,结果如图6 所示。
PA功率分析仪远程读取数据
摘要:功率分析仪通常用于实验室、现场的测量,环境可能是高温、高压电等危险区域测量数据,尤其是长期测量时,必须要有人时时刻刻在仪器旁边进行分析么,那是不可能的。周立功致远PA功率分析仪可以通过多种方式进行远程数据的读取,如何进行的呢?
一、通信接口
PA功率分析仪提供了RS-232、因特网、GPIB、四种通信接口对其进行远程数据的读取。其中RS-232接口图如图 1。
四种通信方式对比如下:
1.使用串口进行远程控制编程简单方便,调试容易,但干扰存在下可能会出现数据丢失,数据线长度过长时亦会有所影响。
2.使用网络进行控制时,读写速度快,可靠稳定传输,因此推荐有条件的情况下最后使用网络通信方式。
3.使用USB接口进行通信时,编程比较复杂,数据传输可靠,调试困难,硬件要求低。
GPIB通信接口编程比较复杂,并且通信线价格不便宜,不过传输数据可靠稳定,亦可作为工控的选择。
图 1 RS-232接口
二、传输协议
SCPI命令协议
以上四种通信接口都支持标准工业控制的SCPI命令协议,Standard Commands for Programmable Instruments的缩写,即程控仪器(可编程仪器)标准命令集。SCPI 是一种建立在现有标准IEEE488.1 和 IEEE 488.2 基础上,并遵循了IEEE754 标准中浮点运算规则、ISO646 信息交换7 位编码符号(相当于ASCII编程)等多种标准的标准化仪器编程语言。它采用一套树状分层结构的命令集,提出了一个具有普遍性的通用仪器模型,采用面向信号的测量;它的助记符产生规则简单、明确,且易于记忆。使用SCPI命令的实例如下:
:HOLD
(1)功能
设置或查询数据的保持状态。
(2)命令格式
:HOLD {}
:HOLD?
(3)参数说明
= ON|OFF
(4)示例
:HOLD OFF
:HOLD? -> 0
SCPI通信协议使用的是ASCII码字符进行,让人更加直观的查看所读写的数据内容。
Modbus协议
除以上四种接口支持SCPI命令协议之外,RS-232和网络还提供了Modbus通信协议。Modbus 协议是应用于电子控制器上的一种通用语言。通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一通用工业标准。有了它,不同厂商生产的控制设备可以连成工业网络,进行集中监控。PA功率分析仪支持Modbus协议的RTU标准协议。此协议传输带宽小,效率高。
在Modbus协议标准中,网络端口统一使用的是502端口,数据帧格式如下:
在当前PA5000/PA8000中支持的命令有:0x01读线圈;0x03读保持寄存器;0x04读输入寄存器;0x05写单个线圈;0x06写单个寄存器;0x0F写多个线圈;0x10写多个寄存器;0x2B读设备标识码。具体的寄存器地址含义可参考相应的使用说明文档。
客户应根据自身需求选择适当的远程控制接口及通信协议。推荐使用网络接口的SCPI命令协议对PA进行远程控制。
|