APP下载

CAN总线实现的ZYNQ-7000程序在线升级方法

2018-12-07,,,,

单片机与嵌入式系统应用 2018年11期
关键词:下位插件校验

,,,,

(南京南瑞继保电气有限公司,南京 211102)

引 言

电力系统二次设备继电保护、测控设备面对用户越来越多的新需求、软件自身错误等问题,需要及时对设备程序进行升级和维护,改善设备性能,延长设备生命周期。传统的方法需要拆卸设备,通过仿真器或者编程器烧写程序,这种方式在现场调试、设备数量庞大时,维护非常困难。在线升级是被广泛采用的一种方式,这种升级方式可以不受环境的限制,充分提高了系统升级的便利性和可维护性[1]。参考文献[2]~[4]介绍了利用串口、RS422、网络等方法实现将程序升级到处理器片内、片外Flash中。一般是先烧写一段BOOT程序,通过解析应用程序文件完成程序升级。这些方法往往存在BOOT程序无法升级自身、程序烧写无法脱离仿真器或编程器、应用程序运行无法实时升级等问题,影响了工程应用的可靠性和便捷性。

本文设计了一种基于CAN通信实现的通用程序在线升级方法,支持BOOT程序、应用程序两种模式下的升级。BOOT程序不仅支持升级应用程序,还支持升级BOOT程序自身。通过在上位机、下位机间设计一套升级服务协议,保证了程序升级过程的可靠性。针对程序升级的异常情况,设计了相应的恢复措施,保证了系统异常时能够及时恢复。此外,结合ZYNQ芯片多种启动模式,实现了通过SD卡启动程序完成BOOT程序烧写,不需要借助仿真器或编程器,提高了生产调试、工程维护的便捷性。

1 系统硬件设计

程序在线升级系统硬件总体结构如图1所示。

图1 系统硬件结构图

上位机通过以太网通信将程序下发给下位机管理插件,下位机管理插件通过CAN总线透传给目标插件,目标插件接收数据后写入片外Flash中。下位机可以根据实际应用需求配置多个目标插件,所有目标插件的程序均可以由上位机下发,管理插件根据每个目标插件的槽号节点转发完成程序升级。

目标插件硬件系统主要由ZYNQ-7000 片上系统、DDR3内存、片外Flash存储、SD卡存储、CAN接口电路、UART接口电路等组成,硬件框图如图2所示。ZYNQ-7000 SoC包含处理器系统(Processing System,PS)和可编程逻辑器件(Programmable Logic,PL)两部分,处理器系统集成了双核ARM Cortex-A9、存储器接口和丰富的外设接口,可编程逻辑器件包含大量FPGA的逻辑单元[7]。片外QSPI Flash作为非易失性存储,用于存储BOOT程序、双核应用程序、FPGA程序,程序运行在DDR3内存中。CAN接口用于与管理插件通信交互。UART负责串口调试信息展示,SD卡存储设备日志信息、生产调试烧写BOOT程序。

图2 目标插件硬件框图

2 系统软件设计

本文设计的程序在线升级方法可以在BOOT程序、应用程序运行过程中实时进行。系统软件采用双裸核(Standalone)的非对称多处理(Asymmetric MultiProcessing,AMP)模式总体架构设计,CPU0核完成程序在线升级功能,CPU1程序通过CPU0代理完成升级。通过代理模式可以避免在线升级过程中双核访问CAN、Flash、DDR等硬件资源竞争。软件上通过模块化方式设计,BOOT程序和应用程序可以快速复用CAN模块驱动、Flash模块驱动及程序升级模块等完成在线升级功能集成。

2.1 CAN模块驱动

ZYNQ-7000处理器系统内部集成两个CAN控制器,最大支持1 Mbps传输速率,可以满足系统要求。CAN驱动主要包括CAN模块硬件初始化、报文发送、接收处理。初始化配置硬件引脚、通信波特率、工作模式等。报文发送、接收采用中断方式处理,既可以节省CPU的资源,也能够保证及时响应CAN报文。CAN报文采用29位扩展帧格式,管理插件通过扩展帧中的应用报文类型、源地址、目的地址来实现对各个槽位的目标插件升级程序。通过在CAN驱动中增加报文重发机制、总线异常自恢复等措施,提高了程序在线升级过程的可靠性。

