CN102243587B - 嵌入式系统中对rom程序的升级方法 - Google Patents
嵌入式系统中对rom程序的升级方法 Download PDFInfo
- Publication number
- CN102243587B CN102243587B CN201010176135.5A CN201010176135A CN102243587B CN 102243587 B CN102243587 B CN 102243587B CN 201010176135 A CN201010176135 A CN 201010176135A CN 102243587 B CN102243587 B CN 102243587B
- Authority
- CN
- China
- Prior art keywords
- rompaq
- upgrade
- software
- program
- flash
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 15
- 230000006870 function Effects 0.000 claims description 37
- FGUUSXIOTUKUDN-IBGZPJMESA-N C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 Chemical compound C1(=CC=CC=C1)N1C2=C(NC([C@H](C1)NC=1OC(=NN=1)C1=CC=CC=C1)=O)C=CC=C2 FGUUSXIOTUKUDN-IBGZPJMESA-N 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 3
- 239000002699 waste material Substances 0.000 abstract description 3
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种嵌入式系统中对ROM程序的升级方法,包括在每个软件函数开始位置设置一个升级调用程序模块,且在FLASH中开辟一块独立的程序升级区来保存升级程序包。当需要升级软件时,制作升级程序包并将升级程序包写入到FLASH的程序升级区。升级调用程序模块检测FLASH中是否有升级程序包,若未发现所述的升级程序包,则执行ROM软件中的原始程序,若发现所述的升级程序包,则将FLASH中的升级程序包拷贝到RAM中并执行升级程序。本发明的有益效果是:既可以升级ROM保存的软件,又可以利用更新升级程序包的方式来填补软件漏洞以保证软件的正常运行,还可以只针对部分函数进行升级,以减少FLASH硬件资源的浪费。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种嵌入式系统中对ROM程序的升级方法。
背景技术
嵌入式系统中,使用ROM来保存软件,由于ROM是只读存储器,那么ROM上存储的软件是无法升级的。嵌入式系统中用ROM存储器保存软件时,还会有一片FLASH存储器来存储文件系统,一片RAM存储器保存运行堆栈及全局变量。由于FLASH存储器和RAM存储器是可以擦写的,显然,可以利用flash来保存升级软件部分,又不删除ROM原有程序而达到系统升级的功能。
发明内容
为了克服ROM上存储的软件无法升级的缺陷,本发明提出一种嵌入式系统中对ROM程序的升级方法。
本发明是这样实现的:一种嵌入式系统中对ROM程序的升级方法,包括以下步骤:
a、在生成ROM软件时在每个软件函数开始位置设置一个升级调用程序模块;
b、在FLASH中开辟一块独立的程序升级区,所述程序升级区用于保存升级程序包;
c、需要升级软件时,制作升级程序包;
d、将升级程序包写入到FLASH的程序升级区;
e、升级调用程序模块检测FLASH中是否有升级程序包,若未发现所述的升级程序包,则执行步骤f,若发现所述的升级程序包,则执行g;
f、执行ROM软件中的原始程序;
g、则将FLASH中的升级程序包拷贝到RAM中并执行升级程序。
其中,升级调用程序模块包括系统所有函数的列表数组和列表枚举。函数数组中保存的是一个指针,初始为NULL。如果有对该函数升级,这个指针将会指向新的升级程序。在每个函数开始位置处调用一个桩函数stub,stub的参数是本函数枚举量,在stub中根据输入参数去索引列表数组是否有升级程序,如果有则通过改变调用栈参数跳转到新程序中,否则就退出stub,执行原始程序。
本发明的有益效果是:其一,利用本方法,产品中可以放心的使用ROM保存软件,对ROM保存的软件也可以升级,从而可以有效的节省硬件成本。其二,如果升级程序有漏洞,也可以利用更新升级程序包的方式来填补漏洞或者执行原始程序以保证软件的正常运行。其三,代码升级可以只针对部分函数进行,可有效的减少升级包的大小,从而减少FLASH硬件资源的浪费。
附图说明
图1是本发明嵌入式系统中对ROM程序的升级方法示意图。
具体实施方式
下面,对照附图和较佳实施例对本发明的技术方案进行详细说明。
如图1所示,本发明提出的一种嵌入式系统中对ROM程序的升级方法,包括以下步骤:
a、在生成ROM软件时在每个软件开始位置设置一个升级调用程序模块;
b、在FLASH中开辟一块独立的程序升级区,所述程序升级区用于保存升级程序包;
c、需要升级软件时,制作升级程序包;
d、将升级程序包写入到FLASH的程序升级区;
e、升级调用程序模块检测FLASH中是否有升级程序包,若未发现所述的升级程序包,则执行步骤f,若发现所述的升级程序包,则执行g;
f、执行ROM软件中的原始程序;
g、则将FLASH中的升级程序包拷贝到RAM中并执行升级程序。
升级调用程序模块是由在生成ROM软件时产生一份系统所有函数的列表数组和一个列表枚举来实现的。函数数组中保存的是一个指针,初始为NULL。如果以后有对该函数升级,这个指针将会指向新的升级程序。在每个函数开始位置处调用一个桩函数stub,stub的参数是本函数枚举量,在stub中根据输入参数去索引列表数组是否有升级程序,如果有则通过改变调用栈参数跳转到新程序中,否则就退出stub,执行原始程序。
在flash中开辟一份独立的区域保存升级程序和更新后全局函数列表数组,新数组保存了指向升级程序的指针。
升级包主要涉及到以下三部分:
1升级包的制作。
利用和发布ROM相同的编译环境,根据测试中发现的bug或者需要添加的新功能,添加新的函数实现这些功能,不要修改原始的程序代码,同时根据新函数和要替换掉的老函数的对应关系,填充函数列表数组。并且将新的函数列表数组及新函数编译生成一个新的升级包。
2升级包的注入。
系统运行后利用升级程序将升级包写入到flash中预留的升级区域。并且重启系统。
3升级包的使用。
系统启动时检查flash中预留的升级区域是否有效,如果有效则利用升级包中新的函数列表数组替换ROM中老的函数列表数组,并且将新的升级代码拷贝到RAM中,为以后代码的执行做准备。
系统正常启动后在每个函数的入口出都会调用stub函数,而stub中使用的已经是新的函数列表数组了,所以它可以运行到升级包中的新功能,从而达到升级系统的目的。
本发明实施例中:嵌入式系统中对ROM程序的升级方法,包括在每个软件开始位置设置一个升级调用程序模块,且在FLASH中开辟一块独立的程序升级区来保存升级程序包。当需要升级软件时,制作升级程序包并将升级程序包写入到FLASH的程序升级区。升级调用程序模块检测FLASH中是否有升级程序包,若未发现所述的升级程序包,则执行ROM软件中的原始程序,若发现所述的升级程序包,则将FLASH中的升级程序包拷贝到RAM中并执行升级程序。本发明实施例的有益效果在于:既可以升级ROM保存的软件,又可以利用更新升级程序包的方式来填补软件漏洞以保证软件的正常运行,还可以只针对部分函数进行升级,以减少FLASH硬件资源的浪费。
虽然以上结合具体实施方式对本发明内容进行了详细地说明,但是应当理解到,本领域的技术人员在不违背本发明的原理和实质精神的前提下,对本发明的实施方式可以作出各种变形或者修改,这些变形和修改均应当落入本发明的保护范围。
Claims (2)
1.一种嵌入式系统中对ROM程序的升级方法,其特征在于包括以下步骤:
a、在生成ROM软件时在每个软件开始位置设置一个升级调用程序模块;
b、在FLASH中开辟一块独立的程序升级区,所述程序升级区用于保存升级程序包;
c、需要升级软件时,制作升级程序包;
d、将升级程序包写入到FLASH的程序升级区;
e、升级调用程序模块检测FLASH中是否有升级程序包,若未发现所述的升级程序包,则执行步骤f,若发现所述的升级程序包,则执行g;
f、执行ROM软件中的原始程序;
g、则将FLASH中的升级程序包拷贝到RAM中并执行升级程序;
所述的升级调用程序模块在生成ROM软件时产生,包括系统所有函数的列表数组和一个列表枚举;
所述的函数的列表数组中保存的是一个指针,初始为NULL,如果有对该函数升级,这个指针将会指向新的升级程序。
2.如权利要求1所述的嵌入式系统中对ROM程序的升级方法,其特征在于:在每个函数开始位置处调用一个桩函数stub,stub的参数是本函数枚举量,在stub中根据输入参数去索引列表数组是否有升级程序,如果有则通过改变调用栈参数跳转到新程序中,否则就退出stub,执行原始程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010176135.5A CN102243587B (zh) | 2010-05-14 | 2010-05-14 | 嵌入式系统中对rom程序的升级方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010176135.5A CN102243587B (zh) | 2010-05-14 | 2010-05-14 | 嵌入式系统中对rom程序的升级方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102243587A CN102243587A (zh) | 2011-11-16 |
CN102243587B true CN102243587B (zh) | 2015-09-23 |
Family
ID=44961659
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010176135.5A Expired - Fee Related CN102243587B (zh) | 2010-05-14 | 2010-05-14 | 嵌入式系统中对rom程序的升级方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102243587B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463230B (zh) * | 2020-11-23 | 2023-08-25 | 浙江地芯引力科技有限公司 | 程序运行方法及装置、电子设备、存储介质 |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693145B (zh) * | 2012-05-31 | 2015-02-25 | 红石阳光(北京)科技有限公司 | 用于嵌入式系统的差分升级方法 |
CN102799452B (zh) * | 2012-06-29 | 2015-10-07 | 深圳市安普尔科技有限公司 | 系统软件升级方法和装置 |
EP2959378A1 (en) * | 2013-02-22 | 2015-12-30 | Marvell World Trade Ltd. | Patching boot code of read-only memory |
CN103761126B (zh) * | 2014-01-07 | 2017-03-15 | 中国神华能源股份有限公司 | 应用程序的升级方法和装置 |
CN107894899B (zh) * | 2017-12-06 | 2021-04-06 | 北京联盛德微电子有限责任公司 | Rom程序升级系统及升级方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6754828B1 (en) * | 1999-07-13 | 2004-06-22 | Intel Corporation | Algorithm for non-volatile memory updates |
CN1536488A (zh) * | 2003-04-04 | 2004-10-13 | 上海交大达通电子信息有限公司 | 网络升级嵌入式系统固件的方法 |
CN100359469C (zh) * | 2005-07-22 | 2008-01-02 | 上海华为技术有限公司 | 单片机升级方法 |
CN101539885B (zh) * | 2009-04-23 | 2011-06-08 | 大唐微电子技术有限公司 | 一种无线通信模块软件自主空中升级的方法、装置及系统 |
CN101655801B (zh) * | 2009-09-11 | 2013-12-18 | 华为技术有限公司 | 驱动软件升级的方法及装置 |
-
2010
- 2010-05-14 CN CN201010176135.5A patent/CN102243587B/zh not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112463230B (zh) * | 2020-11-23 | 2023-08-25 | 浙江地芯引力科技有限公司 | 程序运行方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102243587A (zh) | 2011-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102243587B (zh) | 嵌入式系统中对rom程序的升级方法 | |
CN102609328B (zh) | 系统差分升级方法和装置、移动终端 | |
CN111045714B (zh) | 一种固件更新方法、装置、耳机及计算机可读存储介质 | |
CN102053831B (zh) | 一种Linux操作系统的定制方法及系统 | |
CN102693145B (zh) | 用于嵌入式系统的差分升级方法 | |
CN102841802B (zh) | 移动终端的软件升级方法 | |
CN108845841B (zh) | 改变终端应用行为的方法、装置及终端 | |
CN101980157B (zh) | 移动终端开机启动方法及移动终端 | |
CN105468396A (zh) | 差分包生成方法、升级方法、生成装置及Linux终端 | |
CN105487909B (zh) | 一种减少电力设备固件升级量的方法 | |
CN105975816A (zh) | 移动终端下基于虚拟技术的代码保护方法及系统 | |
CN105487907A (zh) | 一种差分包的制作方法和装置 | |
CN103517141A (zh) | 基于ip机顶盒分段式数据升级方法 | |
CN102799452B (zh) | 系统软件升级方法和装置 | |
CN101668283A (zh) | 一种手机嵌入式系统中动态加载的方法 | |
CN103218428B (zh) | 一种动态链接方法及系统 | |
CN102902530A (zh) | 一种基于linux嵌入式操作系统的程序校验装置 | |
CN105373381A (zh) | 一种移动终端的桌面启动器的制作方法及制作系统 | |
CN105554577A (zh) | 一种智能电视ota升级的方法、装置及智能电视 | |
CN101763273A (zh) | 一种在嵌入式系统的扩展存储器中动态装入代码的方法 | |
CN103309741B (zh) | 调用插件功能的方法和装置 | |
CN103198244B (zh) | 保护动态链接库的方法 | |
CN102169446B (zh) | 一种基于开源系统基本输入输出系统的bios系统和方法 | |
CN105468420A (zh) | 操作系统升级方法和装置 | |
CN112905263A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20170322 Address after: 518053 Nanshan District, Guangdong overseas Chinese town, Shantou street, No. 7, No. Patentee after: Shenzhen KONKA Telecommunications Technology Co., Ltd. Address before: 518055 Shennan Road, Shenzhen, Guangdong, No. 9008, No. Patentee before: Konka Group Co., Ltd. |
|
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150923 Termination date: 20200514 |