CN102243587A - 嵌入式系统中对rom程序的升级方法 - Google Patents
嵌入式系统中对rom程序的升级方法 Download PDFInfo
- Publication number
- CN102243587A CN102243587A CN2010101761355A CN201010176135A CN102243587A CN 102243587 A CN102243587 A CN 102243587A CN 2010101761355 A CN2010101761355 A CN 2010101761355A CN 201010176135 A CN201010176135 A CN 201010176135A CN 102243587 A CN102243587 A CN 102243587A
- Authority
- CN
- China
- Prior art keywords
- program
- upgrading
- rom
- software
- rompaq
- 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
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000006870 function Effects 0.000 claims abstract description 39
- 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
- 239000002699 waste material Substances 0.000 abstract description 3
- 238000004519 manufacturing process Methods 0.000 abstract 1
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000002950 deficient 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
Images
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 (4)
1.一种嵌入式系统中对ROM程序的升级方法,其特征在于包括以下步骤:
a、在生成ROM软件时在每个软件开始位置设置一个升级调用程序模块;
b、在FLASH中开辟一块独立的程序升级区,所述程序升级区用于保存升级程序包;
c、需要升级软件时,制作升级程序包;
d、将升级程序包写入到FLASH的程序升级区;
e、升级调用程序模块检测FLASH中是否有升级程序包,若未发现所述的升级程序包,则执行步骤f,若发现所述的升级程序包,则执行g;
f、执行ROM软件中的原始程序;
g、则将FLASH中的升级程序包拷贝到RAM中并执行升级程序。
2.如权利要求1所述的嵌入式系统中对ROM程序的升级方法,其特征在于:所述的升级调用程序模块包括所有函数的列表数组和列表枚举。
3.如权利要求2所述的嵌入式系统中对ROM程序的升级方法,其特征在于:所述的函数数组中保存的是一个指针,初始为NULL,如果有对该函数升级,这个指针将会指向新的升级程序。
4.如权利要求2或3任一项所述的嵌入式系统中对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 true CN102243587A (zh) | 2011-11-16 |
CN102243587B 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 (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693145A (zh) * | 2012-05-31 | 2012-09-26 | 红石阳光(北京)科技有限公司 | 用于嵌入式系统的差分升级方法 |
CN102799452A (zh) * | 2012-06-29 | 2012-11-28 | 深圳市安普尔科技有限公司 | 系统软件升级方法和装置 |
CN103761126A (zh) * | 2014-01-07 | 2014-04-30 | 中国神华能源股份有限公司 | 应用程序的升级方法和装置 |
CN104981778A (zh) * | 2013-02-22 | 2015-10-14 | 马维尔国际贸易有限公司 | 修补只读存储器的引导代码 |
CN107894899A (zh) * | 2017-12-06 | 2018-04-10 | 北京联盛德微电子有限责任公司 | Rom程序升级系统及升级方法 |
CN112463230A (zh) * | 2020-11-23 | 2021-03-09 | 浙江地芯引力科技有限公司 | 程序运行方法及装置、电子设备、存储介质 |
Citations (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 | 上海交大达通电子信息有限公司 | 网络升级嵌入式系统固件的方法 |
CN1858702A (zh) * | 2005-07-22 | 2006-11-08 | 上海华为技术有限公司 | 单片机升级方法 |
CN101539885A (zh) * | 2009-04-23 | 2009-09-23 | 大唐微电子技术有限公司 | 一种无线通信模块软件自主空中升级的方法、装置及系统 |
CN101655801A (zh) * | 2009-09-11 | 2010-02-24 | 华为技术有限公司 | 驱动软件升级的方法及装置 |
-
2010
- 2010-05-14 CN CN201010176135.5A patent/CN102243587B/zh not_active Expired - Fee Related
Patent Citations (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 | 上海交大达通电子信息有限公司 | 网络升级嵌入式系统固件的方法 |
CN1858702A (zh) * | 2005-07-22 | 2006-11-08 | 上海华为技术有限公司 | 单片机升级方法 |
CN101539885A (zh) * | 2009-04-23 | 2009-09-23 | 大唐微电子技术有限公司 | 一种无线通信模块软件自主空中升级的方法、装置及系统 |
CN101655801A (zh) * | 2009-09-11 | 2010-02-24 | 华为技术有限公司 | 驱动软件升级的方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102693145A (zh) * | 2012-05-31 | 2012-09-26 | 红石阳光(北京)科技有限公司 | 用于嵌入式系统的差分升级方法 |
CN102799452A (zh) * | 2012-06-29 | 2012-11-28 | 深圳市安普尔科技有限公司 | 系统软件升级方法和装置 |
CN102799452B (zh) * | 2012-06-29 | 2015-10-07 | 深圳市安普尔科技有限公司 | 系统软件升级方法和装置 |
CN104981778A (zh) * | 2013-02-22 | 2015-10-14 | 马维尔国际贸易有限公司 | 修补只读存储器的引导代码 |
CN103761126A (zh) * | 2014-01-07 | 2014-04-30 | 中国神华能源股份有限公司 | 应用程序的升级方法和装置 |
CN103761126B (zh) * | 2014-01-07 | 2017-03-15 | 中国神华能源股份有限公司 | 应用程序的升级方法和装置 |
CN107894899A (zh) * | 2017-12-06 | 2018-04-10 | 北京联盛德微电子有限责任公司 | Rom程序升级系统及升级方法 |
CN107894899B (zh) * | 2017-12-06 | 2021-04-06 | 北京联盛德微电子有限责任公司 | Rom程序升级系统及升级方法 |
CN112463230A (zh) * | 2020-11-23 | 2021-03-09 | 浙江地芯引力科技有限公司 | 程序运行方法及装置、电子设备、存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN102243587B (zh) | 2015-09-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103473067B (zh) | 嵌入式Linux分区与数据还原方法、系统及系统开发方法 | |
CN102289397B (zh) | 一种机顶盒的嵌入式系统自动恢复方法及装置 | |
CN102609328B (zh) | 系统差分升级方法和装置、移动终端 | |
CN105138382B (zh) | 一种Android系统升级的方法及终端 | |
CN102693145B (zh) | 用于嵌入式系统的差分升级方法 | |
CN102243587A (zh) | 嵌入式系统中对rom程序的升级方法 | |
CN102841802B (zh) | 移动终端的软件升级方法 | |
CN111045714B (zh) | 一种固件更新方法、装置、耳机及计算机可读存储介质 | |
CN105760200A (zh) | 终端设备及其系统升级方法 | |
WO2022111097A1 (zh) | 一种文件更新方法及装置、设备、存储介质 | |
KR101651204B1 (ko) | 스냅샷 이미지의 동기화 장치 및 방법 | |
CN107168734A (zh) | 一种嵌入式系统升级备份方法 | |
CN105786538A (zh) | 基于安卓系统的软件升级方法和装置 | |
CN103577212A (zh) | 系统启动预加载方法及装置 | |
US9710340B2 (en) | Replacement of a corrupt driver variable record | |
CN108845841B (zh) | 改变终端应用行为的方法、装置及终端 | |
WO2022262754A1 (zh) | 操作系统数据更新方法、设备、存储介质及程序产品 | |
CN103019764B (zh) | Andriod资源包可安装性的检测方法及系统 | |
CN105739961A (zh) | 一种嵌入式系统的启动方法和装置 | |
CN102200937A (zh) | 一种与非闪存中数据读取的方法、装置及电视机系统 | |
CN106462422A (zh) | 用于多系统终端的系统升级方法、升级装置和终端 | |
CN103455750B (zh) | 一种嵌入式设备的高安验证方法及装置 | |
CN105468420B (zh) | 操作系统升级方法和装置 | |
CN115617687A (zh) | 程序插桩方法、装置、设备和存储介质 | |
CN105045718A (zh) | 基于Linux嵌入式系统的调试系统、方法及修改方法 |
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 |