CN117908936A - 一种提高fpga加载速度和可靠性的软件在线升级方法 - Google Patents
一种提高fpga加载速度和可靠性的软件在线升级方法 Download PDFInfo
- Publication number
- CN117908936A CN117908936A CN202311385035.7A CN202311385035A CN117908936A CN 117908936 A CN117908936 A CN 117908936A CN 202311385035 A CN202311385035 A CN 202311385035A CN 117908936 A CN117908936 A CN 117908936A
- Authority
- CN
- China
- Prior art keywords
- program
- fpga
- starting
- data
- reliability
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 109
- 230000008569 process Effects 0.000 claims abstract description 52
- 238000012795 verification Methods 0.000 claims description 10
- 235000015429 Mirabilis expansa Nutrition 0.000 claims description 7
- 244000294411 Mirabilis expansa Species 0.000 claims description 7
- 235000013536 miso Nutrition 0.000 claims description 7
- 230000009191 jumping Effects 0.000 claims description 3
- 239000003999 initiator Substances 0.000 claims 1
- 230000002159 abnormal effect Effects 0.000 description 5
- 125000004122 cyclic group Chemical group 0.000 description 3
- 238000003860 storage Methods 0.000 description 3
- 230000007547 defect Effects 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000007306 turnover Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明提供一种提高FPGA加载速度和可靠性的软件在线升级方法,在FLASH存储芯片中增加热启动开关,用于控制FPGA上电后直接加载FLASH两份程序中某一份程序,提高了FPGA上电后启动并加载程序的速度;在FPGA进行软件在线升级时,依次对两个程序区进行数据更新,保证两个程序区软件版本的一致性;FPGA每次上电启动后通过读取FLASH内部寄存器检测当前启动的程序区位置,若启动的是第一个程序区,则将第一个程序区数据读取出来并写入到第二个程序区;若启动的是第二个程序区,则将第二个程序区数据读取出来并写入到第一个程序区;当FLASH芯片在长时间使用过程中存储数据出现翻转时可以自动恢复为正确数据,从而提高了设备使用过程中的可靠性。
Description
技术领域
本发明涉及物理技术领域,具体涉及一种提高FPGA加载速度和可靠性的软件在线升级方法。
背景技术
针对FRGA软件在线升级,传统方法一般采用双备份的方式,将两份相同的执行程序放入FPGA外部存储FLASH芯片中,第一份程序作为原始备份程序,第二份程序作为可更新程序,当软件版本产生变化需要升级时只对第二份程序进行更新,当升级过程出现异常断电时可重新启动设备,此时FPGA加载第二份程序失败将回滚加载第一份程序,可继续进行程序升级直至第二份程序升级成功,从而完成整个在线升级流程。完成升级流程后,设备重新上电FPGA芯片即可成功加载新版的第二份程序。
上述传统软件在线升级方法在工程实际应用中存在如下两个缺点:
1、升级过程中设备出现异常断电并重启后,FPGA芯片需要先加载第二份程序,加载失败后再回滚加载第一份程序,此设计虽避免了升级过程中设备异常断电导致设备无法工作的情况发生,但设备重新上电后FPGA加载时间变为原来的2倍,大大增加了设备重启的时间;
2、目前国产FLASH芯片由于生产工艺不完善,某些批次产品在使用过程中存在存储数据比特位翻转的问题,当FLASH中存储的第二份数据发生数据比特位翻转时,FPGA启动后加载第二份程序失败会回滚加载第一份程序,此时第一份程序为原始备份程序,功能与升级后第二份程序功能存在差异,容易造成设备工作异常;同时随着设备使用时间的增加,当两份程序都出现数据比特位翻转时,FPGA将无法加载成功,设备上电后将无法工作。
发明内容
本发明是为了解决FPGA软件在线升级时重启时间长、可靠性差的问题,提供一种提高FPGA加载速度和可靠性的软件在线升级方法,在FLASH存储芯片中增加热启动开关,用于控制FPGA上电后直接加载FLASH两份程序中某一份程序,提高了FPGA上电后启动并加载程序的速度;在FPGA进行软件在线升级时,依次对两个程序区进行数据更新,保证两个程序区软件版本的一致性;FPGA每次上电启动后通过读取FLASH内部寄存器检测当前启动的程序区位置,若启动的是第一个程序区,则将第一个程序区数据读取出来并写入到第二个程序区;若启动的是第二个程序区,则将第二个程序区数据读取出来并写入到第一个程序区。当FLASH芯片在长时间使用过程中存储数据出现翻转时可以自动恢复为正确数据,从而提高了设备使用过程中的可靠性。
本发明提供一种提高FPGA加载速度和可靠性的软件在线升级方法,包括以下步骤:
S1、在FLASH芯片中烧录执行文件Z3,执行文件Z3包括热启动开关、第一启动程序Z1和第二启动程序Z2,第一启动程序Z1和第二启动程序Z2相同,热启动开关用于控制FPGA上电后直接加载第一启动程序Z1还是第二启动程序Z2;
S2、FPGA启动并加载程序,加载成功后,通过检测FLASH芯片内部寄存器的数值检测当前启动的程序区位置,使用已加载的程序区去刷新未加载的程序区,使得FLASH芯片即便发生数据翻转后也可以自我修复;
S3、当FPGA接收到升级启动指令后,依次对第二启动程序Z2和第一启动程序Z1进行数据更新;
如果第二启动程序Z2升级失败,热启动开关处于关闭状态,FPGA启动后直接加载第一启动程序Z1;
当第二启动程序Z2升级成功时,热启动开关处于打开状态,FPGA启动后直接加载第二启动程序Z2;
第二启动程序Z2和第一启动程序Z1全部更新完成后,一种提高FPGA加载速度和可靠性的软件在线升级方法完成。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,步骤S2包括以下步骤:
S21、FPGA启动并加载程序,加载成功后,检测FLASH芯片内部寄存器的数值,并判断当前启动的程序区位置,如果是第一启动程序Z1,进入步骤S22,如果是第二启动程序Z2,进入步骤S24;
S22、FPGA将热启动开关关闭,然后将第一启动程序Z1中的数据读取出来写入到第二启动程序Z2中;
S23、写入完成后将第二启动程序Z2中数据回读并进行CRC校验,如果校验成功则将热启动开关打开,刷新结束;如果校验失败则热启动开关保持关闭并返回步骤S22;
S24、FPGA将第二启动程序Z2中的数据读取出来写入到第一启动程序Z1中;
S25、写入完成后将第一启动程序Z1数据回读并进行CRC校验,如果校验失败则返回步骤S24,如果校验成功则刷新结束。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,步骤S2中,当FPGA加载第二启动程序Z2失败后回滚加载第一启动程序Z1,FPGA仍然可以正常启动并工作。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,步骤S3包括以下步骤:
S31、当FPGA芯片接收到升级启动指令后,开始擦除热启动开关,将热启动开关变为关闭状态;
S32、FPGA擦除第二启动程序Z2的数据,擦除完成后FPGA再将接收到的升级数据包写入FLASH芯片的可升级程序区;
校验擦除是否成功,如果是,进入步骤S33,如果否,通过网络接口回复流程失败回令,返回步骤S31;
S33、回复擦除成功指令,对第二启动程序Z2进行写入,写入完成后,判断编程是否成功,如果是,进入步骤S34,如果否,返回步骤S31;
S34、将写入的数据全部回读并进行CRC校验,校验成功后进入步骤S35,校验失败返回步骤S31;
S35、对热启动开关的位置进行编程,将热启动开关变为打开状态,并回复流程成功回令,第二启动程序Z2的升级流程完成;
S36、执行第一启动程序Z1的升级流程;
S37、当FPGA接收到第一启动程序Z1的升级启动指令后,开始擦除第一启动程序Z1的数据;
校验擦除是否成功,如果是,进入步骤S38,如果否,通过网络接口回复流程失败回令,返回步骤S36;
S38、回复擦除成功指令,对第一启动程序Z1进行写入,写入完成后,判断编程是否成功,如果是,进入步骤S39,如果否,返回步骤S36;
S39、将写入的数据全部回读并进行CRC校验,校验失败返回步骤S36,校验成功后,通过网络接口回复流程成功回令,第一启动程序Z1全部更新完成,一种提高FPGA加载速度和可靠性的软件在线升级方法完成。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,步骤S32、S33、S34、S37、S38、S39中,如果现擦除失败、编程失败或校验失败,则结束在线升级流程,热启动开关保持关闭状态,若设备不断电,则重新开始擦除或者升级数据写入流程;
若设备在升级流程中异常断电,则重新上电后,步骤S32、S33、S34中,FPGA检测到热启动开关为关闭状态直接加载第一启动程序Z1,重新开始第二启动程序Z2的升级流程;步骤S37、S38、S39中,FPGA检测到热启动开关为打开状态直接加载第二启动程序Z2,重新开始第一启动程序Z1的升级流程。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,步骤S1中,热启动开关包括校验字节、跳转指令和跳转地址;
FPGA启动后读取FLASH中存储的数据并进行配置,当检测到校验字节时认为后续数据有效,开始执行跳转指令并跳转至相应地址继续加载配置流程。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,校验字节为AA559966。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,跳转地址为第二启动程序Z2的地址。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,步骤S2中,FPGA通过SPI接口与FLASH芯片连接,设备上电后,FPGA使用主动加载的方式从FLASH中读取第一启动程序Z1或第二启动程序Z2中的配置信息并完成自身程序的加载流程。
本发明所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,作为优选方式,FLASH芯片向FPGA输出MISO信号,FPGA向FLASH芯片输出MOSI信号、CLK信号和CS信号;
MISO信号为主入从出信号,MOSI信号为主出从入信号,CLK信号为FPGA提供给FLASH芯片的加载时钟,CS为片选信号,低电压有效。
本发明是关于FPGA芯片的一种提高芯片启动速度和可靠性的FPGA软件在线升级设计方法,该方法可以广泛应用于以FPGA芯片为主体的电路设备中。
本发明针对传统软件在线升级方法存在的缺点进行了优化设计,主要包括如下两个方面:
1、在FLASH存储芯片中增加热启动开关,用于控制FPGA上电后直接加载FLASH两份程序中某一份程序,提高了FPGA上电后启动并加载程序的速度;
2、在FPGA进行软件在线升级时,依次对两个程序区进行数据更新,保证两个程序区软件版本的一致性;FPGA每次上电启动后通过读取FLASH内部寄存器检测当前启动的程序区位置,若启动的是第一个程序区,则将第一个程序区数据读取出来并写入到第二个程序区;若启动的是第二个程序区,则将第二个程序区数据读取出来并写入到第一个程序区。当FLASH芯片在长时间使用过程中存储数据出现翻转时可以自动恢复为正确数据,从而提高了设备使用过程中的可靠性。
本发明具有以下优点:
(1)本方法采用双备份的方式将两份相同的执行程序放入FPGA外部存储FLASH芯片中,当升级过程中设备出现异常断电并重启后,FPGA芯片可以启动并加载另外一份程序,重新开始升级流程,从而避免了异常断电导致设备不可用的情况发生,提高了设备升级过程的可靠性;同时,在FLASH存储芯片中增加热启动开关,用于控制FPGA上电后直接加载FLASH两份程序中某一份程序,提高了FPGA上电后启动并加载程序的速度;
(2)本方法在FPGA程序约束文件中增加回滚加载功能,当FLASH芯片在贮存以及使用过程中出现单比特数据翻转时,使得FPGA启动并加载FLASH中第二份程序出现CRC校验错误后可以回滚加载第一份程序,提高了FPGA使用过程中的可靠性;在FPGA进行软件在线升级时,依次对两个程序区进行数据更新,保证两个程序区软件版本的一致性;FPGA每次上电启动后通过读取FLASH内部寄存器检测当前启动的程序区位置,若启动的是第一个程序区,则将第一个程序区数据读取出来并写入到第二个程序区,若启动的是第二个程序区,则将第二个程序区数据读取出来并写入到第一个程序区,提高了设备使用过程中FLASH芯片存储数据出现翻转时的可恢复性。
附图说明
图1为一种提高FPGA加载速度和可靠性的软件在线升级方法流程图;
图2为一种提高FPGA加载速度和可靠性的软件在线升级方法步骤S3流程图;
图3为一种提高FPGA加载速度和可靠性的软件在线升级方法FLASH芯片中程序组成框图;
图4为一种提高FPGA加载速度和可靠性的软件在线升级方法基于FPGA的硬件电路设计图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
实施例1
如图1~4所示,一种提高FPGA加载速度和可靠性的软件在线升级方法,包括以下步骤:
S1、在FLASH芯片中烧录执行文件Z3,如图3所示,执行文件Z3包括热启动开关、第一启动程序Z1和第二启动程序Z2,第一启动程序Z1和第二启动程序Z2相同,热启动开关用于控制FPGA上电后直接加载第一启动程序Z1还是第二启动程序Z2;
热启动开关包括校验字节、跳转指令和跳转地址;
FPGA启动后读取FLASH中存储的数据并进行配置,当检测到校验字节时认为后续数据有效,开始执行跳转指令并跳转至相应地址继续加载配置流程;
校验字节为AA559966,跳转地址为第二启动程序Z2的地址;
S2、FPGA启动并加载程序,加载成功后,通过检测FLASH芯片内部寄存器的数值检测当前启动的程序区位置,使用已加载的程序区去刷新未加载的程序区,使得FLASH芯片即便发生数据翻转后也可以自我修复;
S21、FPGA启动并加载程序,加载成功后,检测FLASH芯片内部寄存器的数值,并判断当前启动的程序区位置,如果是第一启动程序Z1,进入步骤S22,如果是第二启动程序Z2,进入步骤S24;
S22、FPGA将热启动开关关闭,然后将第一启动程序Z1中的数据读取出来写入到第二启动程序Z2中;
S23、写入完成后将第二启动程序Z2中数据回读并进行CRC校验,如果校验成功则将热启动开关打开,刷新结束;如果校验失败则热启动开关保持关闭并返回步骤S22;
S24、FPGA将第二启动程序Z2中的数据读取出来写入到第一启动程序Z1中;
S25、写入完成后将第一启动程序Z1数据回读并进行CRC校验,如果校验失败则返回步骤S24,如果校验成功则刷新结束;
当FPGA加载第二启动程序Z2失败后回滚加载第一启动程序Z1,FPGA仍然可以正常启动并工作;
如图4所示,FPGA通过SPI接口与FLASH芯片连接,设备上电后,FPGA使用主动加载的方式从FLASH中读取第一启动程序Z1或第二启动程序Z2中的配置信息并完成自身程序的加载流程;
FLASH芯片向FPGA输出MISO信号,FPGA向FLASH芯片输出MOSI信号、CLK信号和CS信号;
MISO信号为主入从出信号,MOSI信号为主出从入信号,CLK信号为FPGA提供给FLASH芯片的加载时钟,CS为片选信号,低电压有效;
S3、当FPGA接收到升级启动指令后,依次对第二启动程序Z2和第一启动程序Z1进行数据更新;
如果第二启动程序Z2升级失败,热启动开关处于关闭状态,FPGA启动后直接加载第一启动程序Z1;
当第二启动程序Z2升级成功时,热启动开关处于打开状态,FPGA启动后直接加载第二启动程序Z2;
第二启动程序Z2和第一启动程序Z1全部更新完成后,一种提高FPGA加载速度和可靠性的软件在线升级方法完成;
如图2所示,S31、当FPGA芯片接收到升级启动指令后,开始擦除热启动开关,将热启动开关变为关闭状态;
S32、FPGA擦除第二启动程序Z2的数据,擦除完成后FPGA再将接收到的升级数据包写入FLASH芯片的可升级程序区;
校验擦除是否成功,如果是,进入步骤S33,如果否,通过网络接口回复流程失败回令,返回步骤S31;
S33、回复擦除成功指令,对第二启动程序Z2进行写入,写入完成后,判断编程是否成功,如果是,进入步骤S34,如果否,返回步骤S31;
S34、将写入的数据全部回读并进行CRC校验,校验成功后进入步骤S35,校验失败返回步骤S31;
S35、对热启动开关的位置进行编程,将热启动开关变为打开状态,并回复流程成功回令,第二启动程序Z2的升级流程完成;
S36、执行第一启动程序Z1的升级流程;
S37、当FPGA接收到第一启动程序Z1的升级启动指令后,开始擦除第一启动程序Z1的数据;
校验擦除是否成功,如果是,进入步骤S38,如果否,通过网络接口回复流程失败回令,返回步骤S36;
S38、回复擦除成功指令,对第一启动程序Z1进行写入,写入完成后,判断编程是否成功,如果是,进入步骤S39,如果否,返回步骤S36;
S39、将写入的数据全部回读并进行CRC校验,校验失败返回步骤S36,校验成功后,通过网络接口回复流程成功回令;
步骤S32、S33、S34、S37、S38、S39中,如果现擦除失败、编程失败或校验失败,则结束在线升级流程,热启动开关保持关闭状态,若设备不断电,则重新开始擦除或者升级数据写入流程;
若设备在升级流程中异常断电,则重新上电后,步骤S32、S33、S34中,FPGA检测到热启动开关为关闭状态直接加载第一启动程序Z1,重新开始第二启动程序Z2的升级流程;步骤S37、S38、S39中,FPGA检测到热启动开关为打开状态直接加载第二启动程序Z2,重新开始第一启动程序Z1的升级流程;
第一启动程序Z1全部更新完成,一种提高FPGA加载速度和可靠性的软件在线升级方法完成。
实施例2
如图1~4所示,一种提高FPGA加载速度和可靠性的软件在线升级方法;
初始化设计包括以下内容:
基于FPGA的硬件电路设计一般如图4所示,FPGA通过SPI接口与外部FLASH芯片连接,设备上电后,FPGA使用主动加载的方式从FLASH中读取配置信息并完成自身程序的加载流程。其中,MISO为主入从出信号,MOSI为主出从入信号,CLK为FPGA提供给FLASH的加载时钟,CS为片选信号,低有效。
FPGA软件在设计完成并生成执行程序Z1和Z2后,按照图3的方式生成最终的执行文件Z3。该执行文件Z3由热启动开关、第一份程序Z1以及第二份程序Z2共三部分组成,其中第一份程序和第二份程序功能完全相同;热启动开关由4个字节“AA559966”、跳转指令以及跳转地址组成,FPGA启动后读取FLASH中存储的数据并进行配置,当检测到“AA559966”时认为后续数据有效,开始执行跳转指令并跳转至相应地址继续加载配置流程。
当FPGA启动并加载成功后,检测FLASH内部寄存器的数值,若当前启动的是第一份程序,此时FPGA将热启动开关关闭,然后将第一份程序区中的数据读取出来写入到第二份程序区中,当写入完成后将第二份程序区数据回读进行CRC校验,若校验成功则将热启动开关打开,若校验失败则开关保持关闭并重新启动流程。
当FPGA启动并加载成功后,检测FLASH内部寄存器的数值,若当前启动的是第二份程序,则FPGA将第二份程序区中的数据读取出来写入到第一份程序区中,当写入完成后将第一份程序区数据回读进行CRC校验,若校验失败则重新启动流程,若校验成功则结束该流程。
在线升级流程包括以下步骤:
设计人员生成Z2后使用仿真器将该执行文件烧写至FLASH芯片中,在设备装配完成后无法再通过连接仿真器的方式进行软件升级,此时可通过在线软件升级的方式对FPGA程序进行更新,具体的升级流程如图2所示。
1)当FPGA芯片接收到升级启动指令后,开始擦除热启动开关,将开关变为关闭状态;热启动开关关闭后FPGA开始擦除第二份程序区的数据,擦除完成后FPGA再将接收到的升级数据包写入FLASH的可升级程序区;写入完成后将写入的数据全部回读并进行CRC校验,校验成功后则对热启动开关位置进行编程,将开关变为打开状态。
在上述过程中,若出现擦除失败、编程失败或者校验失败则直接结束在线升级流程,热启动开关保持关闭状态,若设备不断电,则可直接重新开始升级流程;若设备在升级流程中异常断电,则重新上电后,FPGA检测到热启动开关为关闭状态则会直接加载第一份程序,此时可以重新开始第二份程序的升级流程。
2)完成第二份程序的升级流程后,继续执行第一份程序的升级流程。当FPGA芯片接收到升级启动指令后,开始擦除第一份程序区的数据,擦除完成后FPGA再将接收到的升级数据包写入FLASH的第一份程序区;写入完成后将写入的数据全部回读并进行CRC校验,校验成功后完成整个软件的升级流程。
在上述过程中,若出现擦除失败、编程失败或者校验失败则直接结束在线升级流程,若设备不断电,则可直接重新开始升级流程;若设备在升级流程中异常断电,则重新上电后,FPGA检测到热启动开关为打开状态则会直接加载第二份程序,此时可以重新开始第一份程序的升级流程。
由于采取了双备份的机制,使得FPGA在对FLASH中任意一份程序进行软件升级过程中出现异常时,均可重新启动在线升级流程直至该程序区升级成功,保证了FPGA在软件升级过程中的可靠性;当第二份程序升级失败时,开关均处于关闭状态,此时FPGA启动后会直接加载第一份程序,当第二份程序升级成功时,开关一直处于打开状态,此时FPGA启动后会直接加载第二份程序,因此避免了启动加载其中一份程序失败后再加载另一份程序的流程,大大提高了FPGA启动的速度,节省了设备开机启动的时间;每次进行软件升级都会对FLASH中存储的两份程序进行更新,保证了两份程序版本的一致性,同时由于FPGA软件中增加了回滚加载的功能,当FLASH由于工艺等原因长时间贮存和使用后发生存储数据单比特翻转情况时,FPGA加载第二份程序失败后可以回滚加载第一份程序,设备仍然可以正常启动并工作,提高了FPGA使用过程中的可靠性;FPGA每次启动完成后检测当前启动的程序区位置,并使用已加载的程序区去刷新未加载的程序区,使得FLASH发生数据翻转后可以完成自我修复,从而提高了设备出现故障后的可恢复性。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:包括以下步骤:
S1、在FLASH芯片中烧录执行文件Z3,所述执行文件Z3包括热启动开关、第一启动程序Z1和第二启动程序Z2,所述第一启动程序Z1和所述第二启动程序Z2相同,所述热启动开关用于控制FPGA上电后直接加载所述第一启动程序Z1还是所述第二启动程序Z2;
S2、FPGA启动并加载程序,加载成功后,通过检测FLASH芯片内部寄存器的数值检测当前启动的程序区位置,使用已加载的程序区去刷新未加载的程序区,使得FLASH芯片即便发生数据翻转后也可以自我修复;
S3、当FPGA接收到升级启动指令后,依次对所述第二启动程序Z2和所述第一启动程序Z1进行数据更新;
如果所述第二启动程序Z2升级失败,所述热启动开关处于关闭状态,FPGA启动后直接加载所述第一启动程序Z1;
当所述第二启动程序Z2升级成功时,所述热启动开关处于打开状态,FPGA启动后直接加载所述第二启动程序Z2;
所述第二启动程序Z2和所述第一启动程序Z1全部更新完成后,一种提高FPGA加载速度和可靠性的软件在线升级方法完成。
2.根据权利要求1所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:步骤S2包括以下步骤:
S21、FPGA启动并加载程序,加载成功后,检测FLASH芯片内部寄存器的数值,并判断当前启动的程序区位置,如果是所述第一启动程序Z1,进入步骤S22,如果是所述第二启动程序Z2,进入步骤S24;
S22、FPGA将所述热启动开关关闭,然后将所述第一启动程序Z1中的数据读取出来写入到所述第二启动程序Z2中;
S23、写入完成后将所述第二启动程序Z2中数据回读并进行CRC校验,如果校验成功则将所述热启动开关打开,刷新结束;如果校验失败则所述热启动开关保持关闭并返回步骤S22;
S24、FPGA将所述第二启动程序Z2中的数据读取出来写入到所述第一启动程序Z1中;
S25、写入完成后将所述第一启动程序Z1数据回读并进行CRC校验,如果校验失败则返回步骤S24,如果校验成功则刷新结束。
3.根据权利要求1所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:步骤S2中,当FPGA加载所述第二启动程序Z2失败后回滚加载所述第一启动程序Z1,FPGA仍然可以正常启动并工作。
4.根据权利要求1所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:步骤S3包括以下步骤:
S31、当FPGA芯片接收到升级启动指令后,开始擦除所述热启动开关,将所述热启动开关变为关闭状态;
S32、FPGA擦除所述第二启动程序Z2的数据,擦除完成后FPGA再将接收到的升级数据包写入FLASH芯片的可升级程序区;
校验擦除是否成功,如果是,进入步骤S33,如果否,通过网络接口回复流程失败回令,返回步骤S31;
S33、回复擦除成功指令,对所述第二启动程序Z2进行写入,写入完成后,判断编程是否成功,如果是,进入步骤S34,如果否,返回步骤S31;
S34、将写入的数据全部回读并进行CRC校验,校验成功后进入步骤S35,校验失败返回步骤S31;
S35、对所述热启动开关的位置进行编程,将所述热启动开关变为打开状态,并回复流程成功回令,所述第二启动程序Z2的升级流程完成;
S36、执行所述第一启动程序Z1的升级流程;
S37、当FPGA接收到所述第一启动程序Z1的升级启动指令后,开始擦除所述第一启动程序Z1的数据;
校验擦除是否成功,如果是,进入步骤S38,如果否,通过网络接口回复流程失败回令,返回步骤S36;
S38、回复擦除成功指令,对所述第一启动程序Z1进行写入,写入完成后,判断编程是否成功,如果是,进入步骤S39,如果否,返回步骤S36;
S39、将写入的数据全部回读并进行CRC校验,校验失败返回步骤S36,校验成功后,通过网络接口回复流程成功回令,所述第一启动程序Z1全部更新完成,一种提高FPGA加载速度和可靠性的软件在线升级方法完成。
5.根据权利要求4所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:
步骤S32、S33、S34、S37、S38、S39中,如果现擦除失败、编程失败或校验失败,则结束在线升级流程,所述热启动开关保持关闭状态,若设备不断电,则重新开始擦除或者升级数据写入流程;
若设备在升级流程中异常断电,则重新上电后,步骤S32、S33、S34中,FPGA检测到所述热启动开关为关闭状态直接加载所述第一启动程序Z1,重新开始所述第二启动程序Z2的升级流程;步骤S37、S38、S39中,FPGA检测到所述热启动开关为打开状态直接加载所述第二启动程序Z2,重新开始所述第一启动程序Z1的升级流程。
6.根据权利要求1所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:步骤S1中,所述热启动开关包括校验字节、跳转指令和跳转地址;
FPGA启动后读取FLASH中存储的数据并进行配置,当检测到所述校验字节时认为后续数据有效,开始执行跳转指令并跳转至相应地址继续加载配置流程。
7.根据权利要求6所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:所述校验字节为AA559966。
8.根据权利要求6所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:所述跳转地址为所述第二启动程序Z2的地址。
9.根据权利要求1所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:步骤S2中,FPGA通过SPI接口与FLASH芯片连接,设备上电后,FPGA使用主动加载的方式从FLASH中读取所述第一启动程序Z1或所述第二启动程序Z2中的配置信息并完成自身程序的加载流程。
10.根据权利要求9所述的一种提高FPGA加载速度和可靠性的软件在线升级方法,其特征在于:FLASH芯片向FPGA输出MISO信号,FPGA向FLASH芯片输出MOSI信号、CLK信号和CS信号;
MISO信号为主入从出信号,MOSI信号为主出从入信号,CLK信号为FPGA提供给FLASH芯片的加载时钟,CS为片选信号,低电压有效。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311385035.7A CN117908936A (zh) | 2023-10-24 | 2023-10-24 | 一种提高fpga加载速度和可靠性的软件在线升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311385035.7A CN117908936A (zh) | 2023-10-24 | 2023-10-24 | 一种提高fpga加载速度和可靠性的软件在线升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117908936A true CN117908936A (zh) | 2024-04-19 |
Family
ID=90693404
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311385035.7A Pending CN117908936A (zh) | 2023-10-24 | 2023-10-24 | 一种提高fpga加载速度和可靠性的软件在线升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117908936A (zh) |
-
2023
- 2023-10-24 CN CN202311385035.7A patent/CN117908936A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110231952B (zh) | 一种ecu程序备份及循环升级控制方法及装置 | |
KR100506203B1 (ko) | 부팅 및 부트 코드 업데이트 방법 및 시스템 | |
TWI514408B (zh) | 於裝置開機期間處置來自非揮發性記憶體之錯誤 | |
US11853769B2 (en) | Determination of power-off duration of NVME SSD | |
US20160179500A1 (en) | Firmware variable update method | |
TWI404054B (zh) | 處理微碼程式更新錯誤的裝置及其方法 | |
CN110928499B (zh) | 一种芯片内嵌的flash存储器、芯片以及芯片的启动方法 | |
CN112506535A (zh) | 一种汽车ECU控制器更新升级Bootloader软件的方法 | |
CN102023908A (zh) | 一种引导程序备份方法及装置 | |
US20100058316A1 (en) | Updating Firmware with Multiple Processors | |
US20080098388A1 (en) | Safe Flashing | |
CN105760165A (zh) | 一种mcu自我备份加载刷新的方法 | |
CN111562932B (zh) | 一种高可靠嵌入式软件升级方法及系统 | |
CN115840579A (zh) | Fpga远程更新方法、系统、贴片机及存储介质 | |
CN113835735A (zh) | 一种fpga远程升级方法、系统和存储介质 | |
JP3351398B2 (ja) | データ通信装置 | |
US20060206674A1 (en) | Optical disc drive and program code updating method thereof | |
CN117908936A (zh) | 一种提高fpga加载速度和可靠性的软件在线升级方法 | |
CN112346770A (zh) | 一种嵌入式程序在线更新方法 | |
CN116185299A (zh) | 闪存控制器及相关装置和方法 | |
CN114741091A (zh) | 固件加载方法、装置、电子设备及计算机可读存储介质 | |
WO2012077604A1 (ja) | 処理装置、プログラム更新方法、およびプログラム | |
CN113590153B (zh) | 一种cpld的固件升级方法、系统、设备以及介质 | |
CN115599449A (zh) | 处理器启动系统及方法 | |
KR100575927B1 (ko) | 이동통신 단말기에서 부팅 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |