CN105893090B - 一种嵌入式系统bootrom和应用程序升级方法 - Google Patents

一种嵌入式系统bootrom和应用程序升级方法 Download PDF

Info

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
Application number
CN201610196724.7A
Other languages
English (en)
Other versions
CN105893090A (zh
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.)
Accelink Technologies Co Ltd
Original Assignee
Accelink Technologies 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 Accelink Technologies Co Ltd filed Critical Accelink Technologies Co Ltd
Priority to CN201610196724.7A priority Critical patent/CN105893090B/zh
Publication of CN105893090A publication Critical patent/CN105893090A/zh
Application granted granted Critical
Publication of CN105893090B publication Critical patent/CN105893090B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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

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和应用程序的自动升级。制定最小升级系统,将使升级运行过程更高效且稳定,可用于各种升级场合。
本发明提供了一种嵌入式系统升级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中应用程序区,覆盖旧应用程序。
CN201610196724.7A 2016-03-31 2016-03-31 一种嵌入式系统bootrom和应用程序升级方法 Active CN105893090B (zh)

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)

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

* Cited by examiner, † Cited by third party
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 上海斐讯数据通信技术有限公司 基于最小操作系统的分区及固件升级方法

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