一种基于ZYNQ防呆设计的程序升级方法技术

技术编号:34766618 阅读:38 留言:0更新日期:2022-08-31 19:18
本发明专利技术提供一种基于ZYNQ防呆设计的程序升级方法,包括以下步骤:S1、FLASH存储地址分区;S2产生和固化底层程序MyFsbl数据文件;S3、产生主备份程序的数据文件;S4、程序数据组帧、发送、接收、解帧和校验;S5、FLASH分区升级;S6、程序升级完毕,断电重启。本发明专利技术提供了一种基于ZYNQ防呆设计的程序升级方法,该方法利用主备份存储的思想,每次只对主程序进行更新,当主程序在升级过程中发生意外时,能够启动备份程序进行恢复;同时备份程序设计轻量化,在FLASH存储空间较小时也能进行备份,提高了程序的可维护性和容错性。序的可维护性和容错性。序的可维护性和容错性。

【技术实现步骤摘要】
一种基于ZYNQ防呆设计的程序升级方法


[0001]本专利技术涉及电数字数据处理
,具体涉及一种基于ZYNQ 防呆设计的程序升级方法。

技术介绍

[0002]ZYNQ的软件程序更新和升级一般是在SDK环境下通过JTAG 接口操作来实现的。基于JTAG接口的升级方法虽然调试方便易于操作,但经常受空间以及传输距离的限制。在复杂、封闭、不可拆盖的环境中,很难用JTAG接口进行程序升级。这种情况下,上位机可通过网口、USB或1553B总线进行在线远程升级,不受复杂系统和复杂环境的限制。
[0003]在线远程升级时,数据传输错误和FLASH固化发生的错误,可通过多步校验进行解决。当程序升级面临异常情况如断电,导致 FLASH中的数据被擦除或只有部分数据写入时,FLASH数据异常程序无法启动。此时只能通过连接JTAG进行程序固化,如果是在复杂环境下,程序固化将变得非常困难。

技术实现思路

