«上一篇
文章快速检索     高级检索
下一篇»
  应用科技  2020, Vol. 47 Issue (4): 71-74, 81  DOI: 10.11991/yykj.201911012
0

引用本文  

吴凤柱, 王斌, 张铖林. ZYNQ7000全可编程SOC应用软件更新技术研究[J]. 应用科技, 2020, 47(4): 71-74, 81. DOI: 10.11991/yykj.201911012.
WU Fengzhu, WANG Bin, ZHANG Chenglin. Research on application software update technique of ZYNQ7000 AP SOC[J]. Applied Science and Technology, 2020, 47(4): 71-74, 81. DOI: 10.11991/yykj.201911012.

通信作者

吴凤柱,E-mail:wfzhed@126.com

作者简介

吴凤柱,男,高级软件工程师

文章历史

收稿日期:2019-11-20
网络出版日期:2020-07-13
ZYNQ7000全可编程SOC应用软件更新技术研究
吴凤柱, 王斌, 张铖林    
北京轩宇空间科技有限公司,北京 100086
摘要:为了复用主控板现有RS422接口实现应用软件的更新,基于ZYNQ7000全可编程SOC,对主控板应用软件更新技术进行了深入地分析和研究。运用SPI-Flash分区引导与启动的思想,通过主控板对外的RS422接口实现了应用软件的更新。在精简了主控板对外接口的前提下,保证了实际功能需求,此方法具有重要的理论意义及工程实际应用价值。
关键词ZYNQ7000    SOC    主控板    应用软件    SPI-Flash    引导与启动    RS422    全可编程    
Research on application software update technique of ZYNQ7000 AP SOC
WU Fengzhu, WANG Bin, ZHANG Chenglin    
Beijing Sunwise Space Technology Ltd, Beijing 100086, China
Abstract: In order to realize the application software update of the existing RS422 interface of the multiplex main control board, the application software update technique of the main control board is analyzed and studied deeply based on ZYNQ7000 all programmable SOC. The application software is updated through the external RS422 interface of the main control board, using the thought of SPI-Flash partition guide and boot. This method simplifies the external interface of the main control board, ensures the actual functional requirements. It has important theoretical significance and practical application value in engineering.
Keywords: ZYNQ7000    SOC    main control board    application software    SPI-Flash    guide and boot    RS422    all programmable(AP)    

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]

Download:
图 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所示。

Download:
图 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,SPI-Flash分区示意图如图3所示。

Download:
图 3 Flash分区示意
4 监控软件工作流程

基于前面的启动与配置原理和SPI-Flash空间分配,接下来进行监控软件的流程设计[10-12]。监控软件包括监控软件主程序和串口中断程序,相应的工作流程也包含监控软件主程序流程和串口中断程序流程[13-15]

1)监控软件主程序流程

监控软件主程序流程如图4所示。获取数据帧程序流程如图5所示。解析串口数据帧程序流程如图6所示。

Download:
图 4 监控软件主程序流程
Download:
图 5 获取数据帧程序流程
Download:
图 6 解析串口数据帧程序流程

2)监控软件串口中断程序流程

监控软件串口中断程序流程如图7所示。

Download:
图 7 串口中断程序流程
5 应用软件更新操作流程

在使用监控软件进行应用软件更新前需要先用仿真器将引导软件和监控软件固化到主控板的SPI-Flash中,然后就可以使用与监控软件配套开发的上位机软件配合监控软件通过串口完成应用软件的更新[16-20]。在打开上位机软件之前需要用RS422转USB线缆将主控板与PC机相连接,接下来的操作流程如下:

1) 打开上位机软件,并设置串口参数,界面如图8所示。

Download:
图 8 上位机软件界面

2) 在烧写类型选择应用软件后,并选择文件路径,界面如图9所示。

Download:
图 9 选择文件路径界面

3) 选择好文件路径后点击开始上传,界面如图10所示。

Download:
图 10 点击开始上传界面

