终端设备中系统软件升级方法和装置的制作方法

文档序号:6399398阅读:331来源:国知局
专利名称:终端设备中系统软件升级方法和装置的制作方法
技术领域
本发明涉及嵌入式系统技术,尤其涉及一种终端设备中系统软件升级方法和装置。
背景技术
目前,嵌入式系统软件被广泛应用于通讯领域、工业控制领域、家庭智能设备、国防、医疗等领域。例如,手机、智能电视、机顶盒终端设备、掌上电脑等均采用嵌入式系统,以提供智能化的、具有较好人机交互性能的功能。目前,基于OTA (Over-the-Air Technology,空间下载技术)的系统软件升级方法因为其升级的便利性在各种终端设备中得到广泛应用;例如,用户可以方便地通过OTA升级方式,通过网络,比如WIF1、3G等,自动下载OTA升级包、自动对手机、或机顶盒终端设备等进行系统软件的升级。目前,终端设备OTA升级主要有两种方法;第一种是最小系统方法即生成一个称之为Loader (加载器)的最小系统,实现基本的OTA升级功能;然而该升级方法,需要终端设备在系统软件检测到系统软件升级指令后,重新启动后加载运行Loader,以实现基本的OTA升级功能。由于升级过程中,需要终端设备进行重启,不符合升级的规范流程,应用局限性大;第二种方法是把OTA升级程序包含在系统应用程序之中,由系统应用程序完成。第二种升级方法的升级过程符合规范,但如果升级失败,则终端设备将无法正常启动,无法继续使用,需要重新烧写软件。综上所述,现有技术的OTA升级方法不能同时满足升级过程符合规范流程,以及在升级失败的情况下仍然保证终端设备的正常启动。