[0004]本专利技术是为了解决ZYNQ的软件程序更新问题,提供一种基于 ZYNQ防呆设计的程序升级方法,本专利技术利用主备份存储的思想,每次只对主程序进行更新,当主程序在升级过程中发生意外时,能够启动备份程序进行恢复;同时备份程序设计轻量化,在FLASH存储空间较小时也能进行备份,提高了程序的可维护性和容错性。
[0005]本专利技术提供一种基于ZYNQ防呆设计的程序升级方法,包括以下步骤:
[0006]S1、FLASH存储地址分区:将FLASH存储地址划分为底层程序MyFsbl数据区、主程序数据区和备份程序数据区,底层程序MyFsbl 数据区用于对升级数据进行接收、校验和固化;
[0007]S2、产生和固化底层程序MyFsbl数据文件:修改标准FSBL程序,增加MultiBootReg跳转长度的逻辑控制语句,然后通过SDK打包工具产生底层程序MyFsbl数据文件并固化到底层程序MyFsbl数据区,MultiBootReg跳转长度的逻辑控制语句用于判断分区头文件是否正常后进行跳转;
[0008]S3、产生备份程序:将备份程序进行轻量化设计,备份程序包括接收方式、解帧、校验和FLASH分区固化程序,待升级主程序数据文件中包括备份程序;
[0009]S4、产生主备份程序的数据文件:通过SDK的打包工具产生待升级主程序数据文件和备份程序数据文件,待升级数据文件包括待升级主程序数据文件和/或备份程序数据文件;
[0010]S5、数据组帧、发送、接收、解帧和校验:在上位机中将待升级数据文件进行组帧,上位机通过网口、USB或1553B总线将组帧后的文件发送给ZYNQ,ZYNQ对接收到的数据进行解帧和校验,并将校验核正确的数据存储在DDR中,当接收到完整的待升级数据包后停止接收;
[0011]S6、FLASH分区升级:将校验核正确的程序数据文件从DDR中读出,根据主程序标志和备份程序标志写入对应的FLASH分区地址中,然后对主程序数据区的数据是否正常进行校验并判断主程序数据区的数据是否正常,如果是,则进入步骤S7,如果否,则跳转到备份程序数据区,返回步骤S4;
[0012]S7、程序升级完毕,断电重启。
[0013]本专利技术所述的一种基于ZYNQ防呆设计的程序升级方法,作为优选方式,步骤S2包括以下步骤:
[0014]S21、通过SDK引入标准的FSBL程序,在标准FSBL程序调用 LoadBootImage之前增加MultiBootReg跳转长度的逻辑控制语句,其他程序保持不变;
[0015]S22、逻辑控制语句包括:读取FLASH主程序区的数据,判断分区头文件是否正常,如果是,则将MultiBootReg跳转长度置到主程序数据区,置软件复位寄存器;如果否,则主程序数据区无法正常启动,将MultiBootReg跳转长度置到备份程序数据区,置软件复位寄存器;
[0016]S23、通过SDK的Creat Boot Image打包工具产生底层程序 MyFsbl数据文件,底层程序MyFsbl数据文件为MyFsbl.bin,并通过 SDK的固化工具将MyFsbl.bin固化到底层程序MyFsbl数据区。
[0017]本专利技术所述的一种基于ZYNQ防呆设计的程序升级方法,作为优选方式,步骤S2包括以下步骤:
[0018]S21、通过SDK引入标准的FSBL程序,在标准FSBL程序调用 LoadBootImage之前增加MultiBootReg跳转长度的逻辑控制语句,其他程序保持不变;
[0019]S22、逻辑控制语句包括:读取FLASH主程序区的数据,判断分区头文件是否正常,如果是,则将MultiBootReg跳转长度置到主程序数据区,置软件复位寄存器;如果否,则主程序数据区无法正常启动,将MultiBootReg跳转长度置到备份程序数据区,置软件复位寄存器;
[0020]S23、通过SDK的Creat Boot Image打包工具产生底层程序 MyFsbl数据文件,底层程序MyFsbl数据文件为MyFsbl.bin,并通过上位机发送到底层程序MyFsbl数据区进行固化。
[0021]本专利技术所述的一种基于ZYNQ防呆设计的程序升级方法,作为优选方式,底层程序MyFsbl数据文件只固化一次,不再擦除和修改,后期只升级应用程序。
[0022]本专利技术所述的一种基于ZYNQ防呆设计的程序升级方法,作为优选方式,步骤S3中,接收方式为以下任意一种:网口、USB、1553B 总线。
[0023]本专利技术所述的一种基于ZYNQ防呆设计的程序升级方法,作为优选方式,步骤S4中,待升级主程序数据文件包括标准的FSBL程序、FPGA的比特流文件和ARM端的应用程序;备份程序数据文件包括标准的FSBL程序和ARM端的应用程序。
[0024]本专利技术所述的一种基于ZYNQ防呆设计的程序升级方法,作为优选方式,步骤S4中,备份程序数据文件通过SDK的固化工具固化到备份程序数据区。
[0025]本专利技术所述的一种基于ZYNQ防呆设计的程序升级方法,作为优选方式,步骤S6包括以下步骤:
[0026]S61、将校验核正确的程序数据文件从DDR中读出,根据主程序标志位和备份程序
标志位,将待升级主程序数据文件写入主程序数据区;将备份程序数据文件写入备份程序数据区;
[0027]S62、写入完毕后读取主程序数据区,并与下发的校验核进行校验,如果校验结果为一致,则进入步骤S7,如果校验结果为不一致,则跳转到备份程序数据区,返回步骤S4。
[0028]底层程序MyFsbl数据区在正常启动时运行。
[0029]本专利技术具有以下优点:
[0030](1)通过利用主备份程序存储的思想,在备份程序区固化了可对升级数据进行接收、校验和固化的程序,每次升级时只对主程序区进行升级,不再对备份程序区进行擦除和修改。即使系统在主程序升级过程发生意外情况,也能够保证系统正常启动备份程序,进行升级数据的接收、校验和重新固化,从而提高了嵌入式系统本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于ZYNQ防呆设计的程序升级方法,其特征在于:包括以下步骤:S1、FLASH存储地址分区:将FLASH存储地址划分为底层程序MyFsbl数据区、主程序数据区和备份程序数据区,所述底层程序MyFsbl数据区用于对升级数据进行接收、校验和固化;S2、产生和固化底层程序MyFsbl数据文件:修改标准FSBL程序,增加MultiBootReg跳转长度的逻辑控制语句,然后通过SDK打包工具产生底层程序MyFsbl数据文件并固化到所述底层程序MyFsbl数据区,MultiBootReg跳转长度的逻辑控制语句用于判断分区头文件是否正常后进行跳转;S3、产生备份程序:将备份程序进行轻量化设计,所述备份程序包括接收方式、解帧、校验和FLASH分区固化程序,待升级主程序数据文件中包括所述备份程序;S4、产生主备份程序的数据文件:通过SDK的打包工具产生待升级主程序数据文件和备份程序数据文件,待升级数据文件包括所述待升级主程序数据文件和/或所述备份程序数据文件;S5、数据组帧、发送、接收、解帧和校验:在上位机中将所述待升级数据文件进行组帧,所述上位机通过网口、USB或1553B总线将组帧后的文件发送给ZYNQ,所述ZYNQ对接收到的数据进行解帧和校验,并将校验核正确的数据存储在所述DDR中,当接收到完整的待升级数据包后停止接收;S6、FLASH分区升级:将校验核正确的程序数据文件从所述DDR中读出,根据主程序标志和备份程序标志写入对应的FLASH分区地址中,然后对所述主程序数据区的数据进行校验并判断述主程序数据区的数据是否正常,如果是,则进入步骤S7,如果否,则跳转到所述备份程序数据区,返回步骤S4;S7、程序升级完毕,断电重启。2.根据权利要求1所述的一种基于ZYNQ防呆设计的程序升级方法,其特征在于:步骤S2包括以下步骤:S21、通过SDK引入标准的FSBL程序,在标准FSBL程序调用LoadBootImage之前增加MultiBootReg跳转长度的逻辑控制语句,其他程序保持不变;S22、逻辑控制语句包括:读取FLASH主程序区的数据,判断分区头文件是否正常,如果是,则将MultiBootReg跳转长度置到所述主程序数据区,置软件复位寄存器;如果否,则所述主程序数据区无法正常启动,将MultiBootReg跳转长度置到所述备份程序数据区,置软件复位寄存器;S23、通过SDK的Creat Boot Image打包工具产生所述底层程序MyFsbl数据...

【专利技术属性】
技术研发人员:周希娃张国玉李洋董晖胡继军
申请(专利权)人:航天长征火箭技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1