CN101211265A - 一种终端嵌入式系统的软件更新方法和装置 - Google Patents
一种终端嵌入式系统的软件更新方法和装置 Download PDFInfo
- Publication number
- CN101211265A CN101211265A CNA2006101488094A CN200610148809A CN101211265A CN 101211265 A CN101211265 A CN 101211265A CN A2006101488094 A CNA2006101488094 A CN A2006101488094A CN 200610148809 A CN200610148809 A CN 200610148809A CN 101211265 A CN101211265 A CN 101211265A
- Authority
- CN
- China
- Prior art keywords
- flash memory
- pointer value
- address
- code
- terminal
- 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.)
- Pending
Links
Images
Abstract
本发明公开了一种终端嵌入式系统的软件更新方法和装置,本发明的方法包括:终端将安装信息和新代码下载后,按照安装信息中的地址将新代码存储到闪存中的预定位置;在所述闪存内的镜像文件中,将调用旧代码的指针值更改为所述预定位置的地址。在指针值更改的过程中,记录更改前的指针值,如果更改失败,则将指针值改回原值。通过本发明的方法和装置,在软件更新时,不必将整个镜像文件全部下载并更新,只需要下载新代码段即可,由于新代码段的数据量较小,可以通过各种方式下载,可操作性更强,且不会对闪存重新分配空间,不会造成用户资料的丢失。
Description
技术领域
本发明涉及计算机技术领域,特别是指一种终端嵌入式系统的软件更新方法和装置。
背景技术
手机是当今非常普及的电子产品,其功能更新、换代的速度相当快。手机的更新不仅包括硬件的推陈出新,也包括了内置软件的升级换代。
人们最熟悉的软件更新,是计算机经常进行的软件升级。只要计算机连接网络,就可以用通过下载软件补丁的方式来进行软件更新。软件的更新,通常都是就是为了修正一些早期没有发现,或解决的问题。手机等嵌入式系统的电子产品中的软件更新却要麻烦和困难的多,通常需要售后服务的介入,由专业人员使用专用设备来进行。
这主要是手机等嵌入式系统的软件结构过于紧密,缺乏结构化的构成,且由于硬件的限制,无法采用与计算机相同的文件系统。计算机上的软件通常由很多相对独立的文件共同组成,软件升级或更新的时候,可以对其中的若干文件进行独立的替换。但是目前手机上软件的任何升级和更新,都是对整个镜像文件进行替换。因为镜像文件占用的空间较大,手机上不可能有如此多的剩余空间存放,所以通常都需要专用数据传输线等设备将新镜像文件直接下载到手机中,在下载过程中同时覆盖包括镜像文件在内的原有资料,且将重新分配闪存全部空间中的占用部分和空闲部分。
在下载更新软件的过程中,通常都会导致原有资料中的用户个人资料一同丢失。
发明内容
有鉴于此,本发明在于提供一种终端嵌入式系统的软件更新方法和装置,以解决上述在软件更新的过程中,用户个人资料丢失的问题。
为解决上述问题,本发明提供一种终端嵌入式系统的软件更新方法,包括:
终端将安装信息和新代码下载后,按照安装信息中的地址将新代码存储到闪存中的预定位置;
在所述闪存内的镜像文件中,将调用旧代码的指针值更改为所述预定位置的地址。
其中,所述下载为:通过GPRS、WAP、EMS、MMS、IrDA、BlueTooth或数据线方式下载。
其中,所述下载与存储之间进一步包括:
将终端的模式设置为不运行其它程序的安装补丁模式。
其中,该方法进一步包括:
在指针值更改的过程中,记录更改前的指针值,如果更改失败,则将指针值改回原值。
其中,所述闪存为定址闪存Nor-Flash。
本发明还包括一种终端嵌入式系统的软件更新装置,包括:
接收单元,包括无线接口模块和有线接口模块,所述模块用于下载安装信息和新代码;
操作单元,用于获取安装信息中的地址,控制读/写单元按照安装信息中的地址将新代码存储到闪存中的预定位置;控制读/写单元在所述闪存内的镜像文件中,将调用旧代码的指针值更改为所述预定位置的地址。
读/写单元,用于对闪存进行读/写;
闪存,用于存储来自读/写单元的数据。
其中,所述无线接口模块用于通过GPRS、WAP、EMS、MMS、IrDA或Blue Tooth方式进行下载。
其中,所述装置还包括模式设置单元,用于在操作单元执行操作前,将终端的模式设置为不运行其它程序的安装补丁模式。
其中,所述装置还包括恢复单元,与所述读/写单元连接,用于在指针值更改的过程中,记录更改前的指针值;如果更改失败,则将指针值改回原值。
其中,所述闪存为定址闪存Nor-Flash。
通过本发明的方法和装置,在软件更新时,不必将整个镜像文件全部下载并更新,只需要下载新代码段即可,由于新代码段的数据量较小,可以通过各种方式下载,可操作性更强,且软件中旧代码段的更新是通过指针的更改,使镜像文件调用新代码段,不同于整个镜像文件的替换,不会对闪存重新分配空间,不会造成用户资料的丢失。在更新的过程中,记录整个更改过程,如果更新失败,则将指针改回原值,不会造成由于软件更新的失败,造成终端原有功能出现故障。
附图说明
图1是本发明方法实施例的流程图;
图2是本发明装置实施例的结构图。
具体实施方式
本发明的方法,保存终端中原有存在的镜像软件,通过增加新的代码段来实现软件的更新和升级。本发明所指的终端,是指具有嵌入式系统的终端,如手机、个人数字助理(PDA)等。
在嵌入式系统中,所运行的代码都是保存在闪存上的。在运行时,由闪存中读取,读入到内存后运行或直接运行。软件更新时,通常是在实现原有功能的程序代码上,通过增加部分新的程序代码,来实现新的功能。所增加的新代码段可以是一个或多个。
由于软件的执行从源代码的角度上说,都是依靠函数和变量的嵌套调用来实现的。在镜像文件中,实现终端各个功能的每一个函数和变量,在嵌入式系统的定址闪存(Nor-Flash)芯片中都存在明确的地址。中央处理单元CPU在执行的时候,正是通过寻找这些地址来进行相应的操作的。因此,只要修改原来镜像文件中的少数指针指向,使其指向到新地址上,新地址上的函数和变量与原程序中的兼容,并可以执行。这样,就可实现软件的更新。指针原先指向地址中的函数仍然保存,如果新加入补丁中的程序代码出现问题,还可以回复到更新前的状态。
下面结合附图详细说明本发明方法的实施例。在此实施例中,终端以手机为例,程序代码存储在Nor-Flash为例,详细说明手机进行软件更新的流程。
步骤S101:下载补丁;
手机可以通过多种方式下载补丁,如通用分组无线业务(GPRS,General Packet Radio Service)、无线应用协议(WAP,WirelessApplication Protocol)、增强短信业务(EMS、Enhanced MessageService)、多媒体信息服务(MMS,Multimedia Messaging Service)、红外传输(IrDA,Infrared Data Association)、蓝牙(Blue Tooth)或数据线等方式。
所下载的补丁程序代码中至少包括补丁安装信息和可执行的新代码段。在下载内存后,将补丁程序代码存入到闪存中。在本实施例中,新代码为函数FUNC2(),手机从将新代码段FUNC2存储到定址闪存中用于保存新代码的位置为0x00800000的地址处。
步骤S102:重新启动手机;
步骤S103:判断是否有补丁程序代码存在;
在下载结束、重新启动手机后,手机会判断是否存在补丁程序代码,如果存在,则执行步骤S104;如果不存在,则执行步骤S105。
步骤S105:进入到正常模式;
手机没有找到下载后的软件,进入到正常模式,在正常模式下,执行原有的功能操作。
步骤S104:进入安装补丁模式;
在安装补丁模式,手机不会运行原先存在的镜像文件,以免发生代码冲突。在安装补丁模式下,执行步骤S106。
步骤S106:将补丁中的程序代码存储到预定位置;
在安装补丁模式下,手机将补丁程序代码中的可执行新代码存储到预定位置。由于手机中加入新代码后,程序中各个函数之间需要互相调用,新代码为函数FUNC2()程序中有预定的地址。手机从安装信息中找出FUNC2的预定地址位置是0x00805000,将FUNC2存储在该位置处。
步骤S107:判断是否存储成功;
如果本次存储成功,则执行步骤S108;如果本次存储失败,则执行步骤S109;
步骤S108:进行补丁安装;
补丁的安装过程,是镜像文件中指针重新设置的过程。旧代码,即被替换的函数FUNC()在闪存中的地址为0x00001000。在闪存中所存储的镜像文件的运行过程中,有多处调用函数FUNC的指针,这些指针的值为0x00001000,本次软件的更新,通过将调用函数FUNC()时,改为调用函数FUNC2()来实现增加的新功能。在镜像文件中有7处指针调用了FUNC(),将这7处指针的值改为函数FUNC2()的地址值0x805000。修改完成后,记录所修改的信息,包括修改的指针值和修改前的指针值。安装完成后,执行步骤S110。
步骤S109:补丁安装失败;
确认补丁安装失败,执行步骤S113。
步骤S110:判断是否修改成功;
如果修改成功,则执行步骤S111;如果修改失败,则执行步骤S112;
步骤S111:判断是否完成所有地址更新;
如果完成,则执行步骤S113;如果没有完成,则执行步骤S108;
由于在软件的更新过程中,新代码段可能不止一个,当存在多个新代码段的时候,可能会更改多个调用的不同函数的指针。因此,如果全部更改完成,则表明本次软件的更新完成,执行步骤S113;如果没有则需要返回步骤S108继续修改其它需要调用其它新代码的指针。
步骤S112:回退已经安装地址;
在修改地址的过程中,如果出现闪存故障等其它原因,导致本次指针值的修改没有成功,则将修改过的地址按照记录改回修改前的地址值,保证手机的功能还能够使用。修改结束后,执行步骤S109。
步骤S113:删除下载补丁;
无论本次安装是否成功,最后都要将下载的补丁删除,在本实施例中,将位置为0x00800000的地址处新代码段FUNC2删除。删除结束后,执行步骤S102。此时,在步骤S102结束后,如果安装成功,则在重启后,经入正常模式。
至此,本次的软件更新的过程完成。在本实施例中,手机所下载的补丁程序包括安装信息和新代码段。其中新代码段由用来用于更新原镜像的新资源代码(Source Code)编译产生,但是这部分代码并不加入原镜像的的代码中一同进行编译连接,而是完全独立的进行编译。这样可以保证原镜像中的所有地址和内容稳定不变,同时产生的新代码段占用的空间很小。安装信息,是通过对手机中的原镜像文件进行再次编译,当然最终产生的镜像必定与原镜像是完全一致的,在这个编译连接的过程中,可以借助编译器对原镜像文件中地址关系进行分析或生成内存图Memory Map。任何需要替换的函数在闪存中的地址是多少、有多少个指针调用了这个需要替换的函数等信息都可以在这个过程中进行统计并记录,然后整理生产补丁安装信息。综合新代码段和安装信息,就可以产生完成的更新补丁安装包。
对于已经安装过补丁的系统,需要再次安装补丁的时候,应该先移除系统中的旧补丁。使系统回到最初镜像的状态下运行,即没加载任何补丁的状态,然后再进行新补丁的安装。
手机等嵌入式设备如需要采用本方式来进行软件更新,应该事先对存储空间有一定的规划,即保留一部分的空间以便存放补丁中的新代码段和安装信息。
由于补丁和原镜像文件都采用相同的构架和编译环境,所以它们的地址都是对齐且等宽的。因此,在原镜像中可以直接修改调用地址,而不会有问题产生。
本发明还提供一种终端嵌入式系统的软件更新装置,包括:
接收单元201,包括无线接口模块202和有线接口模块203,所述模块用于下载安装信息和新代码;
操作单元204,用于获取安装信息中的地址,控制读/写单元205按照安装信息中的地址将新代码存储到闪存206中的预定位置;控制读/写单元205在所述闪存206内的镜像文件中,将调用旧代码的指针值更改为所述预定位置的地址。
读/写单元205,用于对闪存206进行读/写;
闪存206,用于存储来自读/写单元205的数据。
在本发明的装置中,所述无线接口模块202用于通过GPRS、WAP、EMS、MMS、IrDA或Blue Tooth方式进行下载。
在本发明的装置中,还包括模式设置单元207,用于在操作单元204执行操作前,将终端的模式设置为不运行其它程序的安装补丁模式。
在本发明的装置中,还包括恢复单元208,与所述读写单元205连接,用于在指针值更改的过程中,记录更改前的指针值;如果更改失败,则将指针值改回原值。
在本发明的装置中,所述闪存206为定址闪存Nor-Flash。
对于本发明的方法和装置,优选采用定址闪存,但定址闪存并不是唯一的,其它闪存通过显而易见的改动也可实现本发明的方法和装置。
对于本发明的方法和装置,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种终端嵌入式系统的软件更新方法,其特征在于,包括:
终端将安装信息和新代码下载后,按照安装信息中的地址将新代码存储到闪存中的预定位置;
在所述闪存内的镜像文件中,将调用旧代码的指针值更改为所述预定位置的地址。
2.根据权力要求1所述的方法,其特征在于,所述下载为:通过GPRS、WAP、EMS、MMS、IrDA、Blue Tooth或数据线方式下载。
3.根据权力要求1所述的方法,其特征在于,所述下载与存储之间进一步包括:
将终端的模式设置为不运行其它程序的安装补丁模式。
4.根据权力要求1所述的方法,其特征在于,该方法进一步包括:
在指针值更改的过程中,记录更改前的指针值,如果更改失败,则将指针值改回原值。
5.根据权力要求1所述的方法,其特征在于,所述闪存为定址闪存Nor-Flash。
6.一种终端嵌入式系统的软件更新装置,其特征在于,包括:
接收单元,包括无线接口模块和有线接口模块,所述模块用于下载安装信息和新代码;
操作单元,用于获取安装信息中的地址,控制读/写单元按照安装信息中的地址将新代码存储到闪存中的预定位置;控制读/写单元在所述闪存内的镜像文件中,将调用旧代码的指针值更改为所述预定位置的地址。
读/写单元,用于对闪存进行读/写;
闪存,用于存储来自读/写单元的数据。
7.根据权力要求6所述的装置,其特征在于,所述无线接口模块用于通过GPRS、WAP、EMS、MMS、IrDA或Blue Tooth方式进行下载。
8.根据权力要求1所述的装置,其特征在于,所述装置还包括模式设置单元,用于在操作单元执行操作前,将终端的模式设置为不运行其它程序的安装补丁模式。
9.根据权力要求1所述的装置,其特征在于,所述装置还包括恢复单元,与所述读/写单元连接,用于在指针值更改的过程中,记录更改前的指针值;如果更改失败,则将指针值改回原值。
10.根据权力要求1所述的装置,其特征在于,所述闪存为定址闪存Nor-Flash。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101488094A CN101211265A (zh) | 2006-12-28 | 2006-12-28 | 一种终端嵌入式系统的软件更新方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNA2006101488094A CN101211265A (zh) | 2006-12-28 | 2006-12-28 | 一种终端嵌入式系统的软件更新方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101211265A true CN101211265A (zh) | 2008-07-02 |
Family
ID=39611321
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006101488094A Pending CN101211265A (zh) | 2006-12-28 | 2006-12-28 | 一种终端嵌入式系统的软件更新方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101211265A (zh) |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807155A (zh) * | 2010-03-03 | 2010-08-18 | 京信通信系统(中国)有限公司 | 一种嵌入式软件在线更新方法 |
CN101882094A (zh) * | 2010-06-10 | 2010-11-10 | 中兴通讯股份有限公司 | 嵌入式系统制作补丁的方法和系统 |
CN103246528A (zh) * | 2012-02-10 | 2013-08-14 | 中兴通讯股份有限公司 | 软件升级方法和装置 |
CN103677933A (zh) * | 2013-12-19 | 2014-03-26 | 大唐微电子技术有限公司 | 一种为智能卡打补丁的方法和系统 |
CN104133709A (zh) * | 2014-08-06 | 2014-11-05 | 曙光信息产业(北京)有限公司 | 嵌入式系统的升级方法和装置 |
CN104506367A (zh) * | 2014-12-24 | 2015-04-08 | 上海斐讯数据通信技术有限公司 | 一种升级管理系统 |
CN105487904A (zh) * | 2015-12-03 | 2016-04-13 | 珠海格力电器股份有限公司 | 一种程序升级文件的数据存储方法、装置和升级系统 |
CN105721408A (zh) * | 2014-12-05 | 2016-06-29 | 中国移动通信集团公司 | 融合通信客户端的实现方法、终端、相关平台及系统 |
CN106648751A (zh) * | 2016-11-22 | 2017-05-10 | 深圳市元征软件开发有限公司 | 一种嵌入式软件快速升级的方法及嵌入式设备 |
CN106897095A (zh) * | 2017-02-24 | 2017-06-27 | 网易(杭州)网络有限公司 | 应用程序热修复的方法、装置和可读存储介质 |
CN110134409A (zh) * | 2019-04-12 | 2019-08-16 | 宁波麦度智联科技股份有限公司 | 一种程序的烧录优化方法 |
CN110618824A (zh) * | 2018-06-20 | 2019-12-27 | 中移(杭州)信息技术有限公司 | 一种软件升级方法、装置、介质和设备 |
CN111050313A (zh) * | 2019-12-05 | 2020-04-21 | 上海新微技术研发中心有限公司 | 低速率无线通信快速ota的方法 |
CN112905217A (zh) * | 2021-05-07 | 2021-06-04 | 鹏城实验室 | 嵌入式程序的程序更新方法、终端、系统及存储介质 |
-
2006
- 2006-12-28 CN CNA2006101488094A patent/CN101211265A/zh active Pending
Cited By (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101807155A (zh) * | 2010-03-03 | 2010-08-18 | 京信通信系统(中国)有限公司 | 一种嵌入式软件在线更新方法 |
CN101807155B (zh) * | 2010-03-03 | 2013-01-09 | 京信通信系统(中国)有限公司 | 一种嵌入式软件在线更新方法 |
CN101882094A (zh) * | 2010-06-10 | 2010-11-10 | 中兴通讯股份有限公司 | 嵌入式系统制作补丁的方法和系统 |
CN103246528A (zh) * | 2012-02-10 | 2013-08-14 | 中兴通讯股份有限公司 | 软件升级方法和装置 |
WO2013117039A1 (zh) * | 2012-02-10 | 2013-08-15 | 中兴通讯股份有限公司 | 软件升级方法和装置 |
CN103677933A (zh) * | 2013-12-19 | 2014-03-26 | 大唐微电子技术有限公司 | 一种为智能卡打补丁的方法和系统 |
CN104133709A (zh) * | 2014-08-06 | 2014-11-05 | 曙光信息产业(北京)有限公司 | 嵌入式系统的升级方法和装置 |
CN104133709B (zh) * | 2014-08-06 | 2018-01-30 | 曙光信息产业(北京)有限公司 | 嵌入式系统的升级方法和装置 |
CN105721408A (zh) * | 2014-12-05 | 2016-06-29 | 中国移动通信集团公司 | 融合通信客户端的实现方法、终端、相关平台及系统 |
CN105721408B (zh) * | 2014-12-05 | 2019-01-01 | 中国移动通信集团公司 | 融合通信客户端的实现方法、终端、相关平台及系统 |
CN104506367A (zh) * | 2014-12-24 | 2015-04-08 | 上海斐讯数据通信技术有限公司 | 一种升级管理系统 |
CN105487904A (zh) * | 2015-12-03 | 2016-04-13 | 珠海格力电器股份有限公司 | 一种程序升级文件的数据存储方法、装置和升级系统 |
CN105487904B (zh) * | 2015-12-03 | 2018-12-11 | 珠海格力电器股份有限公司 | 一种程序升级文件的数据存储方法、装置和升级系统 |
CN106648751A (zh) * | 2016-11-22 | 2017-05-10 | 深圳市元征软件开发有限公司 | 一种嵌入式软件快速升级的方法及嵌入式设备 |
CN106648751B (zh) * | 2016-11-22 | 2020-04-21 | 深圳市元征软件开发有限公司 | 一种嵌入式软件快速升级的方法及嵌入式设备 |
CN106897095A (zh) * | 2017-02-24 | 2017-06-27 | 网易(杭州)网络有限公司 | 应用程序热修复的方法、装置和可读存储介质 |
CN110618824A (zh) * | 2018-06-20 | 2019-12-27 | 中移(杭州)信息技术有限公司 | 一种软件升级方法、装置、介质和设备 |
CN110134409A (zh) * | 2019-04-12 | 2019-08-16 | 宁波麦度智联科技股份有限公司 | 一种程序的烧录优化方法 |
CN111050313A (zh) * | 2019-12-05 | 2020-04-21 | 上海新微技术研发中心有限公司 | 低速率无线通信快速ota的方法 |
CN112905217A (zh) * | 2021-05-07 | 2021-06-04 | 鹏城实验室 | 嵌入式程序的程序更新方法、终端、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101211265A (zh) | 一种终端嵌入式系统的软件更新方法和装置 | |
KR100911604B1 (ko) | 무선 통신 장치의 시스템 소프트웨어 다운로드 관리시스템 및 방법 | |
US7779055B2 (en) | Device memory management during electronic file updating | |
CN102622241B (zh) | 一种软件升级方法及装置 | |
CN101026848B (zh) | 移动终端和软件更新方法 | |
CN101110788B (zh) | 升级客户端软件的方法及系统 | |
CN104182255A (zh) | 一种系统应用的库文件升级方法及终端 | |
US20030070162A1 (en) | Information processor having multi OS and its OS update method | |
CN108804118B (zh) | 固件升级方法、设备及存储介质 | |
EP1872230B1 (en) | Centralized memory management in wireless terminal devices | |
KR101201276B1 (ko) | 액션 리스트 및 버저닝을 이용한 무선 디바이스상에서액션을 수행하기 위한 방법, 소프트웨어 및 장치 | |
CN102799438A (zh) | 应用更新的提示方法及桌面管理平台 | |
CN101426032B (zh) | 安装Java应用的终端及其安装Java应用的方法 | |
US20150067668A1 (en) | Installation engine and package format | |
CN110908734A (zh) | 基于插件化的应用组合方法、装置、终端设备及存储介质 | |
JP4838305B2 (ja) | 異なるモードを有するプロセッサ制御装置 | |
CN103677937A (zh) | 升级软件和运行软件的方法及装置 | |
CN1878366A (zh) | 移动电话的固件升级方法 | |
CN104657164A (zh) | 软件升级处理方法和装置 | |
CN1863353A (zh) | 定制移动电话资源文件的方法和系统 | |
CN1758220A (zh) | 一种升级软件版本的方法 | |
KR20020005127A (ko) | 이동통신 단말기의 응용 프로그램 갱신 방법 | |
US20070079279A1 (en) | Embedded device with software registry | |
KR100538627B1 (ko) | 무선통신단말기의 소프트웨어 부분 업그레이드 방법 | |
KR20010011952A (ko) | 모듈별 업데이트 장치 및 그 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20080702 |