一种对ZYNQ芯片程序镜像文件的加解密的方法与流程

文档序号:23419083发布日期:2020-12-25 11:40阅读:551来源:国知局
一种对ZYNQ芯片程序镜像文件的加解密的方法与流程

本发明涉及信息技术,特别涉及一种对zynq芯片程序镜像文件的加解密的方法。



背景技术:

随着信息技术的发展,zynq-7000q系列可编程soc器件在军工领域应用越来越多。其启动模式分为两种:使用静态存储器(例如nand、并行nor、串行nor(qspi)和sd卡)的安全启动模式。和使用jtag或者静态存储器的非安全启动模式。使用安全启动模式,需禁用jtag,无法在线调试。

zynq是一款xilinx推出的新型soc芯片,其结合了fpga和arm系统。是一个全可编程的嵌入式平台。zynq芯片内含aes-256解密引擎和hmac认证引擎,自带有安全启动功能,保护客户的设计不被盗用。安全启动过程:第一步电路上电,zynq开始执行片上bootrom的代码。第二步在加密的fsbl上执行rsa认证。第三步aes解密fsbl并且对fsbl进行hmac认证。第四步解密并认证过的fsbl存储在ocm中。第五步pl配置,最后程序启动。

安全启动模式的密钥保存在片上efuse或者bbram中,efuse仅支持一次可编程,掉电内容不丢失。bbram可支持反复编程,但是掉电内容丢失,因此需要外接电池。

该安全启动的缺点:1.如果密钥保存在efuse上,仅支持一次编程,一但启动将无法更改程序。如果客户需要升级软件,需要更换芯片。成本高。2.如果密钥保存在bbram内,硬件电路需要增加电池供电。在恶劣环境下,电池性能下降,会造成程序无法加载的风险。因此许多设备,不允许使用电池将无法使用该加密功能。3.如果启动安全模式,需禁用jtag,软件将无法进行在线调试,如果软件出现问题,将无法查找原因。



技术实现要素:

本发明的目的在于提供一种对zynq芯片程序镜像文件的加解密的方法,用于解决上述现有技术的问题。

本发明一种对zynq芯片程序镜像文件的加解密的方法,其中,包括:zynq镜像文件包括上传程序和应用程序,上传程序和应用程序存储在flash存储器中的不同地址中,上传程序的功能分为两个部分:第一个部分上传程序上电后启动定时器,rs422接口接收上位机软件发送的数据,根据帧头判断是否接收到上位机软件发送的应用程序镜像数据,若接收到有效数据,关闭定时器,并将接收到的镜像数据发送给fpga进行加密后烧写入flash的地址;第二个部分上传程序上电后未接收到上位机发送的有效数据,定时器中断响应,程序将进行跳转,flash存储器的模式由io模式切换成线性模式,读取flash的应用程序发送给fpga,进行解密,解密后写入ddr中,执行跳转,由此程序从上传程序进入应用程序;上传程序接收上位机发送的应用程序的镜像数据,对镜像数据进行加密解密,在程序更新时意外中止的情况下,重新上电应用程序重新更新,上传成功后,通过重新上电,自动跳转到用户应用程序。

根据本发明所述的对zynq芯片程序镜像文件的加解密的方法的一实施例,其中,包括:非安全启动模式的启动过程,阶段0:上电后执行bootrom中的代码,配置arm处理器和必要的外设;阶段1:执行fsbl,fsbl代码存储在flash中,包括ps的初始化和pl的比特流配置文件,bootrom代码把fsbl代码复制到ocm中,寻找有效的头文件,如果需找到有效头文件,将ps代码转移到ddr中,pl代码写入fpga中。

根据本发明所述的对zynq芯片程序镜像文件的加解密的方法的一实施例,其中,flash起始存储地址0x000000存储上传程序,应用程序存储起始地址为0x3d0000。

根据本发明所述的对zynq芯片程序镜像文件的加解密的方法的一实施例,其中,第一个部分上传程序上电后启动5s定时器,5s内rs422接口接收上位机软件发送的数据。

根据本发明所述的对zynq芯片程序镜像文件的加解密的方法的一实施例,其中,第二个部分上传程序上电后5s内未接收到上位机发送的有效数据,定时器中断响应。

根据本发明所述的对zynq芯片程序镜像文件的加解密的方法的一实施例,其中,将接收到的镜像数据发送给fpga进行加密后烧写入flash的0x3d0000地址。

根据本发明所述的对zynq芯片程序镜像文件的加解密的方法的一实施例,其中,解密后写入ddr中起始地址为0x100000,执行跳转,由ddr地址0x100000开始执行。

根据本发明所述的对zynq芯片程序镜像文件的加解密的方法的一实施例,其中,通过rs422接口接收上位机软件发送的数据。

本发明有数个优点:1.由于fpga加密镜像文件,所以加密算法灵活。适用于各种加密算法。2.该方法支持jtag在线调试,如果程序出现问题,可以通过jtag调试快速定位问题。3.该加密解密方法可重复烧写并支持软件在线升级,是一种低成本加密解密方法,有很强的实用价值。4.本发明安全性高,由于最终烧入存储芯片中的镜像文件是加密后的二进制文件,即使从flash中拷贝出二进制文件,也无法通过该文件分析出程序的内容。

附图说明

图1所示为一种对zynq芯片程序镜像文件的加解密的方法所对应系统的硬件电路框图;

