一种终端嵌入式系统的软件更新方法和装置的制作方法

文档序号:6563073阅读:149来源:国知局
专利名称:一种终端嵌入式系统的软件更新方法和装置的制作方法
技术领域
本发明涉及计算机技术领域,特别是指 一种终端嵌入式系统的软 件更新方法和装置。
技术背景手机是当今非常普及的电子产品,其功能更新、换代的速度相当 快。手机的更新不仅包括硬件的推陈出新,也包括了内置软件的升级 换代。人们最熟悉的软件更新,是计算机经常进行的软件升级。只要计 算机连接网络,就可以用通过下载软件补丁的方式来进行软件更新。 软件的更新,通常都是就是为了修正一些早期没有发现,或解决的问 题。手机等嵌入式系统的电子产品中的软件更新却要麻烦和困难的多, 通常需要售后服务的介入,由专业人员使用专用设备来进行。这主要是手机等嵌入式系统的软件结构过于紧密,缺乏结构化的 构成,且由于硬件的限制,无法采用与计算机相同的文件系统。计算 机上的软件通常由很多相对独立的文件共同组成,软件升级或更新的 时候,可以对其中的若干文件进行独立的替换。但是目前手机上软件 的任何升级和更新,都是对整个镜像文件进行替换。因为镜像文件占 用的空间较大,手机上不可能有如此多的剩余空间存放,所以通常都 需要专用数据传输线等设备将新镜像文件直接下载到手机中,在下载 过程中同时覆盖包括镜像文件在内的原有资料,且将重新分配闪存全 部空间中的占用部分和空闲部分。在下栽更新软件的过程中,通常都会导致原有资料中的用户个人 资料一同丢失。发明内容有鉴于此,本发明在于提供一种终端嵌入式系统的软件更新方法 和装置,以解决上述在软件更新的过程中,用户个人资料丢失的问题。
为解决上述问题,本发明提供一种终端嵌入式系统的软件更新方法,包括终端将安装信息和新代码下载后,按照安装信息中的地址将新代 码存储到闪存中的预定位置;在所述闪存内的镜像文件中,将调用旧代码的指针值更改为所述 预定位置的地址。其中,所述下载为通过GPRS、 WAP、 EMS、 MMS、 IrDA、 Blue Tooth或数据线方式下载。其中,所述下栽与存储之间进一步包括将终端的模式设置为不运行其它程序的安装补丁模式。其中,该方法进一步包括在指针值更改的过程中,记录更改前的指针值,如果更改失败, 则将指针值改回原值。其中,所述闪存为定址闪存Nor-Flash。本发明还包括一种终端嵌入式系统的软件更新装置,包括接收单元,包括无线接口模块和有线接口模块,所述模块用于下 载安装信息和新代码;操作单元,用于获取安装信息中的地址,控制读/写单元按照安装 信息中的地址将新代码存储到闪存中的预定位置;控制读/写单元在所 述闪存内的镜像文件中,将调用旧代码的指针值更改为所述预定位置 的地址。读/写单元,用于对闪存进行读/写; 闪存,用于存储来自读/写单元的数据。其中,所述无线接口模块用于通过GPRS、 WAP、 EMS、 MMS、 IrDA或Blue Tooth方式进4亍下栽。其中,所述装置还包括模式设置单元,用于在操作单元执行操作 前,将终端的模式设置为不运行其它程序的安装补丁模式。其中,所述装置还包括恢复单元,与所述读/写单元连接,用于在 指针值更改的过程中,记录更改前的指针值;如果更改失败,则将指
4十值改回原^t。其中,所述闪存为定址闪存Nor-Flash。通过本发明的方法和装置,在软件更新时,不必将整个镜像文件 全部下栽并更新,只需要下载新代码段即可,由于新代码段的数据量 较小,可以通过各种方式下载,可操作性更强,且软件中旧代码段的 更新是通过指针的更改,使镜像文件调用新代码段,不同于整个镜像 文件的替换,不会对闪存重新分配空间,不会造成用户资料的丢失。 在更新的过程中,记录整个更改过程,如果更新失败,则将指针改回 原值,不会造成由于软件更新的失败,造成终端原有功能出现故障。附困说明

图1是本发明方法实施例的流程图; 图2是本发明装置实施例的结构图。
具体实施方式
本发明的方法,保存终端中原有存在的镜像软件,通过增加新的 代码段来实现软件的更新和升级。本发明所指的终端,是指具有嵌入 式系统的终端,如手机、个人数字助理(PDA)等。在嵌入式系统中,所运行的代码都是保存在闪存上的。在运行时, 由闪存中读取,读入到内存后运行或直接运行。软件更新时,通常是 在实现原有功能的程序代码上,通过增加部分新的程序代码,来实现 新的功能。所增加的新代码段可以是一个或多个。由于软件的执行从源代码的角度上说,都是依靠函数和变量的嵌 套调用来实现的。在镜像文件中,实现终端各个功能的每一个函数和 变量,在嵌入式系统的定址闪存(Nor-Flash)芯片中都存在明确的地址。中央处理单元CPU在执行的时候,正是通过寻找这些地址来进 行相应的操作的。因此,只要修改原来镜像文件中的少数指针指向, 使其指向到新地址上,新地址上的函数和变量与原程序中的兼容,并
可以执行。这样,就可实现软件的更新。指针原先指向地址中的函数 仍然保存,如果新加入补丁中的程序代码出现问题,还可以回复到更 新前的状态。下面结合附图详细说明本发明方法的实施例。在此实施例中,终端以手才几为例,程序代码存储在Nor - Flash为例,详细说明手机进行 软件更新的流程。步骤S101:下载补丁;手机可以通过多种方式下载补丁,如通用分组无线业务(GPRS, General Packet Radio Service )、 无纟戋应用十办i义(WAP , Wireless Application Protocol) 、 i曽强#豆4言业务(EMS 、 Enhanced Message Service )、多媒体信息月l务(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。修改完成后,记录所修改的信息,包括修改 的指针值和修改前的指针值。安装完成后,执行步骤SllO。步骤S109:补丁安装失败;确认补丁安装失败,执行步骤S113。步骤S110:判断是否修改成功;如果修改成功,则执行步骤Slll;如果修改失败,则执行步骤 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。 对于本发明的方法和装置,优选采用定址闪存,但定址闪存并不是唯一 的,其它闪存通过显而易见的改动也可实现本发明的方法和装置。对于本发明的方法和装置,凡在本发明的精神和原则之内,所作 的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
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。
全文摘要
本发明公开了一种终端嵌入式系统的软件更新方法和装置,本发明的方法包括终端将安装信息和新代码下载后,按照安装信息中的地址将新代码存储到闪存中的预定位置;在所述闪存内的镜像文件中,将调用旧代码的指针值更改为所述预定位置的地址。在指针值更改的过程中,记录更改前的指针值,如果更改失败,则将指针值改回原值。通过本发明的方法和装置,在软件更新时,不必将整个镜像文件全部下载并更新,只需要下载新代码段即可,由于新代码段的数据量较小,可以通过各种方式下载,可操作性更强,且不会对闪存重新分配空间,不会造成用户资料的丢失。
文档编号G06F9/445GK101211265SQ200610148809
公开日2008年7月2日 申请日期2006年12月28日 优先权日2006年12月28日
发明者蔡世光, 邓冶华, 邱旭军 申请人:英华达(上海)电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1