2.2 Flash模块驱动

Flash采用的是Micron公司MT25QL256芯片,该存储器一共有512个扇区,每个扇区大小为64 KB,共32 MB存储空间。Flash驱动主要包含硬件初始化、擦除扇区、写数据、读数据接口。通过识别文件名中关键字来确定不同程序写入的Flash位置,Flash的空间划分如表1所列。

表1 Flash空间分配

2.3 程序升级模块

在上位机、下位机间设计一套升级服务协议,可以提高程序升级过程的可靠性。上位机、下位机交互的报文数据帧格式如下:

帧头1帧头2类型长度内容校验码字节0字节1字节2字节3字节4~NN字节累加和

升级服务的应用层协议内容如表2所列。

表2 应用层协议内容

2.4 启动流程

通过BOOT程序、应用程序两种模式,实现在线升级功能。BOOT程序完成应用程序加载、升级及自身程序升级,应用程序完成自身程序升级和应用功能,两者通过集成CAN模块驱动、Flash模块驱动及程序升级模块来实现。ZYNQ-7000上电运行的启动流程如图3所示。

图3 启动流程

启动流程如下:

① 首先执行片内BootROM程序,完成对QSPI、SD等外设控制器初始化。

② 然后加载FSBL(First Stage Boot Loader)程序到OCM(On Chip Memory)上运行,FSBL完成GPIO、时钟、DDR3内存初始化后,加载BOOT程序到DDR3中运行。

③ BOOT程序判断当前模式和校验Flash内容,如果是BOOT模式或者Flash应用程序校验出错,则初始化CAN及中断,等待升级应用程序。如果是应用程序模式,则加载双核CPU0、CPU1应用程序,FPGA程序,跳转执行应用程序。

2.5 在线升级流程

BOOT和应用程序的在线升级过程基本一致,如图4所示,主要是升级服务应用层的交互过程。

图4 在线升级流程

① 上位机主动发起程序升级检查命令,下位机进入在线升级模式,解析命令中的文件类型、名称、长度计算总的Flash擦除时间,应答上位机擦除时间、报文校验结果。

② 上位机发送下载擦除命令,等待下位机返回Flash擦除操作结果。

③ 上位机发送下载请求命令,下位机应答文件类型校验结果。

④ 上位机发送下载地址段命令,通知下位机数据升级的Flash起始地址,下位机应答地址范围校验结果。

⑤ 上位机发送下载数据命令,逐个数据包发送程序内容,下位机接收后将数据写入Flash中。重复此过程,直到程序数据下载完成。

⑥ 上位机发送下载结束命令,通知下位机数据校验和,下位机回读Flash内容计算校验和,应答校验和比较结果。

⑦ 若步骤①~⑥上位机收到下位机否定应答,则上位机发送下载取消命令,取消本次升级。下位机中应用程序可能被擦写,重启后程序在BOOT中运行,等待下一次程序升级。

⑧ 上位机发送复位命令通知下位机启动看门狗复位,完成程序在线升级,执行新程序。

3 实验测试

通过上位机给下位机下载CPU0、CPU1以及FPGA程序,借助串口工具查看程序升级信息,分别进行正常升级、异常升级过程测试。通过上千次程序升级测试,验证升级功能正常。

3.1 正常升级测试

测试BOOT程序、应用程序模式下的升级功能,应用程序模式下的升级信息如图5所示。

图5 正常升级测试

图6 异常升级测试

3.2 异常升级测试

模拟升级过程异常断电、CPU0程序文件校验码出错。CPU0程序文件校验码出错升级信息如图6所示。此时新程序还没有写入Flash中,而Flash中的旧程序已经被擦除。设备重新上电后在BOOT程序中运行,可以重新升级应用程序恢复运行。

结 语

猜你喜欢

下位插件校验
自编插件完善App Inventor与乐高机器人通信
发射机房监控系统之下位机
炉温均匀性校验在铸锻企业的应用
基于jQUerY的自定义插件开发
景洪电厂监控系统下位机数据传输网络改造
围观党“下位”,吐槽帝“登基”
MapWindowGIS插件机制及应用
CAN总线并发通信时下位机应用软件设计
大型电动机高阻抗差动保护稳定校验研究
基于加窗插值FFT的PMU校验方法