CN113867750A - 一种soc处理器软件在线升级方法 - Google Patents
一种soc处理器软件在线升级方法 Download PDFInfo
- Publication number
- CN113867750A CN113867750A CN202110916621.4A CN202110916621A CN113867750A CN 113867750 A CN113867750 A CN 113867750A CN 202110916621 A CN202110916621 A CN 202110916621A CN 113867750 A CN113867750 A CN 113867750A
- Authority
- CN
- China
- Prior art keywords
- area
- program
- flash
- upgrading
- software
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/654—Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
Abstract
本发明公开了一种SOC处理器软件在线升级方法,包括FLASH程序存储区划分,用于生成总的程序文件;上电加载运行软件流程,用于BOOT区程序运行及应用程序校验加载;在线升级及FLASH存储技术流程,用于校验和执行升级程序;处理器软件在线升级流程,用于SOC处理器软件在线升级。本发明不仅满足了软件升级高速运行的需求,同时,在系统无须拆卸、产品无须开盖的条件下,实现了SOC软件在线升级。
Description
技术领域
本发明属于航天飞行器控制技术领域,具体涉及一种SOC处理器软件在线升级方法。
背景技术
决策处理软件是决策处理器的重要组成部分,运行在国产化SOC 处理器中。
当前国产化SOC软件升级过程,存在以下不足或问题:需要拆卸系统、产品开盖导致操作不便、软件升级成本过高、软件升级周期长,升级过程出现掉电等意外情况时无法再正常运行。
发明内容
针对上述问题,本发明提供了一种SOC处理器软件在线升级方法。
一种SOC处理器软件在线升级方法,具体由下列步骤组成:
步骤一,软件开发调试完毕后,生成应用程序bin文件,对该文件进行长度统计和CRC校验生成校验信息,其中,应用程序bin文件分别放入FLASH程序区A和程序区B,文件长度分别放在校验数据区A和B,CRC 校验信息放入校验数据区A;
步骤二,按照FLASH程序存储区的地址划分,将boot程序和应用程序的bin文件,利用合成工具生成总的程序bin文件,其中,boot.bin 文件放在BOOT程序区,应用程序bin文件分别放入FLASH程序区A和程序区B,文件长度分别放在校验数据区A和B,CRC校验信息放入校验数据区A;,其中,FLASH程序存储区的地址划分,从上到下依次为:BOOT 区、主程序A区、主程序B区、未使用区、校验数据区A、校验数据区 B,并且,BOOT程序、FLASH B区程序、FLASH A区程序与校验数据A和校验数据B各自使用不同的扇区,并且BOOT程序区、FLASH B区和校验数据B区永不擦除。
步骤三,通过FLASH烧写工具将总的程序bin文件烧写至FLASH 中。
步骤四,首先,上电工作,BOOT区程序自动运行并从校验存储区A 先读取FLASH A区程序有效标志、总长度和CRC校验码,进一步的,判断程序是否有效,如果程序有效,则根据程序总长度从FLASH A区读取程序数据并进行CRC校验;如果程序无效,则从校验区读取FLASH B区的程序数据长度,将FLASH B区程序加载到RAM区运行,
然后,判断CRC校验是否正确,如果正确,则将FLASH A区程序加载到 RAM区运行;如果CRC校验错误,则从校验存储区B读取FLASH B区的程序数据长度,将FLASH B区程序加载到RAM区运行。
步骤五,软件发生更改后,生成新的应用程序bin文件,对该文件进行长度统计和CRC校验生成校验信息;
步骤六,通过控制系统接口总线,将新的应用程序bin文件和数据长度、CRC校验信息发送给SOC软件;
步骤七,首先,主程序运行,并接收软件升级指令,从指令参数中获取升级程序的总长度和总CRC,
然后,接收缓存升级程序的数据帧,并对数据帧的总长度和总CRC 进行校验,如果校验成功,则擦除FLASH A区,并将升级程序数据写入 FLASH A区并回读比对;如果校验不成功,则不擦除FLASH A区程序和校验区数据A,向控制系统返回升级错误结果。
最后,将FLASH A区程序有效标志、程序总长度和总CRC写入校验数据区A,并向控制系统返回升级成功结果。
本发明提出了一种SOC处理器软件在线升级方法,与现有的技术相比,具有以下有益效果:
采用高速RAM运行+NOR FLASH存储+上电BOOT方式+在线升级的技术组合方案,不仅满足了升级软件高速运行的需求,并且,在系统无须拆卸、产品无须开盖条件下,实现了国产化SOC软件实时在线升级,以及,能够在中断、异常等情况出现后,实现系统上电后继续进行软件升级。
附图说明
图1为FLASH程序存储区划分图
图2为程序上电加载运行流程图
图3为程序在线升级FLASH存储流程图
具体实施方式
为了使本发明的目的、特征及优点能够更加的明显和易懂,下面通过实施例并结合附图对本技术方案进行详细说明。
步骤一,软件开发调试完毕后,生成应用程序bin文件,对该文件进行长度统计和CRC校验生成校验信息;
步骤二,按照FLASH程序存储区的地址划分,将boot程序和应用程序的bin文件,利用合成工具生成总的程序bin文件,,其中, boot.bin放在BOOT程序区,应用程序bin文件分别放入FLASH程序区A 和程序区B,文件长度分别放在校验数据区A和B,CRC校验信息放入校验数据区A;
如图1所示,FLASH程序存储区的地址划分,从上到下依次为:
BOOT区、主程序A区、主程序B区、未使用区、校验数据区A、校验数据区B,并且,BOOT程序、FLASH B区程序、FLASH A区程序与校验数据A和校验数据B各自使用不同的扇区,并且BOOT程序区、FLASH B 区和校验数据B区永不擦除。
步骤三,通过FLASH烧写工具将总的程序bin文件烧写至FLASH 中。
步骤四,首先,上电工作,BOOT区程序自动运行并从校验存储区A 先读取FLASH A区程序有效标志、总长度和CRC校验码,进一步的,进入判断逻辑。
如图2所示,判断逻辑具体为:
首先,判断程序是否有效,如果程序有效,则根据程序总长度从FLASH A 区读取程序数据并进行CRC校验;如果程序无效,则从校验区读取FLASH B区的程序数据长度,将FLASH B区程序加载到RAM区运行,然后,判断CRC校验是否正确,如果正确,则将FLASH A区程序加载到 RAM区运行;如果不正确,则从校验区读取FLASH B区的程序数据长度,将FLASHB区程序加载到RAM区运行。
步骤五,软件发生更改后,生成新的应用程序bin文件,对该文件进行长度统计和CRC校验生成校验信息;
步骤六,通过控制系统接口总线,将新的应用程序bin文件和数据长度、CRC校验信息发送给SOC软件;
步骤七,对SOC软件进行程序升级。
如图3所示,软件程序升级具体步骤为:
首先,主程序运行,并接收软件升级指令,从指令参数中获取升级程序的总长度和总CRC,
然后,接收缓存升级程序的数据帧,并对数据帧的总长度和总CRC 进行校验,如果校验成功,则擦除FLASH A区,并将升级程序数据写入 FLASH A区并回读比对;如果校验不成功,则不擦除FLASH A区程序和校验区数据A,向控制系统返回升级错误结果。
最后,将FLASH A区程序有效标志、程序总长度和总CRC写入校验数据区A,并向控制系统返回升级成功结果。
本实施例中,如果将升级程序数据写入FLASH A区后回读比对错误,则擦除校验数据区A,将FLASH A区程序有效标志置为无效,向控制系统返回升级错误结果。
本实施例中,如果升级过程中在擦除FLASH A区前出现掉电等意外情况,则不会擦除FLASH A区程序,重新上电后FLASH A区程序仍然可以正常运行,继续进行软件升级。
本实施例中,如果升级过程中在擦除FLASH A区后出现掉电等意外情况,则重新上电后能够识别FLASH A区错误并自动加载FLASH B区程序,继续进行软件升级。
Claims (9)
1.一种SOC处理器软件在线升级方法,其特征在于,由下列步骤组成:
步骤一,生成应用程序bin文件,对该文件进行长度统计和CRC校验生成校验信息;
步骤二,按照FLASH程序存储区的地址划分,将boot程序和应用程序的bin文件,利用合成工具生成总的程序bin文件,其中,boot.bin放在BOOT程序区,应用程序bin文件分别放入FLASH程序区A和程序区B,文件长度分别放在校验数据区A和B,CRC校验信息放入校验数据区A;
步骤三,通过FLASH烧写工具将总的程序bin文件烧写至FLASH中;
步骤四,加载以及运行软件;
步骤五,软件发生更改后,生成新的应用程序bin文件,对该文件进行长度统计和CRC校验生成校验信息;
步骤六,通过控制系统接口总线,将新的应用程序bin文件和数据长度、CRC校验信息发送给SOC软件;
步骤七,对SOC软件进行程序升级。
2.按照权利要求1所述的一种SOC处理器软件在线升级方法,其特征在于,所述按照FLASH程序存储区的地址划分,从上到下依次为:BOOT区、主程序A区、主程序B区、未使用区、校验数据区A、校验数据区B。
3.按照权利要求1所述的一种SOC处理器软件在线升级方法,其特征在于,所述按照FLASH程序存储区的地址划分,其特征在于,BOOT程序、FLASH B区程序、FLASH A区程序与校验数据A和校验数据B各自使用不同的扇区,并且BOOT程序区、FLASH B区和校验数据B区永不擦除。
4.按照权利要求1所述的一种SOC处理器软件在线升级方法,其特征在于,所述加载以及运行软件,具体过程如下:
首先,上电工作,BOOT区程序自动运行并从校验存储区A先读取FLASH A区程序有效标志、总长度和CRC校验码,进一步的,进入逻辑判断步骤。
5.按照权利要求3所述的一种SOC处理器软件在线升级方法,其特征在于,所述逻辑判断步骤,具体过程如下:
首先,判断程序是否有效,如果程序有效,则执行干支逻辑:根据程序总长度从FLASH A区读取程序数据并进行CRC校验;否则执行分支逻辑:从校验区读取FLASH B区的程序数据长度,将FLASH B区程序加载到RAM区运行,
然后,判断CRC校验是否正确,如果正确,则执行干支逻辑:将FLASH A区程序加载到RAM区运行;否则执行分支逻辑:从校验区读取FLASH B区的程序数据长度,将FLASH B区程序加载到RAM区运行。
6.按照权利要求1所述的一种SOC处理器软件在线升级方法,其特征在于,所述对SOC软件进行程序升级,包括干支逻辑和分支逻辑,干支逻辑具体过程如下:
首先,主程序运行,并接收软件升级指令,从指令参数中获取升级程序的总长度和总CRC,
然后,接收缓存升级程序的数据帧,并对数据帧的总长度和总CRC进行校验,校验成功后,擦除FLASH A区,将升级程序数据写入FLASH A区并回读比对,
最后,将FLASH A区程序有效标志、程序总长度和总CRC写入校验数据区A,并向控制系统返回升级成功结果;
干支逻辑具体过程如下:
升级过程中接收程序数据有误、接收超时、总数据包校验错误,则不擦除FLASH A区程序和校验区数据A,向控制系统返回升级错误结果。
7.按照权利要求1所述的一种SOC处理器软件在线升级方法,其特征在于,所述对SOC软件进行程序升级,如果将升级程序数据写入FLASH A区后回读比对错误,则擦除校验数据区A,将FLASH A区程序有效标志置为无效,向控制系统返回升级错误结果。
8.按照权利要求1所述的一种SOC处理器软件在线升级方法,其特征在于,所述对SOC软件进行程序升级,如果升级过程中在擦除FLASH A区前出现掉电等意外情况,则不会擦除FLASH A区程序,重新上电后FLASH A区程序仍然可以正常运行,继续进行软件升级。
9.按照权利要求1所述的一种SOC处理器软件在线升级方法,其特征在于,所述对SOC软件进行程序升级,如果升级过程中在擦除FLASH A区后出现掉电等意外情况,则重新上电后能够识别FLASH A区错误并自动加载FLASH B区程序,继续进行软件升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110916621.4A CN113867750A (zh) | 2021-08-11 | 2021-08-11 | 一种soc处理器软件在线升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110916621.4A CN113867750A (zh) | 2021-08-11 | 2021-08-11 | 一种soc处理器软件在线升级方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113867750A true CN113867750A (zh) | 2021-12-31 |
Family
ID=78990334
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110916621.4A Pending CN113867750A (zh) | 2021-08-11 | 2021-08-11 | 一种soc处理器软件在线升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113867750A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114924778A (zh) * | 2022-04-01 | 2022-08-19 | 北京遥测技术研究所 | 一种基于zynq冗余备份的程序升级方法 |
CN114968317A (zh) * | 2022-04-01 | 2022-08-30 | 北京遥测技术研究所 | 一种基于zynq防呆设计的程序升级方法 |
CN114968317B (zh) * | 2022-04-01 | 2024-04-26 | 北京遥测技术研究所 | 一种基于zynq防呆设计的程序升级方法 |
-
2021
- 2021-08-11 CN CN202110916621.4A patent/CN113867750A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114924778A (zh) * | 2022-04-01 | 2022-08-19 | 北京遥测技术研究所 | 一种基于zynq冗余备份的程序升级方法 |
CN114968317A (zh) * | 2022-04-01 | 2022-08-30 | 北京遥测技术研究所 | 一种基于zynq防呆设计的程序升级方法 |
CN114968317B (zh) * | 2022-04-01 | 2024-04-26 | 北京遥测技术研究所 | 一种基于zynq防呆设计的程序升级方法 |
CN114924778B (zh) * | 2022-04-01 | 2024-04-26 | 北京遥测技术研究所 | 一种基于zynq冗余备份的程序升级方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106095620B (zh) | 一种嵌入式Linux存储分区的开发方法 | |
US7321951B2 (en) | Method for testing flash memory power loss recovery | |
CN106598654A (zh) | 一种在线更新PowerPC主板引导芯片的方法 | |
CN106547574A (zh) | 一种dsp程序和fpga程序的外部下载系统及方法 | |
CN1971536A (zh) | 基本输入输出系统的纠错系统及方法 | |
EP1701358B1 (en) | Data write-in method for flash memory | |
CN102043725B (zh) | 用于闪存的数据写入方法及其控制器与储存系统 | |
CN106649137B (zh) | 一种Nand Flash坏块管理方法、装置及存储器 | |
CN110473585B (zh) | 一种擦失效存储单元的替换方法、装置、设备及存储介质 | |
CN113960391A (zh) | 存储介质异常掉电测试装置及方法 | |
CN113421606A (zh) | flash检测方法及其检测系统 | |
CN110473586B (zh) | 一种写失效存储单元的替换方法、装置、设备及存储介质 | |
CN113867750A (zh) | 一种soc处理器软件在线升级方法 | |
CN112835601A (zh) | 一种固件更新方法、装置、设备及存储介质 | |
CN113836600B (zh) | 一种Embedded Flash误写保护方法 | |
CN111158660B (zh) | 一种多模式星载软件eeprom在轨编程方法 | |
CN113094107A (zh) | 数据保护方法、装置、设备及计算机存储介质 | |
CN110119284B (zh) | Flash存储器烧写系统及方法 | |
CN112052112A (zh) | 基于NOR Flash存储的位翻转错误检测方法、装置及存储介质 | |
CN114995863B (zh) | 一种软件重编程系统、基于重编程系统的软件重编程方法 | |
CN111949426A (zh) | 一种固件程序错误的检测方法、装置及存储设备 | |
CN116594804A (zh) | 一种edac码读写优化方法、系统、设备及存储介质 | |
CN110910939B (zh) | 存储单元的阈值调整方法、装置、存储设备和存储介质 | |
CN101615420B (zh) | 具数据修正功能的闪存储存装置 | |
CN111475179B (zh) | 一种软件在线刷写方法、装置、电子控制单元及上位机 |
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 |