CN114860291A - 一种引导及应用程序灵活储存与升级的方法 - Google Patents

一种引导及应用程序灵活储存与升级的方法 Download PDF

Info

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
Application number
CN202210353450.3A
Other languages
English (en)
Inventor
刘飞
赵雪峰
杨斌
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shenyang Zhongke Allwin Co ltd
Original Assignee
Shenyang Zhongke Allwin Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shenyang Zhongke Allwin Co ltd filed Critical Shenyang Zhongke Allwin Co ltd
Priority to CN202210353450.3A priority Critical patent/CN114860291A/zh
Publication of CN114860291A publication Critical patent/CN114860291A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/65Updates
    • G06F8/654Updates using techniques specially adapted for alterable solid state memories, e.g. for EEPROM or flash memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping

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任一项所述的一种引导及应用程序灵活储存与升级的方法。
CN202210353450.3A 2022-04-06 2022-04-06 一种引导及应用程序灵活储存与升级的方法 Pending CN114860291A (zh)

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)

* Cited by examiner, † Cited by third party
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链路的板卡升级方法、装置、设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
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