CN111880827A - 一种嵌入式软件升级方法 - Google Patents
一种嵌入式软件升级方法 Download PDFInfo
- Publication number
- CN111880827A CN111880827A CN202010742435.9A CN202010742435A CN111880827A CN 111880827 A CN111880827 A CN 111880827A CN 202010742435 A CN202010742435 A CN 202010742435A CN 111880827 A CN111880827 A CN 111880827A
- Authority
- CN
- China
- Prior art keywords
- upgrading
- upgrade
- data
- program
- ddr
- 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.)
- Granted
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
Abstract
本发明提供了一种嵌入式软件升级方法,利用ddr内存在非掉电重启后(系统软重启)后数据不丢失的特性,在应用程序逻辑中将升级包数据保存在指定的ddr中,并将升级所需的各项升级标志位参数保存于Flash的特定位置para分区;在uboot环境下根据读取para分区中的数据,判断系统是否需要升级,以及校验应用程序保存在ddr中的升级包数据是否合法;并按保存在para分区中的参数进行擦写flash。本发明利用ddr内存在非掉电重启后数据不丢失的特性,结合kernel环境下各种功能完善,在应用层软件中,通过单独开发一个进程用于负责按协议接收、分析、存储数据至ddr内存中,并将升级相关标志位参数写入到flash中,无需在uboot下移植复杂的远程升级接口程序以及相关协议即可实现软件的升级。
Description
技术领域
本发明涉及一种软件升级方法,具体涉及一种嵌入式软件升级方法。
背景技术
嵌入式产品中,系统程序升级是一个基本功能,常被称为loader。loader的主体是负责处理升级数据下载、协议解析和数据存储的一段程序。程序升级包普遍主要包括如下部分:uboot(fastboot)、kernel、rootfs、app等;是按照程序模块部件进行拼接组合,最后生成一个完整的升级包。
根据loader升级程序的运行环境,可分为AppLoader和BootLoader两种。AppLoader程序运行于kernel环境,主要在应用程序中实现;BootLoader程序运行于boot环境,在uboot程序中实现。程序升级功能主要实现方式为两种。1、通过外接存储设备升级,如:U盘、SD等,并在程序中识别、读取存储设备中的升级包;2、通过远程升级;通过USB口、网络等传输设备进行升级包数据的传输。两种升级方式都可以在Apploader和Bootloader中实现。Apploader主要是在应用层软件进行升级数据包的接收、读取、分析、校验以及最后将升级数据写入flash中,优点是:在应用层软件进行数据的处理简单方便;各种功能接口实现简单;缺点是:应用层软件是按程序模块部件进行擦写flash的,如果某个程序部件大小超过在系统启动参数中设置的在flash中所占大小,则无法正常升级;Bootloader主要是在uboot环境下,对升级包数据进行如Apploader相同的逻辑处理;优点是:可以同步设置启动参数,设置每个程序部件在flash中的大小;缺点是:uboot下移植各种用于接收升级包数据包的各种功能接口比较麻烦。
现有技术中,系统启动参数如下所示:
setenvbootargs’mem=32M console=ttyAMA0,115200root=/dev/romblock2rootfstype=squashfs mtdparts=hinand:2M(boot),14M(kernel),56M(rootfs),32M(app),10M(www),4M(para),64M(p2p),4M(log);
其中,各个程序部件按启动参数所示保存入flash中,各个程序部件小于等于启动参数所示的大小,如果某一个程序部件变大,则必须在uboot环境下重新设置启动程序才能更改。在kernel环境下,擦写flash也只能按照启动参数所示的各个分区的大小进行擦写。
上述软件升级方法存在的缺点:
1、Apploader在kernel环境下实现程序升级功能,kernel环境下软件无法设置系统启动参数,无法动态更改各个程序部件的大小;原因:应用程序在读写flash时,只能按照启动参数中设置的mtd、medblock、romblock等模块部件大小进行操作,如系统启动参数所示:uboot分区占Flash大小为2M、kernel占14M等;如果因为程序功能增多,导致app大小变为36M,则在kernel环境下,无法擦写app分区为36M,最大只能擦写32M,从而导致app无法有效升级。
2、Bootloader在uboot环境下实现程序升级功能,如果进行远程升级,通过OTA、USB口、网络等远程升级方式,需要在uboot下移植OTA、USB、网络等对应功能的软件接口,并且移植对应的数据传输协议,在uboot下环境下开发这些接口难度大。
发明内容
针对现有技术的不足,本发明提出了一种嵌入式软件升级方法,利用ddr内存在非掉电重启后数据不丢失的特性,结合kernel环境下各种功能完善,在应用层软件中,关闭主进程,通过单独开发一个进程用于负责按协议接收、分析、存储数据至ddr内存中,并将升级相关标志位参数写入到flash中,无需在uboot下移植复杂的远程升级接口程序以及相关协议即可实现软件的升级。
为实现上述技术方案,本发明提供了一种嵌入式软件升级方法,具体包括如下步骤:
S1、应用程序处理,
S11、应用程序在收到升级请求后,停止掉系统主进程,转而进入升级逻辑进程;
S12、在升级进程中申请一段连续的ddr内存,并处理升级包数据,然后接收、解析、校验升级包数据后将升级数据存储于之前申请的系统内存ddr中;
S13、校验完升级包数据后,将升级标志位、升级数据校验和以及每个程序部件大小的数据存储于flash的参数区para中;
S14、系统软重启;
S2、uboot程序处理,
S21、在uboot环境下,屏蔽uboot环境下ddr内存的软复位功功能,保证在应用层程序中保存于ddr内存中的升级数据不会因系统软重启而被更改;
S22、更改uboot逻辑,增加读取flash中para参数区中的各个升级相关的数据,判断是否进行升级操作;
S23、当确认升级操作后,开启loader程序,读取para参数区中升级相关的数据,升级系统;
S24、升级系统完成后,清除flash中para参数区中的升级相关数据,系统重启。
优选的,如权利要求1所述的嵌入式软件升级方法,其特征在于,所述步骤S12中处理升级包数据的方法主要包括:接收、分析和存储升级包数据到申请的一段连续的ddr内存中。
优选的,所述步骤S13中存储于flash的参数区para中的升级相关信息包括:升级标志位、各个程序模块的大小以及写入到flash中的位置信息、ddr内存中存储升级包数据的位置信息。
优选的,所述步骤S23中:当确认不升级操作后,开启kernel程序,进入主程序,升级程序停止。
优选的,所述步骤S22中,判断是否进行升级操作具体包括,在uboot环境下根据读取para分区中的数据,首先通过校验应用程序保存在ddr中的升级包数据是否合法,然后判断系统是否需要升级,最后发出是否升级的提示,用户可以选择升级或者放弃升级。
本发明提供的一种嵌入式软件升级方法的有益效果在于:
1)本嵌入式软件升级方法,利用ddr内存在非掉电重启后数据不丢失的特性,结合kernel环境下各种功能完善,在应用层软件中,关闭主进程,通过单独开发一个进程用于负责按协议接收、分析、存储数据至ddr内存中,并将升级相关标志位参数写入到flash中,无需在uboot下移植复杂的远程升级接口程序以及相关协议即可实现软件的升级,解决bootloader在uboot中实现远程升级功能需要移植对应数据传输接口的问题;
2)在uboot环境下可根据升级包程序大小动态设置启动参数,uboot下loader软件逻辑简单,并利用ddr内存在非掉电重启后数据不丢失的特性,结合kernel环境下各种功能完善,容易实现各种远程升级传输数据所需的功能接口,uboot环境下擦写flash时无需按程序分区进行操作,可动态实现调整各个程序分区的大小,解决Apploader在kernel环境下应用层软件中处理升级数据包时无法动态更改擦写flash分区大小的问题。
附图说明
图1为本发明的运行逻辑流程图。
图2为本发明中应用程序App逻辑流程图。
图3为本发明中uboot程序逻辑流程图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。本领域普通人员在没有做出创造性劳动前提下所获得的所有其他实施例,均属于本发明的保护范围。
实施例:一种嵌入式软件升级方法。
嵌入式系统中,常用的存储设备有flash和ddr内存,其中,flash用于存储系统程序,主要包括uboot、kernel、rootfs、app等;ddr内存用于运行系统程序,ddr为断电不保护存储设备,在系统不断电的情况下,ddr内存保存的数据是不丢失的。本嵌入式软件升级方法是利用ddr内存在非掉电重启后(系统软重启)后数据不丢失的特性,在应用程序逻辑中将升级包数据保存在指定的ddr中,并将升级所需的各项升级标志位参数保存于Flash的特定位置para分区;在uboot环境下根据读取para分区中的数据,判断系统是否需要升级,以及校验应用程序保存在ddr中的升级包数据是否合法;并按保存在para分区中的参数进行擦写flash。
参照图1至图3所示,一种嵌入式软件升级方法,具体包括如下步骤:
S1、应用程序处理,当应用程序在收到升级请求后,停止掉系统主进程,转而进入升级逻辑进程;在升级进程中申请一段连续的ddr内存,并处理升级包数据,处理升级包数据的方法为:接收、分析和存储升级包数据到申请的一段连续的ddr内存中,然后接收、解析、校验升级包数据后将升级数据存储于之前申请的系统内存ddr中;校验完升级包数据后,将升级标志位、升级数据校验和以及每个程序部件大小的数据存储于flash的参数区para中,其中存储于flash的参数区para中的升级相关信息主要包括:升级标志位、各个程序模块的大小以及写入到flash中的位置信息、ddr内存中存储升级包数据的位置信息;然后系统软重启;
S2、uboot程序处理,在uboot环境下,屏蔽uboot环境下ddr内存的软复位功功能,保证在应用层程序中保存于ddr内存中的升级数据不会因系统软重启而被更改;更改uboot逻辑,增加读取flash中para参数区中的各个升级相关的数据,判断是否进行升级操作,其中判断是否进行升级操作具体包括,在uboot环境下根据读取para分区中的数据,首先通过校验应用程序保存在ddr中的升级包数据是否合法,然后判断系统是否需要升级,最后发出是否升级的提示,用户可以选择升级或者放弃升级;当确认升级操作后,开启loader程序,其中loader程序的主要功能是读取Para参数区中升级相关的数据,升级系统;当确认不升级操作后,开启kernel程序,进入主程序,升级程序停止;升级系统完成后,清除flash中para参数区中的升级相关数据,系统重启。
本嵌入式软件升级方法利用ddr内存在非掉电重启后数据不丢失的特性,结合kernel环境下各种功能完善,在应用层软件中,关闭主进程,通过单独开发一个进程用于负责按协议接收、分析、存储数据至ddr内存中,并将升级相关标志位参数写入到flash中,无需在uboot下移植复杂的远程升级接口程序以及相关协议即可实现软件的升级,解决bootloader在uboot中实现远程升级功能需要移植对应数据传输接口的问题。
本嵌入式软件升级方法在uboot环境下可根据升级包程序大小动态设置启动参数,uboot下loader软件逻辑简单,并利用ddr内存在非掉电重启后数据不丢失的特性,结合kernel环境下各种功能完善,容易实现各种远程升级传输数据所需的功能接口,uboot环境下擦写flash时无需按程序分区进行操作,可动态实现调整各个程序分区的大小,解决Apploader在kernel环境下应用层软件中处理升级数据包时无法动态更改擦写flash分区大小的问题。
以上所述为本发明的较佳实施例而已,但本发明不应局限于该实施例和附图所公开的内容,所以凡是不脱离本发明所公开的精神下完成的等效或修改,都落入本发明保护的范围。
Claims (5)
1.一种嵌入式软件升级方法,其特征在于具体包括如下步骤:
S1、应用程序处理,
S11、应用程序在收到升级请求后,停止掉系统主进程,转而进入升级逻辑进程;
S12、在升级进程中申请一段连续的ddr内存,并处理升级包数据,然后接收、解析、校验升级包数据后将升级数据存储于之前申请的系统内存ddr中;
S13、校验完升级包数据后,将升级标志位、升级数据校验和以及每个程序部件大小的数据存储于flash的参数区para中;
S14、系统软重启。
S2、uboot程序处理,
S21、在uboot环境下,屏蔽uboot环境下ddr内存的软复位功功能,保证在应用层程序中保存于ddr内存中的升级数据不会因系统软重启而被更改;
S22、更改uboot程序逻辑,增加读取flash中para参数区中的各个升级相关的数据,判断是否进行升级操作;
S23、当确认升级操作后,开启loader程序,读取para参数区中升级相关的数据,升级系统;
S24、升级系统完成后,清除flash中para参数区中的升级相关数据,系统重启。
2.如权利要求1所述的嵌入式软件升级方法,其特征在于,所述步骤S12中处理升级包数据的方法主要包括:接收、分析和存储升级包数据到申请的一段连续的ddr内存中。
3.如权利要求3所述的嵌入式软件升级方法,其特征在于,所述步骤S13中存储于flash的参数区para中的升级相关信息包括:升级标志位、各个程序模块的大小、升级数据包在ddr的存储以及写入到flash中的位置信息、ddr内存中存储升级包数据的位置信息。
4.如权利要求1所述的嵌入式软件升级方法,其特征在于,所述步骤S23中:当确认不升级操作后,开启kernel程序,进入主程序,升级程序停止。
5.如权利要求1所述的嵌入式软件升级方法,其特征在于,所述步骤S22中,系统reset后,判断是否进行升级操作具体包括:在uboot环境下根据读取para分区中的数据,首先通过校验应用程序保存在ddr中的升级包数据是否合法,然后判断系统是否需要升级,最后发出是否升级的提示,用户可以选择升级或者放弃升级。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010742435.9A CN111880827B (zh) | 2020-07-29 | 2020-07-29 | 一种嵌入式软件升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010742435.9A CN111880827B (zh) | 2020-07-29 | 2020-07-29 | 一种嵌入式软件升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111880827A true CN111880827A (zh) | 2020-11-03 |
CN111880827B CN111880827B (zh) | 2021-03-16 |
Family
ID=73200349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010742435.9A Active CN111880827B (zh) | 2020-07-29 | 2020-07-29 | 一种嵌入式软件升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111880827B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596766A (zh) * | 2020-12-24 | 2021-04-02 | 浙江合众新能源汽车有限公司 | 基于Bootloader的软件升级方法及装置 |
CN112631637A (zh) * | 2020-12-30 | 2021-04-09 | 重庆芯讯通无线科技有限公司 | 基于rtos的ota升级方法、系统、设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782859A (zh) * | 2010-03-18 | 2010-07-21 | 上海乐毅信息科技有限公司 | 一种嵌入式系统在应用中的升级方法 |
CN102073522A (zh) * | 2011-01-13 | 2011-05-25 | 深圳市科陆电子科技股份有限公司 | 面向嵌入式系统的应用程序在线自我更新方法 |
CN102253846A (zh) * | 2010-05-21 | 2011-11-23 | 康佳集团股份有限公司 | 一种嵌入式系统软件升级的方法 |
-
2020
- 2020-07-29 CN CN202010742435.9A patent/CN111880827B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101782859A (zh) * | 2010-03-18 | 2010-07-21 | 上海乐毅信息科技有限公司 | 一种嵌入式系统在应用中的升级方法 |
CN102253846A (zh) * | 2010-05-21 | 2011-11-23 | 康佳集团股份有限公司 | 一种嵌入式系统软件升级的方法 |
CN102073522A (zh) * | 2011-01-13 | 2011-05-25 | 深圳市科陆电子科技股份有限公司 | 面向嵌入式系统的应用程序在线自我更新方法 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112596766A (zh) * | 2020-12-24 | 2021-04-02 | 浙江合众新能源汽车有限公司 | 基于Bootloader的软件升级方法及装置 |
CN112631637A (zh) * | 2020-12-30 | 2021-04-09 | 重庆芯讯通无线科技有限公司 | 基于rtos的ota升级方法、系统、设备及存储介质 |
CN112631637B (zh) * | 2020-12-30 | 2024-04-02 | 重庆芯讯通无线科技有限公司 | 基于rtos的ota升级方法、系统、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111880827B (zh) | 2021-03-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6760908B2 (en) | Embedded software update system | |
CN111880827B (zh) | 一种嵌入式软件升级方法 | |
US7991988B2 (en) | Communication device and firmware update method thereof | |
CN101751273B (zh) | 用于嵌入式系统的安全引导装置及方法 | |
CN100570558C (zh) | 一种芯片固件升级方法 | |
KR100440950B1 (ko) | 네트워크 환경에 있어서 소프트웨어 업그레이드 방법 및그에 따른 네트워크 디바이스 | |
US20060064576A1 (en) | Boot systems and methods | |
EP3518097B1 (en) | Firmware updating method and electronic device using the same | |
CN110187909B (zh) | 一种基于安卓系统的单片机固件升级方法 | |
CN110851163B (zh) | 一种基于can通信的兼容多设备平台的软件更新方法 | |
CN110716845B (zh) | 一种Android系统的日志信息读取的方法 | |
CN110597542A (zh) | 软件自动ota升级方法及装置、电子设备 | |
WO2015154538A1 (zh) | 存储器的启动方法及装置 | |
KR102277238B1 (ko) | 업데이트가능한 집적 회로 무선장치 | |
US20050216904A1 (en) | Non-disruptive method, system and program product for overlaying a first software module with a second software module | |
US20070233750A1 (en) | Data control apparatus and method | |
CN111427617A (zh) | 数据处理方法、装置及设备 | |
CN111984298B (zh) | 一种闪存中的程序升级区、程序升级方法及系统 | |
CN112363726A (zh) | 一种内核模块的跨内核版本编译方法及系统 | |
US8019985B2 (en) | Data-processing arrangement for updating code in an auxiliary processor memory | |
CN114625389A (zh) | 嵌入式设备升级方法、嵌入式设备及存储装置 | |
US20210326125A1 (en) | Installing application program code on a vehicle control system | |
US20230333830A1 (en) | Software eligibility | |
US20040210683A1 (en) | Embedding driver patches | |
KR20090103214A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |