张家港富瑞深冷科技有限公司 江苏张家港 215637
摘要:针对市场存在对工控设备远程升级的强烈需求,本文基于LPC2368平台,采用IAP在应用编程技术,介绍了远程升级通讯协议、FLASH扇区规划、IAP函数接口的原理和实现过程;最终结果表明,该技术稳定可靠,可以在今后的产品布局中广泛推广开来,并为市场带来可观的利润空间。
关键词:LPC2368平台,IAP在应用编程,FLASH规划,远程升级
1.引言
公司产品为LNG新能源加注设备,市场遍布大江南北。随着客户使用过程中发现的问题或扩展当前功能,需要对加注设备程序进行程序更新。目前常用的升级方法都是需要工程技术人员携带相关设备到现场升级,成本高、效率低,难以满足市场需求;在新科技日新月异的今天,利用现有网络实现远程升级已为必然趋势。
2.远程升级原理与框架
2.1远程升级原理
利用加气站现有的网络将程序文件(*.bin)拷贝至站控PC后台,PC机应用程序通过远程升级协议与前厅设备进行通讯;当满足升级条件后将程序文件信息(包括文件名称、文件长度、文件内容)下发至前庭设备;前庭设备(加气机)在收到这些信息后利用IAP(在系统应用编程)技术对FLASH存储空间进行擦除、编程操作,从而达到更新应用程序的目的。
2.2远程升级框架
2.3远程升级步骤
1)维护人员将程序文件(*.bin文件)上传至站控PC机;
2)PC机对接收到的程序文件进行检查,判断是否为合法文件;
3)当判断为合法文件后,PC机轮询下发程序文件信息(文件名称);
4)前庭设备接收到文件信息后,比对目前程序版本信息,判断是否需要下载新的程序文件;
5)当需要下载新的文件信息后,前庭设备向后台PC申请文件长度;
6)PC机下发文件长度;
7)前庭设备收到文件长度后,对FLASH进行擦除、查空操作;
8)前庭设备申请第n段文件内容数据;
9)PC机下发第n段文件内容数据;
10)前庭设备接收到第n段数据后写入FLASH并校验;
11)重复步骤8、9、10,直至全部文件内容数据下载完毕;
12)终端设备判断程序文件全部接收完毕后,更新程序升级标志、软件版本号,进入应用程序工作状态,整个升级流程完毕;
3.远程升级设计与实现
3.1远程升级通讯协议
3.1.1远程升级通讯协议规范
通讯载体:RS422/RS485,9600/N/8/1;
包头:0xFA固定;
ID:0x00固定;
状态:0x00固定;
状态:0x00固定;
数据长度:2字节,具体为”数据内容”长度字节数;
CRC:2字节,从ID开始到数据内容结束;
数据存储方式:Big-Endian
3.1.2远程升级通讯协议内容
1)轮询
3)下载文件内容
3.3IAP函数接口
IAP函数是固话在微处理器内部flash上的一些函数代码,最终的用户程序可以直接通过调用这些函数来对内部flash进行擦除和编程操作。Lpc2368微处理器内部flash有一个块称为boot block,位于flash的顶端,可供调用的IAP函数位于该块中。上电后boot block被映射到内部地址空间的顶端,同样IAP函数从入口地址也被映射到0x7ffffff0处。用户可以通过跳转到该地址来调用相应的IAP函数。由于IAP地址的第0位是1,因此,当程序计数器转移到该地址时会引起thumb集的变化。以下是IAP接口函数:
1)扇区选择
uint32 SelSector( uint8 sec1, uint8 sec2 )
{paramin[0] = IAP_SELECTOR;
paramin[1] = sec1;
paramin[2] = sec2;
(*(void(*)())IAP_ENTER_ADR)(paramin, paramount);
return( paramount[0] );}
2)扇区擦除
uint32 EraseSector( uint32 sec1, uint32 sec2 )
{paramin[0] = IAP_ERASESECTOR;
paramin[1] = sec1;
paramin[2] = sec2;
paramin[3] = IAP_FCCLK;
(*(void(*)())IAP_ENTER_ADR)(paramin, paramount);
return( paramount[0] );}
3)拷贝数据至FLASH
uint32 RamToFlash( uint32 dst, uint32 src, uint32 no )
{paramin[0] = IAP_RAMTOFLASH;
paramin[1] = dst;
paramin[2] = src;
paramin[3] = no;
paramin[4] = IAP_FCCLK;
(*(void(*)())IAP_ENTER_ADR)(paramin, paramount);
return( paramount[0] );}
4)数据校验
uint32 Compare( uint32 dst, uint32 src, uint32 no )
{paramin[0] = IAP_COMPARE;
paramin[1] = dst;
paramin[2] = src;
paramin[3] = no;
(*(void(*)())IAP_ENTER_ADR)(paramin, paramount);
return( paramount[0] );}
3.4BOOTLOAD程序实现
1)设备上电,复位进入bootload程序;
2)关闭看门狗;复位初始化液晶显示;初始化CAN总线;关闭蜂鸣器;打开定时器;
3)在3秒钟按“取消”键,人将强制跳转至应用程序;按“确定”键,将强制进入升级应用程序,此步骤是为了在升级过程中掉电等异常情况发生写入存储器的数据不确定所采取的应对措施;
4)判断上次升级的程序是否完整、版本号是否为最新版本,如果否则进入升级过程,否则运行应用程序;
5)进入升级过程;
6)升级完毕,运行应用程序。
4.总结
1)本项目基于LPC2368,对于其他具有IAP功能的ARM芯片同样适用;
2)工业设备在线远程升级以稳定可靠为主要诉求,为此本项目采用了通讯超时、看门狗、数据校验等一些列措施;
3)该项目运行稳定可靠,可以适用于其他工业设备(协议转换板、计量主板等)的远程升级;
5.参考文献
1)广州周立功单片机发展有限公司.LPC23XX器件用户手册.第一版
2)周立功等 ARM微控制器基础与实战(第二版) 北京航空航天大学出版社 2005
3)NXP Semiconductor. LPC23XX user manual. Rev 2.
4)Joseph Yiu. Cortex-M3权威指南[M]. 宋岩, 译. 北京: 北京航天航空大学出版社, 2009: 83-107.
论文作者:徐东良
论文发表刊物:《防护工程》2017年第21期
论文发表时间:2017/12/26
标签:文件论文; 程序论文; 设备论文; 前庭论文; 函数论文; 数据论文; 应用程序论文; 《防护工程》2017年第21期论文;