图2为一种对zynq芯片程序镜像文件的加解密的方法的流程图。

具体实施方式

为使本发明的目的、内容、和优点更加清楚,下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。

图1所示为一种对zynq芯片程序镜像文件的加解密的方法所对应系统的硬件电路框图,如图1所示,本发明方案的硬件电路模块主要包括:zynq模块,ddr电路,flash存储模块,复位电路,电源电路,晶振及各接口电路。

如图1所示,非安全启动模式的启动过程。阶段0:程序上电后执行zynq7000soc内的bootrom中的代码,配置arm处理器和必要的外设。阶段1:执行fsbl。fsbl代码通常存储在flash中,包括ps的初始化和pl的比特流配置文件。bootrom代码把fsbl代码复制到ocm中,寻找有效的头文件,如果需找到有效头文件,将ps代码转移到ddr中,pl代码写入fpga中。阶段2:执行用户程序。zynq模块包括有arm处理器以及fpga。

本发明的zynq镜像文件包括上传程序和应用程序。两个程序存储在flash存储器中的不同地址中,flash起始存储地址0x000000存储上传程序,应用程序存储起始地址为0x3d0000。上传程序的主要功能分为两个部分:第一个部分上传程序上电后启动5s定时器,5s内rs422接口接收上位机软件发送的数据,根据帧头判断是否接收到上位机软件发送的应用程序镜像数据,若接收到有效数据,关闭定时器,并将接收到的镜像数据发送给fpga进行加密后烧写入flash的0x3d0000地址;第二个部分上传程序上电后5s内未接收到上位机发送的有效数据,定时器中断响应,程序将进行跳转,flash存储器的模式由io模式切换成线性模式,读取flash起始地址0x3d0000的应用程序发送给fpga,进行解密,解密后写入ddr中起始地址为0x100000,执行跳转,由ddr地址0x100000开始执行,由此程序从上传程序进入应用程序。上传程序的作用是接收上位机发送的应用程序的镜像数据,对镜像数据进行加密解密,保证在程序更新时意外中止的情况下,重新上电能够具备用户应用程序重新更新的能力,上传成功后,通过重新上电,程序能自动跳转到用户应用程序。应用程序为用户程序,最终功能由应用程序实现。软件流程图如图2所示。本发明,由于fpga加密解密使得烧写入flash存储器的应用程序的镜像数据不是原始数据,即使被恶意读取出来,也无法获得有用信息。应用程序是由上传程序烧写的,即使设备突然断电,重新上电后依然能够通过rs422接口重新上传应用程序。两个核心的难点:第一个核心点,由于项目规定烧写入flash的镜像数据不能是原始数据,要对镜像数据进行加密,而zynq芯片只具备硬件加密就是上面讲述的安全启动模式,启用zynq安全模式芯片flash将无法再进行二次烧写。该项目未来软件还需要升级,所以本人发明了一种通过fpga加密解密镜像数据的方法。第二个核心难点,zynq板卡通过rs422升级软件时如果突然断电,flash中的镜像文件不完整,程序将无法启动,必须通过jtag口挂摘仿真器,重新烧写软件,板卡才能工作。在工作环境中,板卡是装机在设备内部的,只留有对外接口(如rs422接口,rs485接口等),jtag口是密封在设备内的。所以本人发明了两个软件,上传软件和应用软件。通过rs422接口上传软件更新应用软件。这样上传过程中断电,上传软件不会破坏,所以可以重新上电继续通过rs422上传应用程序。。

如图2所示,包括:由于fpga加密解密使得烧写入flash存储器的应用程序的镜像数据不是原始数据,即使被恶意读取出来,也无法获得有用信息。应用程序是由上传程序烧写的,即使设备突然断电,重新上电后依然能够通过rs422接口重新上传应用程序。

对于烧写入flash的镜像数据不能是原始数据,要对镜像数据进行加密,而zynq芯片只具备硬件加密就是上面讲述的安全启动模式,启用zynq安全模式芯片flash将无法再进行二次烧写。该项目未来软件还需要升级,所以发明了一种通过fpga加密解密镜像数据的方法。zynq板卡通过rs422升级软件时如果突然断电,flash中的镜像文件不完整,程序将无法启动,必须通过jtag口挂摘仿真器,重新烧写软件,板卡才能工作。在工作环境中,板卡是装机在设备内部的,只留有对外接口(如rs422接口,rs485接口等),jtag口是密封在设备内的。所以通过rs422接口上传软件更新应用软件。这样上传过程中断电,上传软件不会破坏,所以可以重新上电继续通过rs422上传应用程序。

本发明的软件加密与zynq自带的安全启动模式有实质性区别。本发明是在zynq非安全启动模式下增加了用户应用程序的镜像数据加密功能。zynq芯片可重复使用,同时方便更改用户最新的程序。在调试阶段可使用jtag模式。

本发明提供了一种不使用zynq的安全启动模式,而是基于zynq非安全启动模式下的加密解密方法。本发明是通过fpga对程序镜像文件中需要加密的一部分代码进行加密并进行程序跳转运行。

与现有的芯片自带安全启动方式不同的是本发明的方式使用软件加密,将加密后的镜像数据烧写入flash存储器后,再进行启动。本发明的加密解密方法,适用场合为产品交付后软件需要在线升级,并要保证升级软件的安全性。

以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明技术原理的前提下,还可以做出若干改进和变形,这些改进和变形也应视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1