一种基于xilinx soc芯片的在线更新及防成砖方法
技术领域
1.本发明涉及通用信号处理模块设计领域,具体涉及一种基于xilinx soc芯片的在线更新及防成砖方法。
背景技术:
2.zynq-7000是基于xilinx全可编程的可扩展处理平台结构,该结构在单芯片内集成了具有丰富特点的双核arm cortex-a9多核处理器的处理系统(processing system,ps)和xilinx可编程逻辑(programmable logic pl)。双核arm cortex-a9包含片上存储器、外部存储器接口和一套丰富的i/o外设。zynq-7000中的pl用于扩展功能,以满足特定的功能需求。
3.传统的程序更新方法,一种是使用usb-blaster等仿真器通过jtag(joint test action group联合测试行动小组)方式将程序写入到flash里,常用的有spi flash、nor flash等,当系统中存在zynq芯片板卡时,需要通过仿真器进行程序更新;另一种方法是用sd卡来存储程序,可通过去下sd卡,利用读卡器等设备将更新程序拷贝至sd卡,重新安装sd卡即可完成程序的更新。
4.现有的在线更新方案主要都是仅实现了在线更新的功能,并未对在线更新中出现的异常情况(更新失败、更新过程中通讯中断)进行保护机制的设计。
技术实现要素:
5.本发明的目的在于针对现有的在线更新方案仅实现了在线更新的功能,并未对在线更新中出现的异常情况进行保护,容易出现卡死的情况;针对此不足,提出了一种基于xilinx soc芯片的在线更新及防成砖方法。
6.为了实现上述目标,本发明采用如下的技术方案:一种基于xilinx soc芯片的在线更新及防成砖方法,包括zynq系统,所述zynq系统包括上位机、网络物理层交互phy芯片、zynq板卡、qspi控制器、qspi flash芯片、ddr3存储器、eeprom存储芯片和下位机;所述上位机发起在线更新命令和进行在线更新固件数据发送;所述网络物理层交互phy芯片用于实现上位机与zynq板卡之间的网络数据协议通信的物理层转换;所述zynq板卡将接收到的固件数据缓存在ddr3存储器内;所述qspi控制器将缓存在ddr3存储器内的固件数据存储于qspi flash芯片,并将固件更新位置写入eeprom存储芯片。
7.作为本发明的进一步优选,所述qspi flash芯片拆分为三个固件存储区域,包括golden bin区域、update bin1区域和update bin2区域;所述golden bin区域用于存储初始的固件数据;所述update bin1区域和update bin2区域用于交替存储在线更新文件。
8.一种基于xilinx soc芯片的在线更新及防成砖方法,包括以下步骤:s1、软件开发工具包生成zynq系统镜像update bin文件;s2、上位机根据软件开发工具包生成的zynq系统镜像update bin文件生成md5校
验码文件;s3、设置zynq板卡的boot模式为qspi flash启动模式,并上电启动等待运行golden bin区域镜像;s4、建立zynq板卡与上位机的网络通信,上位机载入update bin文件与md5校验码文件,并通过md5校验码文件对update bin文件进行文件完整性校验;s5、若update bin文件不完整,则返回s2;若update bin文件完整,则进行s6;s6、上位机下发在线更新命令,将update bin文件与md5校验码文件发送至下位机;s7、zynq板卡进入在线更新模式,下位机接收update bin文件,并将其缓存至ddr3存储器中,根据接收到的md5校验码文件对update bin文件进行文件完整性校验;s8、若update bin文件不完整,则返回s4;若update bin文件完整,则进行s9;s9、下位机读取eeprom存储芯片中最新固件更新位置,所述固件更新位置为镜像区域标志位;根据最新镜像区域标志位选择该固件更新区域的首地址为更新起始地址;s10、下位机根据update bin文件的文件大小和更新起始地址,对固件更新区域执行擦除命令;s11、下位机执行写入命令,所述写入命令为将ddr3存储器中缓存的update bin文件由更新起始地址逐次写入qspi flash芯片中;s12、下位机执行读出命令,所述读出命令为由更新起始地址逐次读出qspi flash芯片中与update bin文件大小对应存储区域的数据,并与md5校验码文件进行文件完整性校验;s13、下位机根据s9中读取出的镜像区域标志位,判断下次更新写入区域标志位,并将其写入eeprom存储芯片中。
9.作为本发明的进一步优选,所述最新镜像区域标志位包括:golden bin区域标志位、update bin1区域标志位和update bin2区域标志位。
10.作为本发明的进一步优选,所述s13具体包括:若下位机读取出的镜像区域标志位为golden bin区域对应标志位,则下次更新写入区域标志位为update bin1区域对应标志位;若下位机读取出的镜像区域标志位为update bin1区域对应标志位,则下次更新写入区域标志位为update bin2区域对应标志位;若下位机读取出的镜像区域标志位为update bin2区域对应标志位,则下次更新写入区域标志位为update bin1区域对应标志位。
有益效果
11.本发明提出的一种基于xilinx soc芯片的在线更新及防成砖方法,与现有技术相比,具有如下有益效果:1、将qspi flash芯片拆分为三个固件存储区域,使更新区域与下位机当前运行固件区域相互独立,完美避免了更新失败后下电再上电导致的zynq板卡无法启动成砖的后果;2、设置三个分区,可以实现版本回退,不仅可以回退至初始版本,还可以回退至上
一版本,使更新更加灵活;3、通过多次文件完整性校验,解决了更新过程中因为各种异常情况导致更新失败最终导致系统无法启动的问题,避免更新失败,导致的无法启动;4、本发明以太网接口实现了zynq在线升级,使用简单通用性强;同时也适用于系统中存在多个zynq板卡时用一个以太网接口来更新所有zynq程序;5、本发明的在线更新方法,需要完成标志位的更新,才能完成更新,可以有效避免更新成砖的情况。
附图说明
12.图1是本发明的系统框图及分区设计框图;图2是本发明系统更新流程图。
实施方式
13.以下结合附图和具体实施例对本发明作具体的介绍。
14.目前已有在线更新方案如下:1、基于以太网口 zynq芯片 ddr3存储器对外部qspi flash存储器进行固件更新。基于zynq的单板或多板系统,包括1个或多个zynq板;系统通过phy芯片扩展一个千兆网口与上位机相连;更新前需要使用传统更新方法,将zynq的bootmode设置为jtag加载模式,连接仿真器,将生成的zynq系统镜像文件烧写到qspi flash中。然后通过上位机将需要更新的镜像文件发送给zynq,zynq缓存在ddr3存储器中,并将更新数据写入qspi fplash中。
15.2、基于usb zynq芯片 ddr3存储器对外部qspi flash存储器进行固件更新。通过pc机的usb接口将固件发送至zynq芯片,并存储至ddr3存储芯片中;对flash芯片进行数据擦除操作,并将ddr3存储芯片中的固话程序文件写入flash芯片中。
16.当前已有的在线更新方法无法针对更新过程中的异常情况进行保护,如更新过程中板卡掉电导致更新固件中的fsbl部分没有正确写入flash中,或者更新的固件被损坏的情况。这些情况都会导致在线更新的设备最终无法启动。并且没有保证更新文件的准确性的相关措施,这样一旦将错误的或者被损坏的固件镜像写入flash中,也会导致设备在完成在线更新重新加载固件镜像时,无法正确启动。
实施例
17.一种基于xilinx soc芯片的在线更新及防成砖方法,包括zynq系统,所述zynq系统包括上位机、网络物理层交互phy芯片、zynq板卡、qspi控制器、qspi flash芯片、ddr3存储器、eeprom存储芯片和下位机。
18.所述qspi flash芯片拆分为三个固件存储区域,包括golden bin区域、update bin1区域和update bin2区域;所述golden bin区域用于存储初始的固件数据;所述update bin1区域和update bin2区域用于交替存储在线更新文件。
19.golden bin区域主要是产品出厂前以传统usb-blaster仿真器通过jtag将golden镜像烧写到至此区域。update bin1区域与update bin2区域是在线更新文件时,乒乓更新(首次更新update bin1、下一次更新update bin2,第三次更新update bin1,以此进行乒乓
更新。设备或者板卡首次更新固件,需以传统usb-blaster仿真器通过jtag将golden镜像烧写到flash的golden区。)的形式对这两区域进行依次在线更新。golden bin区域只有在首次给板卡刷入固件时,才会进行此区域的固件下载,此后此区域均不会再进行数据写入操作,以保证flash中永远都存在一个稳定的固件版本。
20.所述上位机发起在线更新命令和进行在线更新固件数据发送;所述网络物理层交互phy芯片用于实现上位机与zynq板卡之间的网络数据协议通信的物理层转换;所述zynq板卡将接收到的固件数据缓存在ddr3存储器内;所述qspi控制器将缓存在ddr3存储器内的固件数据存储于qspi flash芯片,并将固件更新位置写入eeprom存储芯片。
实施例
21.一种基于xilinx soc芯片的在线更新及防成砖方法,包括以下步骤:s1、软件开发工具包生成zynq系统镜像update bin文件;s2、上位机根据软件开发工具包生成的zynq系统镜像update bin文件生成md5校验码文件;s3、设置zynq板卡的boot模式为qspi flash启动模式,并上电启动等待运行golden bin区域镜像;s4、建立zynq板卡与上位机的网络通信,上位机载入update bin文件与md5校验码文件,并通过md5校验码文件对update bin文件进行文件完整性校验;s5、若update bin文件不完整,则返回s2;若update bin文件完整,则进行s6;s6、上位机下发在线更新命令,将update bin文件与md5校验码文件发送至下位机;s7、zynq板卡进入在线更新模式,下位机接收update bin文件,并将其缓存至ddr3存储器中,根据接收到的md5校验码文件对update bin文件进行文件完整性校验;s8、若update bin文件不完整,则返回s4;若update bin文件完整,则进行s9;s9、下位机读取eeprom存储芯片中最新固件更新位置,所述固件更新位置为镜像区域标志位;根据最新镜像区域标志位选择该固件更新区域的首地址为更新起始地址;所述最新镜像区域标志位包括:golden bin区域标志位、update bin1区域标志位和update bin2区域标志位。
22.若最新镜像区域标志位显示最新固件为golden bin区域,则选择更新flash起始地址为update bin1区域首地址;若最新镜像区域标志位显示最新固件为update bin1区域,则选择更新flash起始地址为update bin2区域首地址;若最新镜像区域标志位显示最新固件为update bin2区域,则选择更新flash起始地址为update bin1区域首地址。
23.s10、下位机根据update bin文件的文件大小和更新起始地址,对固件更新区域执行擦除命令;s11、下位机执行写入命令,所述写入命令为将ddr3存储器中缓存的update bin文件由更新起始地址逐次写入qspi flash芯片中;s12、下位机执行读出命令,所述读出命令为由更新起始地址逐次读出qspi flash
芯片中与update bin文件大小对应存储区域的数据,并与md5校验码文件进行文件完整性校验;s13、下位机根据s9中读取出的镜像区域标志位,判断下次更新写入区域标志位,并将其写入eeprom存储芯片中。
24.若下位机读取出的镜像区域标志位为golden bin区域对应标志位,则下次更新写入区域标志位为update bin1区域对应标志位;若下位机读取出的镜像区域标志位为update bin1区域对应标志位,则下次更新写入区域标志位为update bin2区域对应标志位;若下位机读取出的镜像区域标志位为update bin2区域对应标志位,则下次更新写入区域标志位为update bin1区域对应标志位。
实施例
25.本发明中提到的版本回退、恢复出厂设置功能,都可以由上位机主动通过网络通信发送指定命令给下位机,下位机根据接收到的命令进行eeprom存储芯片中的镜像区域标志位的修改。
26.镜像区域标志位修改完成后,有两种情况,如下:1、zynq板卡不断电的情况下,下位机会直接更改zynq板卡的muiltboot reg寄存器,将系统启动时,boot模式的寻址地址指向指定区域的首地址,并执行系统软复位命令,使zynq板卡从muiltboot reg寄存器指定的地址开始寻找完整镜像,并运行镜像。
27.2、zynq板卡断电并重新上电的情况下,下位机首次启动会先启动golden bin镜像,golden bin镜像运行并初始化完外设时,进行eeprom存储芯片中最新镜像标志位读取,根据读取到的标志位选择是否需要进行程序跳转,若程序需要跳转至update bin1或者updatebin2 区域,则更改zynq板卡的muiltboot reg寄存器,将系统启动时,boot模式的寻址地址指向指定区域的首地址,并执行系统软复位命令,使zynq板卡从muiltboot reg寄存器指定的地址开始寻找完整镜像,并运行镜像。
28.以上显示和描述了本发明的基本原理、主要特征和优点。本行业的技术人员应该了解,上述实施例不以任何形式限制本发明,凡采用等同替换或等效变换的方式所获得的技术方案,均落在本发明的保护范围内。