发明内容
本发明实施例提供了一种终端设备中系统软件升级方法和装置,使得系统软件升级过程既符合规范流程,又可以在升级失败的情况下仍然保证终端设备可以正常启动。根据本发明的一个方面,提供了一种终端设备中系统软件升级方法,包括:所述终端设备上电后读取系统配置文件中的软件分区信息;根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件;启动的系统软件在运行过程中,若接收到系统软件升级指令,则根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级;在升级成功后,将所述软件分区信息所指示的主软件分区由第一软件分区修改为第二软件分区。较佳地,所述终端设备上电后读取系统配置文件中的软件分区信息;根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件,具体为:所述终端设备上电后,启动引导程序;
所述引导程序读取系统配置文件中的软件分区信息,根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件。较佳地,所述根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件具体包括:所述引导程序在确定所述软件分区信息指示出第一软件分区为主软件分区后,启动第一软件分区中的内核Kernel程序、加载第一软件分区中的根文件系统rootfs ;根据加载的rootfs中的启动系统应用App程序的脚本进行运行的过程中,根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统App程序。较佳地,在所述引导程序在确定所述软件分区信息指示出第一软件分区为主软件分区后,以及所述启动第一软件分区中的内核Kernel程序之前,还包括:所述引导程序根据第一软件分区中的徽标Logo显示区域中的内容进行Logo显
/Jn ο较佳地,所述软件分区信息具体包括=Logo显示区域信息、Kernel程序启动区域信息、rootfs加载区域信息、系统App程序启动区域信息;以及指示出第一软件分区为主软件分区的软件分区信息具体包括:指示出Logo显示区域位于第一软件分区的Logo显示区域信息、指示出Kernel程序启动区域位于第一软件分区的Kernel程序启动区域信息、指示出rootfs加载区域位于第一软件分区的rootfs加载区域信息、指示出系统App程序启动区域位于第一软件分区的系统App程序启动区域信息;以及指示出第二软件分区为主软件分区的软件分区信息具体包括:指示出Logo显示区域位于第二软件分区的Logo显示区域信息、指示出Kernel程序启动区域位于第二软件分区的Kernel程序启动区域信息、指示出rootfs加载区域位于第二软件分区的rootfs加载区域信息、指示出系统App程序启动区域位于第二软件分区的系统App程序启动区域信息。较佳地,在所述将所述软件分区信息所指示的主软件分区由第一软件分区修改为第二软件分区后,还包括:若所述终端设备重启或再次上电后,所述终端设备读取系统配置文件中的软件分区信息;并根据所述软件分区信息所指示的第二软件分区为主软件分区,启动第二软件分区中的系统软件。较佳地,在所述根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级后,还包括:若升级失败,则所述终端设备重启或再次上电后,所述终端设备读取系统配置文件中的软件分区信息;并根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件。较佳地,所述若接收到系统软件升级指令,则根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级,具体包括:启动的系统软件在运行过程中,若接收到系统软件升级指令,则判断下载的新版本的系统软件是否符合升级条件;若符合升级条件,则根据所述新版本的系统软件对第二软件分区中的系统软件进行升级;其中,所述升级条件包括以下任一条件,或以下任意条件的组合:所述终端设备的终端型号与所述下载的新版本的系统软件中的终端型号匹配、所述终端设备的用户标识与所述下载的新版本的系统软件中的用户标识匹配、所述终端设备的硬件版本号与所述下载的新版本的系统软件中的硬件版本号匹配、所述新版本大于所述终端设备中的当前版本、所述终端设备的MAC地址在所述新版本的系统软件所指定的MAC地址范围内、所述终端设备的序列号在所述新版本的系统软件所指定的序列号范围内。根据本发明的另一个方面,还提供了一种终端设备中系统软件升级装置,包括:系统软件启动模块,用于在所述终端设备上电后,读取系统配置文件中的软件分区信息;若所述软件分区信息指示出第一软件分区/第二软件分区为主软件分区,则启动第一软件分区/第二软件分区中的系统软件;系统软件升级模块,用于接收到系统软件升级指令后,若判断所述软件分区信息指示出第一软件分区/第二软件分区为主软件分区,则根据下载的新版本的系统软件对第二软件分区/第一软件分区中的系统软件进行升级;在升级成功后,将所述软件分区信息所指示的主软件分区由第一软件分区/第二软件分区修改为第二软件分区/第一软件分区。较佳地,所述系统软件启动模块包含于所述终端设备中的引导程序中;以及所述系统软件升级模块包含于所述终端设备中正在运行的系统软件中。本发明实施例的技术方案,由于在终端设备中设置两个软件分区:第一软件分区、第二软件分区;轮流作为主软件分区和备份软件分区;在主软件分区(例如第一软件分区)中的系统软件运行时,则对备份软件分区(例如第二软件分区)中的系统软件进行升级;这样,即使对备份软件分区的升级失败,仍然不会影响主软件分区中的系统软件的正常运行,保证了终端设备在升级失败的情况下仍然可以正常启动、运行;而且,在升级过程中不用对终端设备进行重启,系统软件升级过程符合规范流程。