4) 给主控板上电,上位机软件开始上传数据,待上位机软件显示Flash烧写成功后,表明应用软件更新完毕,界面如图11所示。

Download:
图 11 Flash烧写成功界面

经过以上步骤后,再重新给主控板上电,主控板复位后启动的就是更新版本的应用软件。同时,此方案也能实现引导软件和监控软件的更新,这样就完全实现了在已组装设备状态不变的状态下对主控板内所有软件进行更新。

6 结论

本文从实际的需求出发,基于ZYNQ7000全可编程SOC启动与配置的原理,经过方案分析研究和实际验证,可得出以下结论:

1)复用主控板与外部的RS422接口,采用对SPI-Flash进行分区引导与启动的方式,在未使用对产品应用软件更新专用接口的情况下实现了对主控板应用软件的更新。

2)接下来,可以通过千兆网接口来实现远距离多个产品的应用软件更新。

3)进一步可将此方法应用于无线传输领域,实现远程在轨设备的应用软件更新。

此应用技术对智能化、无人化的嵌入式系统开发具有重要的意义。

参考文献
[1] 陆佳华, 潘祖龙, 彭竞宇. 嵌入式系统软硬件协同设计实战指南[M]. 第2版. 北京: 机械工业出版社, 2014. (0)
[2] 陶永才,巴阳. 嵌入式系统设计与开发实践[M]. 第2版. 北京: 清华大学出版社, 2017. (0)
[3] 刘洪涛. ARM嵌入式体系结构与接口技术[M]. 北京: 人民邮电出版社, 2010. (0)
[4] 何宾, 张艳辉. Xilinx Zynq-7000嵌入式系统设计与实现[M]. 北京: 电子工业出版社, 2017. (0)
[5] 符晓 ,张国斌 , 朱洪顺. Xilinx ZYNQ-7000 AP SOC开发实践指南[M]. 北京: 清华大学出版社, 2015. (0)
[6] 秦山虎 ,刘洪涛. ARM处理器开发详解[M]. 北京: 电子工业出版社, 2016. (0)
[7] 张石. ARM Cortex-A9嵌入式技术教程[M]. 北京: 机械工业出版社, 2018. (0)
[8] 魏权利 ,李丽萍, 林粤伟. 嵌入式系统原理与应用[M]. 北京: 机械工业出版社, 2014. (0)
[9] 林天静, 阮翔, 刘春. 基于Flash控制器的FPGA在线加载功能设计[J]. 电子技术应用, 2019(1): 88-91. (0)
[10] 宋凯, 高寒. 基于Zynq-7000的自动化监测系统BSP设计与实现[J]. 电子技术应用, 2018(9): 67-70, 74. (0)
[11] 张邦术. 嵌入式软件设计之思想与方法[M]. 北京: 北京航空航天大学出版社, 2019. (0)
[12] 何坚. 嵌入式软件开发技术[M]. 北京: 科学出版社, 2018. (0)
[13] 侯殿有. 嵌入式系统开发基础——基于ARM9微处理器C语言程序设计[M]. 北京: 清华大学出版社, 2018. (0)
[14] 王一萍, 梁伟, 李长荣, 等. C语言从入门到项目实战[M]. 北京: 水利水电出版社, 2019. (0)
[15] 苏小红. C语言大学实用教程[M]. 第4版. 北京: 电子工业出版社, 2017. (0)
[16] 谭浩强. C++程序设计[M]. 第3版. 北京: 清华大学出版社, 2015. (0)
[17] 谭玉波. C++从入门到精通[M]. 北京: 人民邮电出版社, 2019. (0)
[18] 朱少民. 全程软件测试[M]. 第3版. 北京: 人民邮电出版社, 2019. (0)
[19] 赵国亮, 叶东升. 董丽, 等. 嵌入式软件测试与实践[M]. 北京: 机械工业出版社, 2018. (0)
[20] 刘海峰. 丁磊. 星载嵌入式软件的构件化体系研究[J]. 软件, 2016(7): 109-113. DOI:10.3969/j.issn.1003-6970.2016.07.022 (0)