CN103995717B - 一种嵌入式设备软件升级的方法 - Google Patents
一种嵌入式设备软件升级的方法 Download PDFInfo
- Publication number
- CN103995717B CN103995717B CN201410191622.7A CN201410191622A CN103995717B CN 103995717 B CN103995717 B CN 103995717B CN 201410191622 A CN201410191622 A CN 201410191622A CN 103995717 B CN103995717 B CN 103995717B
- Authority
- CN
- China
- Prior art keywords
- value
- parameter region
- initial addresses
- boot parameter
- region initial
- 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
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种嵌入式设备软件升级的方法,包括(1)设备先读取Boot参数区域起始地址的值,根据该值的不同将升级文件以相对应的文件名写到文件系统区域,修改Boot参数区域起始地址的值;(2)当设备正常启动时转向步骤(3);当升错了软件转向步骤(4);(3)Boot程序读取Boot参数区域起始地址的值,根据该值的不同将文件系统区域中相对应的文件内容读入内存中,跳到内核入口地址开始执行;(4)打开串口调试工具重新上电,用户在等待期间按回车键进入用户命令模式;在用户命令模式加上显示及修改Boot参数区域起始地址的值命令。本发明的方法使得设备软件升级过程安全可靠,升级出现意外时提供了恢复方法。
Description
技术领域
本发明涉及一种嵌入式设备软件升级的方法,属于计算机技术领域。
背景技术
一般的嵌入式设备基本上都提供了软件升级的功能。为了更好的满足用户的需求,当设备的生产厂家在软件上新增某些功能特性或者是修复设备在使用过程中出现的某些问题等等,厂家就会发布新的软件给用户。用户可以通过软件升级的功能来更新设备的软件,从而使设备更加稳定可靠的运行。
虽然嵌入式设备提供了软件升级的功能,但是用户使用这个功能的时候可能会出现问题。很多用户对设备了解很少,负责维护管理设备的人员甚至都不知道他所管理的设备可以通过软件升级功能来更新设备的软件。用户对设备进行软件升级时可能会出现各种意外的情况,例如升错了软件导致设备坏了,或者升级过程中断电导致设备坏了。很多设备升级坏了以后必须要厂家的人员到现场才能解决问题,某些设备的停用还可能会对用户带来一定的经济损失。
发明内容
针对现有技术存在的不足,本发明目的是提供一种嵌入式设备软件升级的方法,使得嵌入式设备进行软件升级时更加安全可靠,升级过程出现意外也可以很容易对设备进行恢复。
为了实现上述目的,本发明是通过如下的技术方案来实现:
本发明的嵌入式设备软件升级的方法,嵌入式设备带有调试端口,包括以下几个步骤:
(1)当设备进行软件升级时,设备先读取Boot参数区域起始地址的值,根据该值的不同将升级文件以相对应的文件名写到文件系统区域,然后修改Boot参数区域起始地址的值,完成升级;
(2)当设备能够正常启动时,则转向步骤(3);当升错了软件导致设备启动不了时,则转向步骤(4);
(3)Boot程序读取Boot参数区域起始地址的值,根据该值的不同将文件系统区域中相对应的文件内容读入内存中,然后跳到内核入口地址开始执行,完成启动;
(4)将调试端口通过调试线缆与电脑串口相连接,打开串口调试工具,重新给设备上电,Boot程序上电后会有几秒钟等待时间,用户在这期间按回车键进入用户命令模式;
然后,在用户命令模式加上两条命令,一个是显示Boot参数区域起始地址的值,一个是修改Boot参数区域起始地址的值。
上述Boot参数区域起始地址的值为1或2。
步骤(1)中,升级时,如果Boot参数区域起始地址的值为1,就将升级软件内容以文件名为B写到文件系统区域中,然后将Boot参数区域起始地址的值修改为2;
升级时,如果Boot参数区域起始地址的值为2,就将升级软件内容以文件名为A写到文件系统区域中,然后将Boot参数区域起始地址的值修改为1;
升级时,如果Boot参数区域起始地址的值既不是1也不是2,就将升级软件内容以文件名为A写到文件系统区域中,然后将Boot参数区域起始地址的值修改为1。
步骤(3)中,设备启动时,如果Boot参数区域起始地址的值为1,就将文件系统区域的文件A读取到内存中,然后跳到内核入口地址开始执行;
如果Boot参数区域起始地址的值为2,就将文件系统区域的文件B读取到内存中,然后跳到内核入口地址开始执行;
如果Boot参数区域起始地址的值既不是1也不是2,就将文件系统区域的文件A读取到内存中,然后跳到内核入口地址开始执行。
步骤(4)中,显示Boot参数区域起始地址的值的命令为s;
修改Boot参数区域起始地址的值的命令为w<param>,param的取值只能是1或2。
上述嵌入式设备上使用的是Flash存储介质。
本发明软件升级时根据Boot参数区域起始地址的值来写相对应的文件,然后修改Boot参数区域起始地址的值;启动时Boot程序根据Boot参数区域起始地址的值来读相对应的文件,然后跳到内核入口地址开始执行;在Boot程序的用户命令模式提供显示Boot参数区域起始地址值和修改Boot参数区域起始地址的值的功能。因此,本发明所提供的嵌入式设备软件升级的方法,使得嵌入式设备软件升级过程更加安全可靠,升级出现意外时也提供了恢复方法,避免了社会资源的浪费。
附图说明
图1为本发明方法中Flash的存储示意图;
图2为本发明方法中软件升级的工作流程图;
图3为本发明方法中设备启动的工作流程图
图4为本发明方法Flash中Boot参数区域起始地址的值为1,文件系统区域中有文件A和文件B的存储示意图;
图5为图4升级完成后Boot参数区域起始地址的值为2,文件B的内容也被替换为升级软件的存储示意图;
图6为图4升级过程中断电Boot参数区域起始地址的值为1,文件B的内容也被替换为升级软件或升级软件的部分内容的存储示意图;
图7为图4升级过程中断电Boot参数区域起始地址的值不确定,文件B的内容也被替换为升级软件的存储示意图。
具体实施方式
为使本发明实现的技术手段、创作特征、达成目的与功效易于明白了解,下面结合具体实施方式,进一步阐述本发明。
参见图1,目前大多数的嵌入式设备上都使用Flash存储介质,通常需要把Flash分区使用。Flash一般可以划分为3个区,第一个区存放Boot程序,第二个区存放Boot程序的参数,第三个区存放文件系统。Boot程序相当于PC机中的BIOS,是设备加电后运行的第一段代码。简单地说,Boot程序就是在操作系统内核运行前运行的一段小程序,通过这段小程序,来初始化必要的硬件设备,创建内核需要的一些信息并将这些信息通过相关机制传递给内核,从而将系统的软硬件环境带到一个合适的状态,最终调用操作系统内核,起到引导和加载内核的作用。
参见图2、图3所示,本发明具体包括以下的步骤:
1)当设备进行软件升级时,设备先读取Boot参数区域起始地址的值。
如果该值为1,就将升级软件内容以文件名为B写到文件系统区域中,然后将Boot参数区域起始地址的值修改为2。
如果该值为2,就将升级软件内容以文件名为A写到文件系统区域中,然后将Boot参数区域起始地址的值修改为1。
如果该值既不是1也不是2,就将升级软件内容以文件名为A写到文件系统区域中,然后将Boot参数区域起始地址的值修改为1。
2)当设备启动时,等待用户输入,持续时间几秒钟,判断是否有键盘输入,如果有,则进入命令行模式;如果否,则Boot程序先读取Boot参数区域起始地址的值。
如果该值为1,就将文件系统区域的文件A读取到内存中,然后跳到内核入口地址开始执行。
如果该值为2,就将文件系统区域的文件B读取到内存中,然后跳到内核入口地址开始执行。
如果该值既不是1也不是2,就将文件系统区域的文件A读取到内存中,然后跳到内核入口地址开始执行。
3)为了解决设备软件升级时升错了软件导致设备启动不了的情况,需要在Boot程序的用户命令模式加上两条命令。一条命令是显示Boot参数区域起始地址的值,命令为s;一条命令是修改Boot参数区域起始地址的值,命令为w<param>,param的取值只能是1或者2。
下面具体说明一下设备软件升级过程,可能出现的意外情况,以及设备出问题时如何恢复。
参见图4所示,假定设备当前Boot参数区域起始地址的值为1,文件系统中有文件A和文件B。当设备上电时,Boot程序先读取Boot参数区域起始地址的值。由于该值为1,于是Boot程序就将文件A的内容读到内存中,然后跳到内核入口地址开始执行,设备就完成了启动过程。
当设备进行软件升级时,设备先读取Boot参数区域起始地址的值。由于该值为1,设备就将升级软件内容写到文件系统中,文件名为B,也就是说原来的文件B的内容被替换成了新的软件。然后再将Boot参数区域起始地址的值修改为2,设备就完成了软件升级过程。
参见图5所示,升级完成后Boot参数区域起始地址的值为2,文件B的内容也被替换为新的软件。设备再次重启时,Boot程序读取Boot参数区域起始地址的值,由于该值为2,于是Boot程序就将文件B的内容(就是新的软件)读到内存中,然后跳到内核入口地址开始执行,也就是说设备这时候运行的已经是新的软件。
如果在软件升级过程中出现了意外断电,这可能会出现几种情况:
(1)如果在写文件之前断电,则设备的一切和原来保持一致。重新上电以后设备就可以正常运行,而且运行的是老的软件。
(2)如果在写文件过程中断电,则文件B的内容就被替换成了升级软件的一部分。参见图6所示,与图4相比设备改变的只有文件B,重新上电以后设备就可以正常运行,而且运行的是老的软件。
(3)如果在写完文件之后修改Boot参数区域起始地址的值之前断电,则文件B的内容就被替换成了新的软件。参见图6所示,与图4相比设备改变的只有文件B,重新上电以后设备就可以正常运行,而且运行的是老的软件。
(4)如果在修改Boot参数区域起始地址的值过程中断电,则文件B的内容就被替换成了新的软件。参见图7所示,与图4相比设备文件B被改变了。另外由于Flash的特性,要修改Boot参数区域起始地址的值,先要进行擦除操作,然后才能进行写操作。如果在擦除操作过程中断电,那么该地址的值就是一个不确定的值。如果在擦除操作完成后断电,那么该地址的值就变成了255(该字节所有的位都是1)。如果在写操作过程中断电,那么该地址的值就是一个不确定的值。重新上电以后如果Boot参数区域起始地址的值不是2,设备就可以正常运行,而且运行的是老的软件;如果Boot参数区域起始地址的值是2,设备也可以正常运行,而且运行的是新的软件。
(5)如果在修改Boot参数区域起始地址的值完成后断电,则文件B就被升级软件内容覆盖掉了。参见图5所示,Boot参数区域起始地址的值也修改了,这时实际上已经完成了升级过程。重新上电以后设备就可以正常运行,而且运行的是新的软件。
综合以上几种情况,可以看到升级过程中断电对设备没有任何影响,都可以正常启动运行。
如果软件升级过程中升错了软件,参见图5所示,文件B的内容就是一个错误的软件。设备再次重启时,Boot程序将文件B的内容读到内存中,然后跳到内核入口地址开始执行,因为文件B是一个错误的软件,所以设备就会启动不了。为了方便开发、调试和维护设备,大部分的嵌入式设备都会带有调试端口。这个时候用调试线缆将电脑串口和设备的调试端口连接起来,打开超级终端或者其它串口调试工具,重新给设备上电。Boot程序上电后会有几秒钟等待时间,用户可以在这期间按回车键进入命令行模式。在命令行模式下,执行命令s可以看到当前Boot参数区域起始地址的值为2。这时可以执行命令w1将Boot参数区域起始地址的值修改为1。重新上电以后设备就可以正常运行,而且运行的是老的软件。也就是说升级升错了软件以后可以通过设备的调试端口很容易的将设备恢复过来。
以上显示和描述了本发明的基本原理和主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护范围由所附的权利要求书及其等效物界定。
Claims (2)
1.一种嵌入式设备软件升级的方法,嵌入式设备带有调试端口,其特征在于,包括以下几个步骤:
(1)当设备进行软件升级时,设备先读取Boot参数区域起始地址的值,根据该值的不同将升级文件以相对应的文件名写到文件系统区域,然后修改Boot参数区域起始地址的值,完成升级;
(2)当设备能够正常启动时,则转向步骤(3);当升错了软件导致设备启动不了时,则转向步骤(4);
(3)所述Boot程序读取Boot参数区域起始地址的值,根据该值的不同将文件系统区域中相对应的文件内容读入内存中,然后跳到内核入口地址开始执行,完成启动;
(4)将所述调试端口通过调试线缆与电脑串口相连接,打开串口调试工具,重新给设备上电,Boot程序上电后会有几秒钟等待时间,用户在这期间按回车键进入用户命令模式;
然后,在用户命令模式加上两条命令,一个是显示Boot参数区域起始地址的值,一个是修改Boot参数区域起始地址的值;
所述Boot参数区域起始地址的值为1或2;
步骤(1)中,升级时,如果Boot参数区域起始地址的值为1,就将升级软件内容以文件名为B写到文件系统区域中,然后将Boot参数区域起始地址的值修改为2;
升级时,如果Boot参数区域起始地址的值为2,就将升级软件内容以文件名为A写到文件系统区域中,然后将Boot参数区域起始地址的值修改为1;
升级时,如果Boot参数区域起始地址的值既不是1也不是2,就将升级软件内容以文件名为A写到文件系统区域中,然后将Boot参数区域起始地址的值修改为1;
步骤(3)中,设备启动时,如果Boot参数区域起始地址的值为1,就将文件系统区域的文件A读取到内存中,然后跳到内核入口地址开始执行;
如果Boot参数区域起始地址的值为2,就将文件系统区域的文件B读取到内存中,然后跳到内核入口地址开始执行;
如果Boot参数区域起始地址的值既不是1也不是2,就将文件系统区域的文件A读取到内存中,然后跳到内核入口地址开始执行;
步骤(4)中,显示Boot参数区域起始地址的值的命令为s;
修改Boot参数区域起始地址的值的命令为w<param>,param的取值只能是1或2。
2.根据权利要求1所述的嵌入式设备软件升级的方法,其特征在于,
所述嵌入式设备上使用的是Flash存储介质。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410191622.7A CN103995717B (zh) | 2014-05-07 | 2014-05-07 | 一种嵌入式设备软件升级的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410191622.7A CN103995717B (zh) | 2014-05-07 | 2014-05-07 | 一种嵌入式设备软件升级的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103995717A CN103995717A (zh) | 2014-08-20 |
CN103995717B true CN103995717B (zh) | 2017-04-05 |
Family
ID=51309895
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410191622.7A Active CN103995717B (zh) | 2014-05-07 | 2014-05-07 | 一种嵌入式设备软件升级的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103995717B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105245597B (zh) * | 2015-10-09 | 2016-10-26 | 深圳电器公司 | 一种通信方法及装置 |
US20170315797A1 (en) * | 2016-05-02 | 2017-11-02 | Ford Global Technologies, Llc | Vehicle connection location regional software delivery |
CN107632892B (zh) * | 2016-07-18 | 2021-06-22 | 深圳市中兴微电子技术有限公司 | 一种参数传递的方法和装置 |
CN111399915B (zh) * | 2019-12-27 | 2022-03-22 | 中核控制系统工程有限公司 | 应用于核电厂安全级dcs系统的主控引导系统及方法 |
CN111522568A (zh) * | 2020-05-07 | 2020-08-11 | 深圳市吉祥腾达科技有限公司 | 一种boot下验证升级文件的方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581101A (zh) * | 2003-08-12 | 2005-02-16 | 联想(北京)有限公司 | 一种嵌入式系统升级的方法 |
CN1980446A (zh) * | 2005-12-06 | 2007-06-13 | 中兴通讯股份有限公司 | 一种嵌入式分布系统的版本信息处理方法 |
CN101826027A (zh) * | 2010-05-28 | 2010-09-08 | 深圳市融创天下科技发展有限公司 | 一种嵌入式系统及其升级方法 |
CN103092647A (zh) * | 2012-12-29 | 2013-05-08 | 聚光科技(杭州)股份有限公司 | 嵌入式系统的在线升级方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090271780A1 (en) * | 2008-04-24 | 2009-10-29 | Moschip Semiconductor Technology Limited | Automatic complete firmware upgrade |
-
2014
- 2014-05-07 CN CN201410191622.7A patent/CN103995717B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1581101A (zh) * | 2003-08-12 | 2005-02-16 | 联想(北京)有限公司 | 一种嵌入式系统升级的方法 |
CN1980446A (zh) * | 2005-12-06 | 2007-06-13 | 中兴通讯股份有限公司 | 一种嵌入式分布系统的版本信息处理方法 |
CN101826027A (zh) * | 2010-05-28 | 2010-09-08 | 深圳市融创天下科技发展有限公司 | 一种嵌入式系统及其升级方法 |
CN103092647A (zh) * | 2012-12-29 | 2013-05-08 | 聚光科技(杭州)股份有限公司 | 嵌入式系统的在线升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN103995717A (zh) | 2014-08-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103995717B (zh) | 一种嵌入式设备软件升级的方法 | |
CN103207975B (zh) | 保护密码的方法以及计算机 | |
CN102650947B (zh) | 一种Android手持设备连续增量的空中升级方法 | |
CN104850762B (zh) | 防止计算机的动作不良的方法、计算机程序以及计算机 | |
US20120311279A1 (en) | Data recovery and backup system and process | |
CN105094876B (zh) | Cpld的升级处理方法、装置和系统 | |
CN102841802B (zh) | 移动终端的软件升级方法 | |
CN103019726A (zh) | 软件系统业务规则的管理方法和装置 | |
CN103136002A (zh) | 一种基于UBoot的自动升级的控制方法及系统 | |
CN107678997B (zh) | Pcie插卡的热插拔方法、系统、装置和可读存储介质 | |
CN104751062B (zh) | 一种提高操作系统可靠性的方法及装置 | |
US20170300305A1 (en) | Executable guidance experiences based on implicitly generated guidance models | |
WO2017020459A1 (zh) | 一种为宿主配置插件包的方法与装置 | |
CN103827812A (zh) | 选项只读存储器的使用 | |
CN107656750A (zh) | 插件更新方法及装置 | |
US8176309B2 (en) | Boot system has BIOS that reads rescue operating system from memory device via input/output chip based on detecting a temperature of a hard disk | |
US20140297827A1 (en) | Computer-readable recording medium, verification method, and verification device | |
CN101833496B (zh) | 基于硬盘的主机防客体重用性能的检测装置及其检测方法 | |
CN105893221B (zh) | 终端运行时长的告警方法及装置 | |
CN102880478A (zh) | 软件更新方法 | |
CN101887375B (zh) | 一种人机命令系统的实现方法及其系统 | |
US9141803B2 (en) | Self-healing of operating system components | |
KR20180023575A (ko) | 펌웨어 자동 업데이트 방법 및 이의 방법을 기록한 컴퓨터 판독 가능한 기록 매체 | |
CN109522174B (zh) | 控制adb使能的方法、装置、终端及存储介质 | |
CN104699410B (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 |