ZYNQ7000 全可编程SOC 应用软件更新技术研究
2020-12-08
北京轩宇空间科技有限公司,北京 100086
ZYNQ7000 全可编程SOC 基于Xilinx 全可编程可扩展处理平台结构,其内部集成了ARM 公司的双核Cortex™-A9 处理器系统(processing system,PS)和Xilinx 的可编程逻辑单元(programmable logic,PL),真正实现了软件和硬件的协同设计[1],同时也大大缩短了系统的开发时间。因此,ZYNQ7000 全可编程SOC 在嵌入式领域得到了广泛的应用。本文所研究的内容是基于ZYNQ7000系列XC7Z100 主控芯片实现的。
以往的产品都是通过预留的调试接口进行应用软件更新,现要求产品在组装前不能含有与整机无关的冗余接口,同时具备应用软件更新的功能。经调研发现,大部分产品都是使用调试接口进行应用软件更新,还有的产品具有应用软件更新的专用接口。为了解决正式产品组装完成后主控板应用软件更新的问题,复用了主控板和外部的RS422 串口。在需要进行软件更新的时候,通过此RS422 串口向主控制板传输新版本的应用软件数据包,否则用此RS422 串口和外部进行正常的数据通信。
1 系统硬件配置
基于ZYNQ7000 系列XC7Z100 主控芯片的最小系统框图如图1 所示[2]。
图1 XC7Z100 主控芯片的最小系统
DDR3 的型号为MT41J256M16HA-125,选用2 片组成32 位内存模组,总容量为1 GB;SPI-Flash的型号为S25FL256SAGMFI001,总容量为32 MB;PS 和PL 的工作时钟分别是33.3 MHz 和50 MHz[3];RS422 接口芯片为LTC2851,采用3.3 V的电源,支持20 Mbps 的最高数据速率;电源模块为最小系统提供1.8 V、3.3 V、5 V 等供电。
2 启动与配置原理
经查阅资料可知,ZYNQ7000 全可编程SOC启动与配置过程包含以下3 个阶段:
阶段1该阶段也称为BootRom,主要用于控制初始设备的启动。BootRom 是系统复位后,处理器所执行的用户不可修改的代码,该部分代码已经固化到BootRom 中[4−5]。
阶段2该阶段通常执行第一级启动引导程序(first stage boot loader,FSBL)[6]。
阶段3该阶段一般执行用户自己的软件程序。
基于以上启动与配置的过程,为了实现采用串口进行应用软件更新,需要在第3 阶段先执行具有应用软件更新功能的程序(简称监控软件),然后由监控软件控制接下来的程序流程,即系统上电后首先由阶段2 引导启动监控软件,若需要进行应用软件更新,则在上位机软件的配合下进行应用软件数据包更新;若不需要更新应用软件,则5 s 后监控软件进行系统软复位[7],开始启动现有的应用软件。采用串口进行应用软件更新的系统启动流程如图2 所示。
图2 系统启动流程
FSBL 的主要功能为根据启动标志选择启动监控软件还是应用软件[8],启动标志为0x5A5A 时启动应用软件,否则启动监控软件。在系统软件进入软件复位流程且复位执行前将启动标志配置为0x5A5A,软件复位后在FSBL 中完成启动区域判别后再将启动标志配置为0xFFFF。这样每次系统上电后都先启动监控软件,而每次系统软件复位后都会启动应用软件。
3 SPI-Flash 空间分配
综上所述,采用串口实现应用软件更新需要引导软件、监控软件和应用软件等3 个镜像文件[9],同时还需要1 个启动SPI-Flash 区域的标志,所以需要至少将主控板上的SPI-Flash 划分出独立的4 个区域(0 区、1 区、2 区和3 区),分别用于存放引导软件、启动标志、监控软件和应用软件。结合项目实际情况,引导软件为86 KB,启动标志为2 B,监控软件为6 MB,应用软件为8 MB,SPIFlash 分区示意图如图3 所示。
4 监控软件工作流程
基于前面的启动与配置原理和SPI-Flash 空间分配,接下来进行监控软件的流程设计[10−12]。监控软件包括监控软件主程序和串口中断程序,相应的工作流程也包含监控软件主程序流程和串口中断程序流程[13−15]。
1)监控软件主程序流程
监控软件主程序流程如图4 所示。获取数据帧程序流程如图5 所示。解析串口数据帧程序流程如图6 所示。
2)监控软件串口中断程序流程
监控软件串口中断程序流程如图7 所示。
图4 监控软件主程序流程
图5 获取数据帧程序流程
5 应用软件更新操作流程
在使用监控软件进行应用软件更新前需要先用仿真器将引导软件和监控软件固化到主控板的SPI-Flash 中,然后就可以使用与监控软件配套开发的上位机软件配合监控软件通过串口完成应用软件的更新[16−20]。在打开上位机软件之前需要用RS422 转USB 线缆将主控板与PC 机相连接,接下来的操作流程如下:
图6 解析串口数据帧程序流程
图7 串口中断程序流程
1)打开上位机软件,并设置串口参数,界面如图8 所示。
2)在烧写类型选择应用软件后,并选择文件路径,界面如图9 所示。
3)选择好文件路径后点击开始上传,界面如图10 所示。
4)给主控板上电,上位机软件开始上传数据,待上位机软件显示Flash 烧写成功后,表明应用软件更新完毕,界面如图11 所示。
图8 上位机软件界面
图9 选择文件路径界面
图10 点击开始上传界面
图11 Flash 烧写成功界面
经过以上步骤后,再重新给主控板上电,主控板复位后启动的就是更新版本的应用软件。同时,此方案也能实现引导软件和监控软件的更新,这样就完全实现了在已组装设备状态不变的状态下对主控板内所有软件进行更新。
6 结论
本文从实际的需求出发,基于ZYNQ7000 全可编程SOC 启动与配置的原理,经过方案分析研究和实际验证,可得出以下结论:
1)复用主控板与外部的RS422 接口,采用对SPI-Flash 进行分区引导与启动的方式,在未使用对产品应用软件更新专用接口的情况下实现了对主控板应用软件的更新。
2)接下来,可以通过千兆网接口来实现远距离多个产品的应用软件更新。
3)进一步可将此方法应用于无线传输领域,实现远程在轨设备的应用软件更新。
此应用技术对智能化、无人化的嵌入式系统开发具有重要的意义。