某控制系统在线加载软件设计
2019-10-21马振华梁欣颖张弛
马振华 梁欣颖 张弛
摘要:某控制系统在使用和维护过程中,經常需要对其嵌入式应用软件进行升级。为了克服仿真器烧写方式操作麻烦且效率低下的缺点,设计了一个在线加载软件来完成应用软件的在线升级,为地面维护人员升级软件提供了便利。
关键词:在线加载;RS422;FLASH
1 概述
当今社会,各种嵌入式控制系统已经广泛应用于人们生活的方方面面。某控制系统软件包括系统软件及应用软件。在使用过程中,经常需要根据实际情况对其嵌入式应用软件进行升级。在调试阶段,通常打开产品口盖利用JTAG接口进行软件烧写,[1,2]但是在产品装机后此种方法不仅麻烦且效率非常低。因此研究在不开口盖的情况下完成应用软件的在线升级的方案十分必要。为了充分利用现有资源且对现有系统软件及应用软件影响最小,新设计一个在线加载软件用于在上位机的控制下,通过RS422总线接收应用软件镜像文件,完成应用软件的在线加载。整个加载过程中无需打开产品口盖连接仿真器。
2 在线加载软件设计
考虑到FLASH扇区擦除及固化过程耗时较长,不宜在实时任务中执行,在线加载软件采用前后台任务的结构。在前台周期任务中进行应用软件镜像文件目标码的接收及缓存,目标码全部缓存完毕后,在后台任务中依次进行FLASH扇区擦除、固化及目标码的CRC校验。在整个加载过程中,在线加载软件每60ms实时向上位机发送当前加载状态(包括传输中、传输成功、传输失败、固化中、固化成功、固化失败、校验中、校验成功、校验失败、空)及加载进度,以便地面维护人员实时监控本次应用软件的加载状态及加载进度。当加载失败(传输失败、固化失败、校验失败)或本次加载完成后,加载软件支持再次重新加载应用软件;另外,在加载过程中,地面维护人员也可中断本次加载过程并重头开始加载应用软件。
2.1 前台任务设计
前台任务主要完成上位机下发数据的接收及解析。每60ms接收上位机下发的数据,根据通信协议解析加载模式、加载请求、退出加载命令及目标码等数据。在加载模式下,当接收到应用软件的加载请求时,缓存目标码至RAM缓冲区;当目标码全部缓存完毕后,置完整缓存标志为1,并设置加载状态为传输成功。当某包数据连续十个周期通信故障时,设置加载状态为传输失败。当接收到清除命令且NVM中擦除标志为未擦除时,设置NVM中进入加载标志为无效以便下电退出加载软件。前台任务处理流程如图1所示。
2.2 后台任务设计
后台任务在前台任务执行的空闲时段运行。由于FLASH扇区擦除及固化操作花费时间比较长,故设计时将FLASH相关扇区擦除、目标码固化及目标码校验放在后台任务中执行。后台任务中实时监控完整缓存标志的状态,当其值为1时,开始根据缓存目标码的大小擦除所需扇区,擦除成功后再将目标码文件写入FLASH对应扇区,写入成功后再将FLASH中写入数据进行CRC校验,校验成功后继续等待,直到上位机发送退出加载命令或重新加载请求。为了防止加载过程中应用软件被擦除,本次加载确未成功加载新的应用软件而导致产品无法正常运行的情况,加载软件专门在NVM中设计一个擦除标志。在擦除FLASH扇区时,先设置NVM中擦除标志为擦除,在加载成功后再将该标志设置为未擦除。在接到退出加载命令时,同时检查NVM中擦除标志为未擦除时才允许退出加载软件,这样就有效避免了应用软件擦除产品无法正常运行的情况。前台任务处理流程如图2所示。
3 结语
本文针对某控制系统设计了一个在线加载软件,该加载软件通过RS422总线接收加载命令及应用软件目标码,在上位机的控制下,完成应用软件的在线加载。整个加载过程中,产品不需要打开口盖,也无需移位,有效地降低了地面维护人员进行应用软件升级的成本,提高了工作效率。
参考文献:
[1]张晓斌,周鑫,郑先成.基于RS232的FLASH在线编程研究[J].机电一体化,2011(2):3536,74.
[2]黄绳雄,张荣芬.嵌入式设备远程在线升级技术的研究[J].电子设计工程,2012,20(9:172174,177).
作者简介:马振华(1986),男,汉族,陕西延安人,硕士,工程师,研究方向:计算机应用。