CN114860291A - 一种引导及应用程序灵活储存与升级的方法 - Google Patents
一种引导及应用程序灵活储存与升级的方法 Download PDFInfo
- Publication number
- CN114860291A CN114860291A CN202210353450.3A CN202210353450A CN114860291A CN 114860291 A CN114860291 A CN 114860291A CN 202210353450 A CN202210353450 A CN 202210353450A CN 114860291 A CN114860291 A CN 114860291A
- Authority
- CN
- China
- Prior art keywords
- program
- upgrading
- bootloader
- upgrade
- area
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明属于物联网应用程序升级领域,具体说是一种引导及应用程序灵活储存与升级的方法。将系统分成:boot引导程序、info信息区、BootLoader引导程序、app应用程序,当boot引导程序运行后,在info信息区查找BootLoader运行区域,与指定的启动地址来引导BootLoader;在BootLoader运行之后,在info信息区查找app运行区域,与指定的启动地址来引导app。其info区的数据是可后期通过升级修改的。本发明能实现BootLoader对非运行段app升级,BootLoader对非运行BootLoader段升级,且app也能对非运行段BootLoader和非运行段app进行升级;保证系统的稳定性,特别适用于石油wiapa物联网系统中,具有较好的使用价值。
Description
技术领域
本发明属于物联网应用程序升级领域,具体说是一种引导及应用程序灵活储存与升级的方法。
背景技术
目前的升级方法采用一级引导,当出现应用程序不能使用时,现场无法进行修复;再者,有人想到用备份程序的方法,运行前先验证程序,如果主程序不正确就将备份程序拷贝到主程序区,但实际情况是大概率是主程序区中nandflash有坏块,不能将备份程序拷贝至主程序区,实际应用中不能保证100%的成功。存储程序的区域是固定的,不更改引导存储程序的区域是不能解决这一坏块的问题。这种备份的方法也在升级过程中,既要升级主程序还要升级备份程序,处理麻烦。
发明内容
针对现有技术的不足,本发明提供一种引导及应用程序灵活储存与升级的方法。解决了在实际的应用中,会出现应用程序不能使用的情况,不是需要非运行段应用程序有升级功能,而需要BootLoader也有升级功能,且可以指定引导的区域,在正常需要升级应用程序时,非运行段应用程序升级功能就可以满足需要,而当上述异常情况出现时,BootLoader升级功能可以应用。而且指定引导存储空间,需要BootLoader和应用程序存储信息存放在指定的存储区域,即info信息区的来历。通过修改info信息区的参数,可以指定所需要引导的程序段。而当需要用不同的程序,支持将升级新程序放入不同的存储区。
本发明为实现上述目的所采用的技术方案是:
一种引导及应用程序灵活储存与升级的方法,包括以下步骤:
cpu调用Block 0上boot引导程序至内存中,并运行boot引导程序;
boot引导程序在info信息区查找BootLoader引导程序运行区域以及指定的启动地址,引导BootLoader引导程序运行;
在BootLoader引导程序运行之后,等待升级指令,如果未收到升级指令,则在info信息区查找app应用程序运行区域以及指定的启动地址来引导app应用程序运行;如果收到升级指令,则解析升级指令,并根据解析结果进行升级。
所述解析升级指令,具体为:解析升级指令中的升级对象是升级BootLoader引导程序或app应用程序,以及待升级内容所在Block区域的位置。
升级过程包括:BootLoader引导程序对非运行的app应用程序升级、BootLoader引导程序对非运行的其他BootLoader引导程序升级、app应用程序对非运行的BootLoader引导程序升级、app应用程序对非运行的其他app应用程序进行升级。
app应用程序在分别对BootLoader引导程序和其他app应用程序升级具体为:
当app应用程序运行过程中,接收到升级指令时,先解析升级指令,判断待升级对象是BootLoader引导程序还是app应用程序,再解析待升级区域,判定该区域是否是非运行段,如果是,则记录待升级版本号,再进行应答,等待接收升级包,进行升级;否则退出升级,正常执行app应用程序。
所述升级包包括:
首包数据即升级指令,包括:升级对象识别码,升级段码,升级版本号,时间;
中间包数据包括:升级对象标识,程序版本号,启动地址,程序内容;
尾包数据为检验数据,校验所有程序包正确性和完整性。
一种引导及应用程序灵活储存与升级的系统,包括:
第一引导模块,即boot;用于查找info信息,调用含有升级模块的第二引导模块,即查找BootLoader引导程序运行区域以及指定的启动地址的blockx;在Block x上BootLoader引导程序,并拷贝到内存中运行BootLoader引导程序;
第二引导模块,即BootLoader;用于查找info信息,调用含有升级模块的app应用程序,即查找app应用程序运行区域以及指定的启动地址的Block y;在Block y上app应用程序,并拷贝到内存中运行app应用程序;
升级模块,用于在BootLoader引导程序运行之后,等待升级指令,如果未收到升级指令,则在info信息区查找app应用程序运行区域以及指定的启动地址来引导app应用程序运行;如果收到升级指令,则解析升级指令,并根据解析结果进行升级。
升级模块,或用于在app应用程序运行之后,等待升级指令,如果未收到升级指令,继续运行其他应用,如果收到升级指令,则解析升级指令,并根据解析结果进行升级。
一种引导及应用程序灵活储存与升级的系统,包括多个Block区域,用于存储不同的程序和信息,包括:
Block 0,用于存储boot引导程序,以利用cpu对boot引导程序引导、运行;
Block 1,用于存储info信息区;
Block x,用于存储BootLoader引导程序,以利用储存多个BootLoader引导程序;
Block y,用于存储app应用程序,以利用储存多个app应用程序。
所述info信息区分别存有BootLoader引导程序和app应用程序的运行区域、启动地址、代码校验码区、代码长度、升级时间、升级版本号。
所述Block x中包括多个Block区域,每一个区域存储一个BootLoader引导程序,所述Block y中包括多个Block区域,每一个区域存储一个app应用程序。
一种计算机可读存储介质,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现所述的一种引导及应用程序灵活储存与升级的方法。
本发明具有以下有益效果及优点:
1.本发明在实际应用中,解决应用程序不能使用的异常问题。可以从BootLoader启动之后,升级新的应用程序,而且将info信息区修改对应上新应用程序的参数,如运行区域、启动地址、代码校验码区、代码长度、升级时间、升级版本号。
2.更新BootLoader程序时,可以通过应用程序升级BootLoader,这样不需要重新启动,破坏业务的运行,从而提高效率。
3.程序存储区可以有多个片段,如A段、B段、C段;比如在A段运行时,可以升级新的正式版本之前,可以升级一版测试程序放入B段中,用做测试,测试之后可以在将正式版本升级在C段,再出现问题,还可在切换回B段程序继续测试,这样不需要往返升级。
附图说明
图1是3段存储区划分图;
图2是info信息区图;
图3是启动流程图;
图4是BootLoader运行流程图;
图5是BootLoader升级对象指示图;
图6是app升级对象指示图。
具体实施方式
下面结合附图及实施例对本发明做进一步的详细说明。
本实施例提供一种引导及应用程序灵活储存与升级的方法;将系统分成(如图1):boot引导程序、info信息区、BootLoader引导程序、app应用程序;所述的boot引导程序由CPU从nandflash调用至DDR运行,boot引导程序在block0上;所述的info信息区(如图2),存有BootLoader、应用程序app引导程序运行区域、启动地址、代码校验码区、代码长度、升级时间、升级版本号;所述BootLoader引导程序包括多个区域不同版本BootLoader程序,可以是2个区域,3个区域,也可以是N个区域:如a区域和b区域、c区域程序,本实施例才有3个区域;所述的app应用程序包括多个区域不同版本app应用程序,可是2个区域,3个区域,也可以是N个区域,本实施例才有3个区域。
当boot引导程序运行后的启动过程:boot引导程序在info信息区查找BootLoader运行区域,与指定的启动地址来引导BootLoader;(如图4)在BootLoader运行之后,等待3-6秒时间(按实际需求给定),等待升级指令,如果未有升级指令,则在info信息区查找app运行区域,与指定的启动地址来引导app。如果升级指令,则解析升级对象是升级BootLoader程序还是app程序,与哪段存储区域。其info区的数据是可后期通过升级修改的。
本发明中BootLoader对非运行段app升级,BootLoader对非运行BootLoader段升级(如图5),且app也能对非运行段BootLoader和非运行段app进行升级(如图6)。在app对非运行段BootLoader和非运行段app进行过程中,应用程序是不中断的,也不需要退出业务。
App在对BootLoader和app升级时(如图6),属于业务逻辑一部分,不需要退出程序或重启设备在接收升级指令。当app运行时,接收到升级指令时,解析第一包数据时,升级对象是BootLoader程序还是app程序。再解析升级区域,判定是否是非运行段。记录版本号,再进行应答。中间包数据为程序包与校验段,验证程序包是否正确,正确则存储到对应的启动地址位置。尾包数据为检验包,校验所有程序包正确性和完整性,如果不完整,进入补包流程,直到补齐程序。
在图2info信息区中,分为bootloader信息区和app信息区,它们都有运行区域、启动地址、代码校验码区、代码长度、升级时间、升级版本号;所述运行区域指的是选择运行程序为A段,B段,C段程序。所述启动地址是运行程序所对应在nandflash起始地址。所述代码校验码区是在程序升级时,每个升级包产生的CRC校验位。代码长度指的是每段程序所占nandflash的页数。所述升级时间是指升级首包验证成功时的时间,即升级开始的时间。所述升级版本号指的是每个升级程序的版本号。
首包数据即升级指令,包括:升级对象识别码,升级段码,升级版本号,时间,升级对象识别码是用做判断升级app应用程序还是BootLoader程序;升级段码是将要升级的段码,如段码为2,info存取区运行区域值非2,即可进行下一步操作;
中间包数据包括:升级对象标识,程序版本号,启动地址与程序内容包,验证程序包是否与首包一致,一致则存储到对应的启动地址位置;
尾包数据为检验包,校验所有程序包正确性和完整性,如果不完整,进入补包流程,直到补齐程序。如果完整且正确,当切换程序时,先修改info区中对应程序运行区域值,再重启即完成切换程序操作。
此灵活切换不同程序,就是通过在info信息区中的运行区域来指定的。在读取对应的启动地址,将启动地址开始,长度为代码长度的存储区域内程序拷贝到DDR中,运行起来。
此灵活存储,就是指通过修改info信息区中的启动地址,将升级的代码存放在从这个启动地址后的区域即可。可以避开坏块,处理也简单。
例如,app程序分3个版本分别为V1.0、V2.0、V3.0;他们分别存入A段储存区、B段储存区、C段储存区;A段储存区对应的启动地址位置是0x80010000,B段储存区对应的启动地址位置是0x80110000,C段储存区对应的启动地址位置是0x80210000。当app程序V2.0所在启动地址0x80110000的B段储存区中有一个坏块导致V2.0不能运行时,再通过升级写入B区域时是无法写入成功的,会导致程序再无限补包,导致错误。所以通过修改B段储存区对应的启动地址0x80310000位置以避开坏块,做到灵活存储。所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
本发明将系统分成:boot引导程序、info信息区、BootLoader引导程序、应用程序(以下也称app),所述的boot引导程序由CPU从nandflash调用至DDR运行,boot引导程序在block0上;所述的info信息区,存有BootLoader、应用程序app引导程序运行区域、启动地址、代码校验码区、代码长度、升级时间、升级版本号;所述BootLoader引导程序包括多个区域不同版本BootLoader程序,可以是2个区域,3个区域,也可以是N个区域:如a区域和b区域、c区域程序;所述的app应用程序包括多个区域不同版本app应用程序,可是2个区域,3个区域,也可以是N个区域。
图3,当boot引导程序运行后,【step1】在info信息区查找BootLoader运行区域,【step2】指定的启动地址来引导BootLoader;在BootLoader运行之后,【step3】在info信息区查找app运行区域,【step4】指定的启动地址来引导app。其info区的数据是可后期通过升级修改的。本发明能实现BootLoader对非运行段app升级和对非运行BootLoader段升级,且app也能对非运行段BootLoader和非运行段app进行升级;保证系统的稳定性,特别适用于石油WIAPA物联网系统中,具有较好的使用价值。
boot根据读取info区信息可以灵活选择不同区域BootLoader程序。
BootLoader根据读取info区信息可以灵活选择不同区域APP程序。
BootLoader可以升级非运行BootLoader段升级与非运行app段升级。
app应用程序可以升级非运行BootLoader段升级与非运行app段升级。
app应用程序升级非运行BootLoader段升级与非运行app段升级时,app应用程序中的业务是不中断的。
Claims (10)
1.一种引导及应用程序灵活储存与升级的方法,其特征在于,包括以下步骤:
调用Block 0上boot引导程序至内存中,并运行boot引导程序;
boot引导程序在info信息区查找BootLoader引导程序运行区域以及指定的启动地址,引导BootLoader引导程序运行;
在BootLoader引导程序运行之后,等待升级指令,如果未收到升级指令,则在info信息区查找app应用程序运行区域以及指定的启动地址来引导app应用程序运行;如果收到升级指令,则解析升级指令,并根据解析结果进行升级。
2.根据权利要求1所述的一种引导及应用程序灵活储存与升级的方法,其特征在于,所述解析升级指令,具体为:解析升级指令中的升级对象是升级BootLoader引导程序或app应用程序,以及待升级内容所在Block区域的位置。
3.根据权利要求1所述的一种引导及应用程序灵活储存与升级的方法,其特征在于,升级过程包括:BootLoader引导程序对非运行的app应用程序升级、BootLoader引导程序对非运行的其他BootLoader引导程序升级、app应用程序对非运行的BootLoader引导程序升级、app应用程序对非运行的其他app应用程序进行升级。
4.根据权利要求3所述的一种引导及应用程序灵活储存与升级的方法,其特征在于,app应用程序在分别对BootLoader引导程序和其他app应用程序升级具体为:
当app应用程序运行过程中,接收到升级指令时,先解析升级指令,判断待升级对象是BootLoader引导程序还是app应用程序,再解析待升级区域,判定该区域是否是非运行段,如果是,则记录待升级版本号,再进行应答,等待接收升级包,进行升级;否则退出升级,正常执行app应用程序。
5.根据权利要求4所述的一种引导及应用程序灵活储存与升级的方法,其特征在于,所述升级包包括:
首包数据即升级指令,包括:升级对象识别码,升级段码,升级版本号,时间;
中间包数据包括:升级对象标识,程序版本号,启动地址,程序内容;
尾包数据为检验数据,校验所有程序包正确性和完整性。
6.一种引导及应用程序灵活储存与升级的系统,其特征在于,包括:
第一引导模块,用于查找info信息,调用含有升级模块的第二引导模块,并拷贝到内存中运行BootLoader引导程序;
第二引导模块,用于查找info信息,调用含有升级模块的app应用程序,并拷贝到内存中运行app应用程序;
升级模块,用于在BootLoader引导程序运行之后,等待升级指令,如果未收到升级指令,则在info信息区查找app应用程序运行区域以及指定的启动地址来引导app应用程序运行;如果收到升级指令,则解析升级指令,并根据解析结果进行升级;或用于在app应用程序运行之后,等待升级指令,如果未收到升级指令,继续运行其他应用,如果收到升级指令,则解析升级指令,并根据解析结果进行升级。
7.一种引导及应用程序灵活储存与升级的系统,其特征在于,包括多个Block区域,用于存储不同的程序和信息,包括:
Block 0,用于存储boot引导程序,以对boot引导程序引导、运行;
Block 1,用于存储info信息区;
Block x,用于存储BootLoader引导程序;
Block y,用于存储app应用程序。
8.根据权利要求7所述的一种引导及应用程序灵活储存与升级的系统,其特征在于,所述info信息区分别存有BootLoader引导程序和app应用程序的运行区域、启动地址、代码校验码区、代码长度、升级时间、升级版本号。
9.根据权利要求7所述的一种引导及应用程序灵活储存与升级的系统,其特征在于,所述Block x中包括多个Block区域,每一个区域存储一个BootLoader引导程序,所述Block y中包括多个Block区域,每一个区域存储一个app应用程序。
10.一种计算机可读存储介质,其特征在于,所述存储介质上存储有计算机程序,当所述计算机程序被处理器执行时,实现如权利要求1-5任一项所述的一种引导及应用程序灵活储存与升级的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210353450.3A CN114860291A (zh) | 2022-04-06 | 2022-04-06 | 一种引导及应用程序灵活储存与升级的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210353450.3A CN114860291A (zh) | 2022-04-06 | 2022-04-06 | 一种引导及应用程序灵活储存与升级的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114860291A true CN114860291A (zh) | 2022-08-05 |
Family
ID=82630322
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210353450.3A Pending CN114860291A (zh) | 2022-04-06 | 2022-04-06 | 一种引导及应用程序灵活储存与升级的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114860291A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302005A (zh) * | 2023-05-11 | 2023-06-23 | 合肥智芯半导体有限公司 | 芯片、芯片升级方法、装置、电子设备及可读存储介质 |
CN116431189A (zh) * | 2023-06-12 | 2023-07-14 | 广州万协通信息技术有限公司 | 基于pcie链路的板卡升级方法、装置、设备及存储介质 |
-
2022
- 2022-04-06 CN CN202210353450.3A patent/CN114860291A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116302005A (zh) * | 2023-05-11 | 2023-06-23 | 合肥智芯半导体有限公司 | 芯片、芯片升级方法、装置、电子设备及可读存储介质 |
CN116302005B (zh) * | 2023-05-11 | 2023-08-22 | 合肥智芯半导体有限公司 | 芯片、芯片升级方法、装置、电子设备及可读存储介质 |
CN116431189A (zh) * | 2023-06-12 | 2023-07-14 | 广州万协通信息技术有限公司 | 基于pcie链路的板卡升级方法、装置、设备及存储介质 |
CN116431189B (zh) * | 2023-06-12 | 2024-02-27 | 广州万协通信息技术有限公司 | 基于pcie链路的板卡升级方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10303490B2 (en) | Apparatus and method for optimizing startup of embedded system | |
CN114860291A (zh) | 一种引导及应用程序灵活储存与升级的方法 | |
CN111240720A (zh) | 引导程序升级方法、装置及存储介质 | |
CN105094927A (zh) | 一种设备固件升级方法和装置 | |
CN111562934A (zh) | 一种基于热补丁的软件系统升级方法、终端及存储介质 | |
CN110737449A (zh) | 用于处理设备固件的方法、装置和机器可读存储介质 | |
CN116932010B (zh) | 系统固件升级方法、装置及服务器 | |
CN114265603A (zh) | 基于不对称分区的系统升级方法、装置和电子设备 | |
CN113377586B (zh) | 一种服务器自动化检测方法、装置及存储介质 | |
EP3540598A1 (en) | Method, device and server for checking a defective function | |
CN114327574A (zh) | 一种差分升级方法、电子设备及存储介质 | |
CN111857785B (zh) | 一种mcu的启动方法、装置及终端设备 | |
CN104636574A (zh) | 终端设备升级方法及终端设备 | |
CN114398087B (zh) | 一种提高单片机更新程序后运行稳定性的方法及单片机 | |
CN112395130A (zh) | 一种系统备份的方法和设备 | |
CN113849200B (zh) | 一种安卓应用在安卓兼容环境中的安装优化方法及系统 | |
CN113641389B (zh) | 基于OpenCPU的软件升级方法、装置及设备 | |
CN115437675A (zh) | 一种应用程序在线升级方法、装置、设备及介质 | |
CN115437674A (zh) | 一种固件升级方法、装置、介质及电子设备 | |
KR100558394B1 (ko) | 전자장치 및 그 프로그램 업데이트 방법 | |
CN112988182A (zh) | Linux内核热补丁实现方法、电子设备及计算机可读介质 | |
CN113806118A (zh) | 一种应用程序自修复方法、装置、设备及存储介质 | |
CN111190627A (zh) | 系统升级方法及装置 | |
CN113467797A (zh) | 程序更新方法、装置和系统以及计算机可读存储介质 | |
CN113672238B (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 |