图1、3为本发明实施例的终端设备中系统软件升级方法流程图;图2为本发明实施例的启动系统软件的方法流程图;图4为本发明实施例的终端设备中系统软件升级装置的内部结构框图。
具体实施例方式为使本发明的目的、技术方案及优点更加清楚明白,以下参照附图并举出优选实施例,对本发明进一步详细说明。然而,需要说明的是,说明书中列出的许多细节仅仅是为了使读者对本发明的一个或多个方面有一个透彻的理解,即便没有这些特定的细节也可以实现本发明的这些方面。本申请使用的“模块”、“系统”等术语旨在包括与计算机相关的实体,例如但不限于硬件、固件、软硬件组合、软件或者执行中的软件。例如,模块可以是,但并不仅限于:处理器上运行的进程、处理器、对象、可执行程序、执行的线程、程序和/或计算机。举例来说,计算设备上运行的应用程序和此计算设备都可以是模块。一个或多个模块可以位于执行中的一个进程和/或线程内。本发明的主要思路为,在终端设备中设置两个软件分区;其中一个作为主软件分区,一个作为备份软件分区;在通过系统软件进行OTA升级时,由主软件分区的系统软件执行升级功能:根据下载的新版系统软件对备份软件分区中的系统软件进行升级;这样,如果升级失败,则由于主软件分区的系统软件没有被更改,终端设备在上电、重启后,仍然可以根据主软件分区中的系统软件正常启动。主软件分区的系统软件在升级成功后,将当前的备份软件分区转换为主软件分区;相应地,当前的主软件分区则转换为备份软件分区。这样,终端设备在上电、重启后,将根据转换后的主软件分区中的新版系统软件进行启动,从而达到系统软件升级的目的;且升级过程中不需要进行终端设备的重启。下面结合附图详细说明本发明实施例的技术方案。本发明实施例提供的终端设备中,设置了两个软件分区,分别为:第一软件分区和第二软件分区。以第一软件分区为当前的主软件分区、第二软件分区为当前的备份软件分区为例,讲述本发明实施例的系统软件升级方法,具体流程如图1所示,包括如下步骤:SlOl:终 而设备上电后,启动引导Boot程序。S102:终端设备读取系统配置文件中的软件分区信息。具体地,终端设备上电后,启动的Boot程序读取系统配置文件中的软件分区信息。由于在本例中,第一软件分区为当前的主软件分区,因此,软件分区信息是设置为指示第一软件分区为主软件分区的;那么,该指示第一软件分区为主软件分区的软件分区信息同时也表明第二软件分区为备份软件分区。事实上,软件分区信息的不同取值用以表示不同的信息;一种信息为指示第一软件分区为主软件分区,另一种信息为指示第二软件分区为主软件分区。例如,当软件分区信息的值为I时,其指示第一软件分区为主软件分区;当软件分区信息的值为O时,其指示第二软件分区为主软件分区。S103:终端设备根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件。启动第一软件分区中的系统软件的具体过程将在后续进行详细介绍。S104:第一软件分区中的系统软件启动后,若接收到系统软件升级指令,则根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级。具体地,第一软件分区中的系统软件启动后,若终端设备中启动的系统软件在运行过程中,接收到系统软件升级指令后,若确认软件分区信息指示第一软件分区为主软件分区,则表明该软件分区信息同时相应指示出了第二软件分区为备份软件分区;第一软件分区中的系统软件根据下载的新版本的系统软件对作为备份软件分区的第二软件分区中的系统软件进行升级。相应地,若正在运行的系统软件确认软件分区信息指示第二软件分区为主软件分区,则表明该软件分区信息同时相应指示出了第一软件分区为备份软件分区,因此,根据下载的新版本的系统软件对作为备份软件分区的第一软件分区中的系统软件进行升级。
较佳地,启动的系统软件接收到系统软件升级指令后,先判断下载的新版本的系统软件是否符合升级条件;若符合升级条件,则根据所述新版本的系统软件对第二软件分区中的系统软件进行升级;否则,将不执行升级操作。通常,升级条件可以包括以下任一条件,或以下任意条件的组合:所述终端设备的终端型号与所述下载的新版本的系统软件中的终端型号匹配、所述终端设备的用户标识与所述下载的新版本的系统软件中的用户标识匹配、所述终端设备的硬件版本号与所述下载的新版本的系统软件中的硬件版本号匹配、所述新版本大于所述终端设备中的当前版本、所述终端设备的MAC地址在所述新版本的系统软件所指定的MAC地址范围内、所述终端设备的序列号在所述新版本的系统软件所指定的序列号范围内。第一软件分区中的系统软件启动后,接收到系统软件升级指令,根据下载的新版本的系统软件进行升级可以有两种具体方式:一种方式是通过U盘进行升级:通过系统软件提供的本地配置页面,将U盘升级路径配置到系统软件中,并显示升级按钮;在用户点击升级按钮后,终端设备中的系统软件确认接收到系统软件升级指令,并根据配置的U盘升级路径下载新版本的系统软件,根据下载的新版本的系统软件进行升级。另一种方式是通过HTTP (Hyper Text Transport Protocol,超文本传输协议)网络升级:终端设备中的系统软件的浏览器在接收到服务器下发的升级地址,并识别到升级地址接口后触发系统软件进行升级并向系统软件传递升级地址参数;触发系统软件升级时,正在运行的系统软件确认接收到系统软件升级指令,依据升级地址参数通过HTTP协议下载新版本的系统软件,根据下载的新版本的系统软件对备份软件分区中的系统软件进行升级。系统软件中通常可以包括:徽标Logo、内核Kernel程序、根文件系统rootfs、系统应用App程序。在进行系统软件升级过程中,可以采用闪存写入(nandwrite)方式对徽标Logo、内核Kernel程序在第二软件分区进行升级;可以采用UBI (Unsorted Block Image,无排序区块图像)分卷方式对根文件系统rootfs、系统应用App程序在第二软件分区进行升级。在升级过程中,如果因为某些意外的因素导致升级失败,由于是在第二软件分区进行升级,并不涉及对第一软件分区的内容的更改;因此,第一软件分区的系统软件仍然可以正常运行;并在终端设备重启后,Boot程序仍然根据指示第一软件分区为主软件分区的软件分区信息,启动第一软件分区的系统软件运行,从而保证终端设备仍然可以正常运行。S105:第一软件分区中的系统软件在对第二软件分区中的系统软件升级成功后,修改软件分区信息指示第二软件分区为主软件分区。具体地,第一软件分区中的系统软件在对第二软件分区中的系统软件升级成功后,将所述软件分区信息所指示的主软件分区由第一软件分区修改为第二软件分区。在第一软件分区中的系统软件将软件分区信息修改为指示第二软件分区为主软件分区的信息后,虽然第二软件分区中的系统软件已经升级完毕,但是第一软件分区中的系统软件仍然处于运行状态。在终端设备关机、第一软件分区中的系统软件退出后,终端设备再次重启时,终端设备中的Boot程序将根据所述软件分区信息所指示的第二软件分区为主软件分区,启动第二软件分区中的系统软件进行运行;此时,终端设备中运行的是升级后的新版本的系统软件。事实上,系统软件中通常可以包括:徽标Logo、内核Kernel程序、根文件系统rootfs、系统应用App程序。相应地,软件分区信息具体可以包括:Logo显示区域信息、Kernel程序启动区域信息、rootfs加载区域信息、系统App程序启动区域信息。软件分区信息可使用一个字节的数值表示,Logo显示区域信息、Kernel程序启动区域信息、rootfs加载区域信息、系统App程序启动区域信息可以分别以该字节中的一个比特的值进行表示,如下表I所示:表I
权利要求
1.一种终端设备中系统软件升级方法,其特征在于,包括: 所述终端设备上电后读取系统配置文件中的软件分区信息;根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件; 启动的系统软件在运行过程中,若接收到系统软件升级指令,则根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级;在升级成功后,将所述软件分区信息所指示的主软件分区由第一软件分区修改为第二软件分区。
2.如权利要求1所述的方法,其特征在于,所述终端设备上电后读取系统配置文件中的软件分区信息;根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件,具体为: 所述终端设备上电后,启动引导程序; 所述引导程序读取系统配置文件中的软件分区信息,根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件。
3.如权利要求2所述的方法,其特征在于,所述根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件具体包括: 所述引导程序在确定所述软件分区信息指示出第一软件分区为主软件分区后,启动第一软件分区中的内核Kernel程序、加载第一软件分区中的根文件系统rootfs ; 根据加载的rootfs中的启动系统应用App程序的脚本进行运行的过程中,根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统App程序。
4.如权利要求3所述的方法,其特征在于,在所述引导程序在确定所述软件分区信息指示出第一软件 分区为主软件分区后,以及所述启动第一软件分区中的内核Kernel程序之前,还包括: 所述引导程序根据第一软件分区中的徽标Logo显示区域中的内容进行Logo显示。
5.如权利要求4所述的方法,其特征在于,所述软件分区信息具体包括=Logo显示区域信息、Kernel程序启动区域信息、rootfs加载区域信息、系统App程序启动区域信息;以及 指示出第一软件分区为主软件分区的软件分区信息具体包括: 指示出Logo显示区域位于第一软件分区的Logo显示区域信息、指示出Kernel程序启动区域位于第一软件分区的Kernel程序启动区域信息、指示出rootfs加载区域位于第一软件分区的rootfs加载区域信息、指示出系统App程序启动区域位于第一软件分区的系统App程序启动区域信息;以及 指示出第二软件分区为主软件分区的软件分区信息具体包括: 指示出Logo显示区域位于第二软件分区的Logo显示区域信息、指示出Kernel程序启动区域位于第二软件分区的Kernel程序启动区域信息、指示出rootfs加载区域位于第二软件分区的rootfs加载区域信息、指示出系统App程序启动区域位于第二软件分区的系统App程序启动区域信息。
6.如权利要求1-5任一所述的方法,其特征在于,在所述将所述软件分区信息所指示的主软件分区由第一软件分区修改为第二软件分区后,还包括: 若所述终端设备重启或再次上电后,所述终端设备读取系统配置文件中的软件分区信息;并 根据所述软件分区信息所指示的第二软件分区为主软件分区,启动第二软件分区中的系统软件。
7.如权利要求6所述的方法,其特征在于,在所述根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级后,还包括: 若升级失败,则所述终端设备重启或再次上电后,所述终端设备读取系统配置文件中的软件分区信息;并根据所述软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件。
8.如权利要求7所述的方法,其特征在于,所述若接收到系统软件升级指令,则根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级,具体包括: 启动的系统软件在运行过程中,若接收到系统软件升级指令,则判断下载的新版本的系统软件是否符合升级条件; 若符合升级条件,则根据所述新版本的系统软件对第二软件分区中的系统软件进行升级; 其中,所述升级条件包括以下任一条件,或以下任意条件的组合:所述终端设备的终端型号与所述下载的新版本的系统软件中的终端型号匹配、所述终端设备的用户标识与所述下载的新版本的系统软件中的用户标识匹配、所述终端设备的硬件版本号与所述下载的新版本的系统软件中的硬件版本号匹配、所述新版本大于所述终端设备中的当前版本、所述终端设备的MAC地址在所述新版本的系统软件所指定的MAC地址范围内、所述终端设备的序列号在所述新版本的系统软件所指定的序列号范围内。
9.一种终端设备中系统软件升级装置,其特征在于,包括: 系统软件启动模块,用于在所述终端设备上电后,读取系统配置文件中的软件分区信息;若所述软件分区信息指示出第一软件分区/第二软件分区为主软件分区,则启动第一软件分区/第二软件分区中的系统软`件; 系统软件升级模块,用于接收到系统软件升级指令后,若判断所述软件分区信息指示出第一软件分区/第二软件分区为主软件分区,则根据下载的新版本的系统软件对第二软件分区/第一软件分区中的系统软件进行升级;在升级成功后,将所述软件分区信息所指示的主软件分区由第一软件分区/第二软件分区修改为第二软件分区/第一软件分区。
10.如权利要求9所述的装置,其特征在于,所述系统软件启动模块包含于所述终端设备中的引导程序中;以及 所述系统软件升级模块包含于所述终端设备中正在运行的系统软件中。
全文摘要
本发明公开了一种终端设备中系统软件升级方法和装置,所述方法包括终端设备根据软件分区信息所指示的第一软件分区为主软件分区,启动第一软件分区中的系统软件;启动的系统软件在运行过程中,若接收到系统软件升级指令,则根据下载的新版本的系统软件对第二软件分区中的系统软件进行升级;升级成功后,将软件分区信息所指示的主软件分区由第一软件分区修改为第二软件分区。由于在主软件分区(如第一软件分区)中的系统软件运行时,对备份软件分区(如第二软件分区)中的系统软件进行升级;这样即使升级失败,也不会影响主软件分区中的系统软件的正常运行,保证了终端设备仍然可以正常启动、运行。
文档编号G06F9/445GK103106092SQ201310052259
公开日2013年5月15日 申请日期2013年2月18日 优先权日2013年2月18日
发明者时飞飞 申请人:青岛海信宽带多媒体技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1