CN105893090B - 一种嵌入式系统bootrom和应用程序升级方法 - Google Patents
一种嵌入式系统bootrom和应用程序升级方法 Download PDFInfo
- Publication number
- CN105893090B CN105893090B CN201610196724.7A CN201610196724A CN105893090B CN 105893090 B CN105893090 B CN 105893090B CN 201610196724 A CN201610196724 A CN 201610196724A CN 105893090 B CN105893090 B CN 105893090B
- Authority
- CN
- China
- Prior art keywords
- bootrom
- application program
- upgrade
- upgrading
- memory
- 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.)
- Active
Links
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
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种嵌入式系统升级BOOTROM和应用程序方法,第一步,制作最小升级系统,其功能就是从内存中将BOOTROM和应用程序读出来,写入到Flash,然后重启完成升级;第二步,将最小升级系统、需要升级的BOOTROM和应用程序通过脚本打包,生成升级文件。第三步,将升级文件下载到系统中,替换原有应用程序,重启,将自动完成BOOTROM和应用程序升级。采用本发明介绍升级方法,可以在应用程序不支持BOOTROM升级情况下,一次完成BOOTROM和应用程序升级,保证升级对外接口的一致性。
Description
技术领域
本发明涉及一种通信设备更新和维护方法,具体涉及一种升级嵌入式系统的BOOTROM和/或应用程序方法。尤其涉及一种同时升级BOOTROM和应用程序方法。
背景技术
由于通常升级只会单独针对BOOTROM或应用程序进行升级,或者某些应用程序不支持BOOTROM升级,或者需要分多次升级才能完成BOOTROM和应用程序的同时升级,可能导致客户正常使用受到影响。本发明将提供一种同时升级BOOTROM和应用程序的新思路,满足特殊情况下升级要求。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种升级BOOTROM和应用程序方法,在制定了最小升级系统,及打包软件后,只需要根据需要升级的BOOTROM和应用程序,便可以打包成需要的镜像,升级到设备中重启完成BOOTROM和应用程序的自动升级。制定最小升级系统,将使升级运行过程更高效且稳定,可用于各种升级场合。
本发明提供了一种嵌入式系统升级BOOTROM和应用程序方法,包括:
步骤1,制作最小升级系统,所述最小升级系统包括最小升级程序,所述最小升级程序用于从内存中将BOOTROM和应用程序读出来,写入到Flash,然后重启完成升级;
步骤2,将所述最小升级系统、需要升级的BOOTROM和应用程序通过脚本打包,生成升级文件;
步骤3,将升级文件下载到系统中,替换原有应用程序,重启,由所述最小升级程序自动完成BOOTROM和应用程序升级。
在上述技术方案中,所述步骤1进一步包括:
1)裁剪系统,删除无关组件,只保留内核启动、Flash读写功能,保证升级任务高效运行;
2)编写升级任务,功能为读取内存中的BOOTROM和应用程序,并校验是否正确,校验正确则分别写入Flash的BOOTROM区和应用程序区,覆盖旧文件;升级完成后重启;
3)编译生成最小升级系统镜像。
在上述技术方案中,所述步骤2中生成升级文件的步骤包括采用脚本语言,读取用于升级的最小升级系统镜像、BOOTROM、应用程序,然后将最小升级系统写在最前面,接着写入为用于升级的BOOTROM的长度和BOOTROM的CRC16校验和,然后写入用于升级的BOOTROM的内容,接着写入用于升级的应用程序的长度和应用程序的CRC16校验和,然后写入用于升级的应用程序的内容。
在上述技术方案中,所述步骤3的流程包括:所述最小升级系统启动后读取内存空间,根据BOOTROM长度和BOOTROM的CRC16,读取BOOTROM文件,然后计算BOOTROM文件的CRC16是否与读取的相一致,判断一致就将BOOTROM写入到Flash;同样再读取内存空间,根据应用程序的长度和应用程序的CRC16,读取应用程序文件,然后计算应用程序的CRC16是否与读取的相一致,一致就写应用程序到Flash;重启后,新的BOOTROM和应用程序启动。
在上述技术方案中,所述步骤3的流程包括:
1)板卡启动完成硬件初始化;
2)BOOTROM启动;
3)BOOTROM读取到升级文件,并将其放在正确的地址空间;
4)CPU执行最小升级系统中的最小升级程序;
5)运行升级任务,从内存中读到升级文件的BOOTROM,写入flash中
6)从内存中读到升级文件的应用程序,写入flash中
7)重启。
在上述技术方案中,基于VxWorks系统制作最小升级系统。
在上述技术方案中,在升级文件的0x00000位置处写入最小升级系统的镜像,长度不足0x90000的部分补0;在升级文件的0x90000位置处写入BOOTROM的长度和校验和,然后写入BOOTROM,长度不足0xE0000的部分补0;在升级文件的0xE0000位置处写入应用程序的长度和校验和,然后写入应用程序。
在上述技术方案中,将升级文件放在内存空间0x10000;升级任务从内存0xA0000中读到升级文件的BOOTROM的长度,在内存0xA0004处读到BOOTROM的CRC校验和,然后从内存0xA0008处开始读取指定长度的BOOTROM的内容,计算读取的BOOTROM内容的CRC校验和,判断计算得到的校验和是否与之前内存0xA0004处读到BOOTROM的CRC校验和相一致,如果一致将读取的BOOTROM内容写入flash中BOOTROM区,覆盖旧BOOTROM;升级任务从内存0xF0000中读到升级文件的应用程序的长度,在内存0xF0004处读到应用程序的CRC校验和,然后从内存0xF0008处开始读取指定长度的应用程序的内容,计算读取的应用程序内容的CRC校验和,判断计算得到的校验和是否与之前内存0xF0004处读到应用程序的CRC校验和相一致,如果一致将读取的应用程序内容写入flash中应用程序区,覆盖旧应用程序。
采用本发明所提供的升级方法,可以在原有应用程序不支持BOOTROM升级情况下,一次性完成BOOTROM和应用程序的同时升级,保证升级对外接口的一致性。
附图说明
图1是本发明的升级文件制作过程图;
图2是本发明的升级文件结构示意图;
图3是本发明的启动及升级流程示意图;
图4是本发明的内存使用示意图;
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及具体实施方式对本发明作进一步的详细描述。
本发明提供一种升级BOOTROM和应用程序方法,包括升级文件制作和升级方法流程,包括以下步骤:
第一步:制定最小升级系统,使程序运行更高效且稳定
1)裁剪系统,删除无关组件,只保留内核启动、Flash读写功能,保证升级任务高效运行;例如基于VxWorks的最小系统进行裁剪,仅保留内核启动、Flash读写功能,删除其他无关组件。
2)编写升级任务作为最小升级程序,基于上述裁剪后的系统运行升级功能,升级功能为读取固定内存空间中的BOOTROM和应用程序,并校验是否正确,仅当校验正确后分别将从固定内存空间中读取得到的BOOTROM和应用程序写入Flash的BOOTROM区和应用程序区,覆盖旧文件;写入升级完成后重启系统。
3)编译生成最小升级系统(包括裁剪后的系统和升级任务应用),得到最小升级系统镜像文件,最小升级系统镜像文件的长度小于0x90000字节。
第二步:升级文件制作,具体过程如图1所示。
1)编译生成应用程序
2)编译生成BOOTROM
3)采用python脚本将最小升级系统镜像、BOOTROM、应用程序打包成一个升级文件update.bin。
以vxworks操作系统下的BOOTROM和应用程序升级为例,形成升级文件结构如图2所示,具体过程是在升级文件update.bin的0x00000位置处写入最小升级系统,长度不足0x90000的部分补0;在升级文件update.bin的0x90000位置处写入BOOTROM的长度(4字节整数)和校验和,然后写入BOOTROM,长度不足0xE0000的部分补0;在升级文件update.bin的0xE0000位置处写入应用程序的长度(4字节整数)和校验和,然后写入应用程序。其中,在升级文件update.bin的0x90000~0x90003写入BOOTROM的长度,0x90004~0x90007写入BOOTROM的CRC校验和,从0x90008开始写入BOOTROM程序和数据,0xE0000~0xE0003写入应用程序的长度,0xE0004~0xE0007写入应用程序的CRC校验和,从0xE0008开始写入应用程序和数据。由此制作完成升级文件update.bin。
第三步,升级方法流程
如图3所示,通过最小升级系统专门来完成BOOTROM和应用程序升级,保证升级可靠性和可拓展性。
步骤一中编制的最小升级系统,包含专有的升级功能,其升级任务启动后读取固定内存空间地址,读取BOOTROM长度和校验和,根据读到的BOOTROM长度读取BOOTROM,然后计算校验和是否与读取的一致,一致就写BOOTROM到Flash的BOOTROM区,覆盖旧的BOOTROM;同样再读取固定内存空间地址,读取应用程序长度和校验和,根据读到的应用程序长度读取应用程序,然后计算校验和是否与读取一致,一致就写应用程序到Flash的应用程序区;重启,新的BOOTROM和应用程序启动。
以vxworks操作系统下的BOOTROM和应用程序升级为例,升级具体步骤如下:
1)将升级文件传到板卡的Flash上,重启板卡;
2)板卡启动完成硬件初始化;
3)板卡BOOTROM启动完成;
4)读取到升级文件update.bin,并将其放在内存空间0x10000;所形成的升级文件内存位置如图4所示;
5)CPU从内存空间0x10000处开始运行最小升级系统;
6)最小升级系统启动后,运行升级任务,升级任务从内存0xA0000中读到升级文件的BOOTROM的长度,在内存0xA0004处读到BOOTROM的CRC校验和,然后从内存0xA0008处开始读取指定长度(即读取的BOOTROM长度)的BOOTROM的内容,计算读取的BOOTROM内容的CRC校验和,判断计算得到的校验和是否与之前内存0xA0004处读到BOOTROM的CRC校验和相一致,如果一致将读取的BOOTROM内容写入flash中BOOTROM区,覆盖旧BOOTROM;
7)升级任务从内存0xF0000中读到升级文件的应用程序的长度,在内存0xF0004处读到应用程序的CRC校验和,然后从内存0xF0008处开始读取指定长度(即读取的应用程序长度)的应用程序的内容,计算读取的应用程序内容的CRC校验和,判断计算得到的校验和是否与之前内存0xF0004处读到应用程序的CRC校验和相一致,如果一致将读取的应用程序内容写入flash中应用程序区,覆盖旧应用程序;
8)重启;
9)板卡将使用新的BOOTROM启动,并运行新的应用程序。
以上实施例仅为本发明的一种实施方式,其描述较为具体和详细,但不能因此而理解为对本发明专利范围的限制。其具体结构和尺寸可根据实际需要进行相应的调整。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。
Claims (7)
1.一种嵌入式系统升级BOOTROM和应用程序方法,其特征在于,包括:
步骤1,制作最小升级系统,所述最小升级系统包括最小升级程序,所述最小升级程序用于从内存中将BOOTROM和应用程序读出来,写入到Flash,然后重启完成升级;
步骤2,将所述最小升级系统、需要升级的BOOTROM和应用程序通过脚本打包,生成升级文件;
步骤3,将升级文件下载到系统中,替换原有应用程序,重启,由所述最小升级程序自动完成BOOTROM和应用程序升级;
所述步骤3的流程包括:所述最小升级系统启动后读取内存空间,根据BOOTROM长度和BOOTROM的CRC,读取BOOTROM文件,然后计算BOOTROM文件的CRC是否与读取的相一致,判断一致就将BOOTROM写入到Flash;同样再读取内存空间,根据应用程序的长度和应用程序的CRC,读取应用程序文件,然后计算应用程序的CRC是否与读取的相一致,一致就写应用程序到Flash;重启后,新的BOOTROM和应用程序启动。
2.如权利要求1所述的嵌入式系统升级BOOTROM和应用程序方法,其特征在于:所述步骤1进一步包括:
1)裁剪系统,删除无关组件,只保留内核启动、Flash读写功能;
2)编写升级任务作为最小升级程序,功能为读取内存中的BOOTROM和应用程序,并校验是否正确,校验正确则分别写入Flash的BOOTROM区和应用程序区,覆盖旧文件;升级完成后重启;
3)将裁剪后的系统和最小升级程序编译生成最小升级系统镜像。
3.如权利要求2所述的嵌入式系统升级BOOTROM和应用程序方法,其特征在于:所述步骤2中生成升级文件的步骤包括采用脚本语言,读取用于升级的最小升级系统镜像、BOOTROM、应用程序,然后将最小升级系统写在最前面,接着写入为用于升级的BOOTROM的长度和BOOTROM的CRC校验和,然后写入用于升级的BOOTROM的内容,接着写入用于升级的应用程序的长度和应用程序的CRC校验和,然后写入用于升级的应用程序的内容。
4.如权利要求1-3中任一项所述的嵌入式系统升级BOOTROM和应用程序方法,其特征在于:所述步骤3的流程包括:
1)板卡启动完成硬件初始化;
2)BOOTROM启动;
3)BOOTROM读取到升级文件,并将其放在正确的地址空间;
4)CPU执行最小升级系统中的最小升级程序;
5)运行升级任务,从内存中读到升级文件的BOOTROM,写入Flash中;
6)从内存中读到升级文件的应用程序,写入Flash中;
7)重启。
5.如权利要求4所述的嵌入式系统升级BOOTROM和应用程序方法,其特征在于:基于VxWorks系统制作最小升级系统。
6.如权利要求5所述的嵌入式系统升级BOOTROM和应用程序方法,其特征在于:在升级文件的0x00000位置处写入最小升级系统的镜像,长度不足0x90000的部分补0;在升级文件的0x90000位置处写入BOOTROM的长度和校验和,然后写入BOOTROM,长度不足0xE0000的部分补0;在升级文件的0xE0000位置处写入应用程序的长度和校验和,然后写入应用程序。
7.如权利要求6所述的嵌入式系统升级BOOTROM和应用程序方法,其特征在于:将升级文件放在内存空间0x10000;升级任务从内存0xA0000中读到升级文件的BOOTROM的长度,在内存0xA0004处读到BOOTROM的CRC校验和,然后从内存0xA0008处开始读取指定长度的BOOTROM的内容,计算读取的BOOTROM内容的CRC校验和,判断计算得到的校验和是否与之前内存0xA0004处读到BOOTROM的CRC校验和相一致,如果一致将读取的BOOTROM内容写入Flash中BOOTROM区,覆盖旧BOOTROM;升级任务从内存0xF0000中读到升级文件的应用程序的长度,在内存0xF0004处读到应用程序的CRC校验和,然后从内存0xF0008处开始读取指定长度的应用程序的内容,计算读取的应用程序内容的CRC校验和,判断计算得到的校验和是否与之前内存0xF0004处读到应用程序的CRC校验和相一致,如果一致将读取的应用程序内容写入Flash中应用程序区,覆盖旧应用程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610196724.7A CN105893090B (zh) | 2016-03-31 | 2016-03-31 | 一种嵌入式系统bootrom和应用程序升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610196724.7A CN105893090B (zh) | 2016-03-31 | 2016-03-31 | 一种嵌入式系统bootrom和应用程序升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105893090A CN105893090A (zh) | 2016-08-24 |
CN105893090B true CN105893090B (zh) | 2019-05-10 |
Family
ID=57011724
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610196724.7A Active CN105893090B (zh) | 2016-03-31 | 2016-03-31 | 一种嵌入式系统bootrom和应用程序升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN105893090B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106598781A (zh) * | 2016-11-30 | 2017-04-26 | 惠州华阳通用电子有限公司 | 一种系统软件升级方法 |
CN107179927A (zh) * | 2017-05-12 | 2017-09-19 | 郑州云海信息技术有限公司 | 一种基于BootRom的嵌入式系统启动方法 |
CN107168748A (zh) * | 2017-05-31 | 2017-09-15 | 武汉英泰斯特电子技术有限公司 | 一种通过一个升级文件包实现多项升级任务的方法 |
CN107688463B (zh) * | 2017-09-21 | 2020-08-18 | 杭州全维技术股份有限公司 | 一种嵌入式设备版本文件打包的方法 |
CN109408079B (zh) * | 2017-09-26 | 2020-04-14 | 广东电网有限责任公司江门供电局 | 一种嵌入式设备及其升级方法 |
CN109960523B (zh) * | 2017-12-22 | 2023-07-21 | 浙江宇视科技有限公司 | 一种嵌入式设备的固件升级方法及装置 |
CN111356982A (zh) * | 2018-11-30 | 2020-06-30 | 深圳市大疆创新科技有限公司 | 程序处理方法、设备及存储介质 |
CN109687278B (zh) * | 2019-01-02 | 2021-05-11 | 武汉光迅科技股份有限公司 | 一种用于光放大器在线升级程序的方法和装置 |
CN111338667B (zh) * | 2020-02-10 | 2023-08-01 | 浙江大华技术股份有限公司 | 一种应用程序app的升级方法与升级装置 |
CN112527366B (zh) * | 2020-11-25 | 2024-03-19 | 江苏华创微系统有限公司 | 嵌入式处理器引导程序的更新回卷容错设计技术 |
CN112486580A (zh) * | 2020-12-01 | 2021-03-12 | 中国船舶重工集团公司第七一六研究所 | 一种实现VxWorks操作系统快速启动的方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN100501677C (zh) * | 2007-01-09 | 2009-06-17 | 中兴通讯股份有限公司 | Boot软件引导app软件的方法和装置 |
EP2310941A1 (fr) * | 2008-06-02 | 2011-04-20 | Awox | Procede et dispositif de mise a jour d'application informatique |
CN103365676B (zh) * | 2012-04-01 | 2016-08-03 | 中兴通讯股份有限公司 | 通信设备的软件升级方法及装置 |
CN104063256A (zh) * | 2014-07-18 | 2014-09-24 | 上海斐讯数据通信技术有限公司 | 基于最小操作系统的分区及固件升级方法 |
-
2016
- 2016-03-31 CN CN201610196724.7A patent/CN105893090B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN105893090A (zh) | 2016-08-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105893090B (zh) | 一种嵌入式系统bootrom和应用程序升级方法 | |
CN103699421B (zh) | 嵌入式设备系统升级方法及其装置 | |
CN106095620B (zh) | 一种嵌入式Linux存储分区的开发方法 | |
US20140372799A1 (en) | System Differential Upgrade Method, Apparatus, and Mobile Terminal | |
CN107179909A (zh) | 软件升级方法、装置及计算机可读存储介质 | |
US20110320794A1 (en) | Flash System And Method For Updating The Flash System | |
CN110333891A (zh) | 基于物联网的增强型ota升级的方法 | |
CN113821235B (zh) | 操作系统数据更新方法、设备、存储介质及程序产品 | |
KR101674975B1 (ko) | 시스템 업그레이드 방법, 장치, 기기, 프로그램 및 기록매체 | |
CN104123153A (zh) | 用于使用usb升级固件的装置与方法 | |
CN104965776B (zh) | 移动终端在恢复模式下查看日志的方法和系统 | |
WO2018032757A1 (zh) | 组件升级的方法及装置 | |
CN108874437B (zh) | 一种android应用程序的在线云更新方法 | |
CN107643898A (zh) | 终端升级方法及装置 | |
CN109189434A (zh) | 一种电能表的在线升级方法 | |
WO2017000567A1 (zh) | 一种实现bootrom升级的方法及装置 | |
CN106648759A (zh) | 一种通用编程器固件的更新方法 | |
WO2020029967A1 (zh) | 一种操作系统故障的修复方法和装置 | |
US20130055217A1 (en) | Breakpoint synchronization for modified program source code | |
CN109634642A (zh) | 一种fpga配置文件远程升级的方法 | |
CN112540725A (zh) | 非易失性数据存储方法、嵌入式系统以及存储介质 | |
CN108897576A (zh) | 一种基于arm芯片的快速启动boot的方法 | |
CN105025364A (zh) | 一种智能电视ota延迟升级的方法 | |
CN109165037A (zh) | 一种基于串口处理器的程序在线更新方法及系统 | |
CN106681761B (zh) | 一种交互式升级的方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |