基于安卓的智能机顶盒的嵌入式系统及其recovery方法
【专利摘要】本发明公开了基于安卓的智能机顶盒的嵌入式系统及其recovery方法,所述系统包括引导系统和用于提供用户应用所需功能的主安卓系统,其特征在于:还包括辅安卓系统,该辅安卓系统与所述主安卓系统共用内核,但两者的根文件系统相互独立并分别存储于智能机顶盒的存储设备的不同物理分区;所述辅安卓系统包括用于对所述主安卓系统进行系统恢复的恢复单元;所述引导系统包括计数器、切换模块和引导模块,用于在主安卓系统启动失败达到额定次数时启动辅安卓系统对主安卓系统进行恢复。本发明具有运行稳定、恢复功能可靠的有益效果。
【专利说明】基于安卓的智能机顶盒的嵌入式系统及其recovery方法
【技术领域】
[0001]本发明涉及嵌入式系统,尤其是涉及一种基于安卓的智能机顶盒的嵌入式系统及其recovery方法。
【背景技术】
[0002]Android (安卓)系统是谷歌公司在2007年11月公布的基于Linux内核的开源手机操作系统,是针对移动终端开发的一整套移动软件。谷歌成立了全球性联盟组织,由众多手机制造商、电信运营商、芯片制造商共同组成,共同开发Android系统,自此Android系统不断升级,功能也越来越完善。目前,三星、HTC、摩托罗拉都推出了自己的Android手机,谷歌也推出了基于Android系统的谷歌TV,再加上香港华锋的e途M7导航仪、MIPS的高清机顶盒,这些都让Android系统大放异彩。谷歌公司正致力于让Android系统不依赖于设备的硬件平台,通过与全球各地的手机制造商和移动运营商合作,开发并推广移动服务产品。发展到今天,很多厂商都推出了自己的Android产品,Android系统的使用范围已经不限于手机等移动设备,在各种嵌入式设备,如机顶盒、多媒体播放器、掌上游戏机、导航仪等,上都得到广泛使用。
[0003]机顶盒作为经常使用的家用电器,必须拥有长时间稳定工作的能力,其中recovery功能必不可少。Recovery功能在机顶盒系统软件出现故障时能够自动或半自动的完成系统恢复,保证其正常工作,节约了售后服务支出的人力物力,增强了用户体验。
[0004]在Android系统中,用组合键(依机型不同)即可进入recovery界面,在这个界面用户可以直接用Sd卡上的zip格式的rom升级或者备份自己安卓设备的系统。其使用原理与PC机上的GHOST软件一样,起到系统备份与还原作用。同时也提供内核升级,根文件系统刷入等功能。
[0005]传统的recovery功能过于简单,即便有与用户交互的界面也相对简陋,不符合当前智能机顶盒用户对用户体验的需求;与此同时,手机Android系统的recovery与大系统共用同一根文件系统,当存储设备上的根文件系统镜像被破坏时,无法进入recovery系统进行恢复。
【发明内容】
[0006]本发明所要解决的技术问题是:提供一种基于安卓的智能机顶盒的嵌入式系统,用于保证机顶盒的稳定工作。
[0007]本发明的技术问题通过下属手段予以解决:
[0008]一种基于安卓的智能机顶盒的嵌入式系统,包括引导系统和用于提供用户应用所需功能的主安卓系统,其特征在于:还包括辅安卓系统,该辅安卓系统与所述主安卓系统共用内核,但两者的根文件系统相互独立并分别存储于智能机顶盒的存储设备的不同物理分区;所述辅安卓系统包括用于对所述主安卓系统进行系统恢复的恢复单元;
[0009]所述引导系统包括计数器、切换模块和引导模块;所述计数器用于累计所述主安卓系统无法启动的次数;所述切换模块用于在所述主安卓系统无法启动且所述计数器的值小于额定值时控制所述引导模块引导重新启动所述主安卓系统,否则,在所述主安卓系统无法启动且所述计数器的值大于或等于额定值时,清空计数器,控制所述引导模块引导启动所述辅安卓系统,并运行所述恢复单元对所述主安卓系统进行系统恢复;所述计数器在所述主安卓系统正常启动后清零。
[0010]优选地:
[0011]所述辅安卓系统还包括用于对所述主安卓系统进行系统升级的升级单元;所述主安卓系统包括升级监听服务单元,用于在主安卓系统满足预定升级条件时下载升级包并修改预定存储分区的标志位为升级标志位;所述切换模块还用于在所述预定存储分区的标志位为升级标志位时控制所述引导模块引导启动所述辅安卓系统并运行所述升级单元对所述主安卓系统进行升级。
[0012]所述主安卓系统还包括主动升级单元,用于在接收到用户的主动升级指令时对主安卓系统进行升级。
[0013]所述辅安卓系统是剪裁掉所述主安卓系统除系统恢复和/或系统升级以外的其他功能模块而获得的。
[0014]—种所述的基于安卓的智能机顶盒的嵌入式系统的recovery方法,包括以下步骤:
[0015]S1、系统上电后进入引导系统,启动计数器进行自加;
[0016]S2、引导启动主安卓系统;
[0017]S3、当主安卓系统无法启动时,切换模块判断计数器的值是否小于额定值,若是,控制引导模块引导重新启动主安卓系统,计数器自加;若否,则清空计数器,控制引导模块引导启动辅安卓系统,并运行恢复单元对主安卓系统进行系统恢复;当主安卓系统正常启动时,计数器清零。
[0018]优选地:
[0019]主安卓系统启动后开启升级监听服务,在满足预定升级条件时,下载升级包,并修改预定存储分区的标志位为升级标志位;所述步骤SI和S2之间还包括以下步骤:判断所示标志位是否为升级标志位,若是,则启动辅安卓系统运行升级单元对主安卓系统进行升级,并清空升级标志位;若否,则进入步骤S2。
[0020]当主安卓系统启动后,在接收到用户的主动升级指令时,对主安卓系统进行升级。
[0021]与现有技术相比,本发明米用与主安卓系统相互独立的辅安卓系统提供主安卓系统的恢复服务,由于两者根文件系统相互独立,辅安卓系统在主安卓系统崩溃的情况下仍然能够独立的完成主安卓系统的恢复工作;而且两个系统共用内核能够降低机顶盒存储设备的分区复杂度,节约存储空间。而且辅安卓系统在机顶盒正常工作时无需运行,因而其所处的存储器分区不易损坏,能够稳定的提供恢复服务。进一步的,本发明的两个系统均采用安卓系统,相比于现有技术具有更高的用户友好性。
[0022]由于机顶盒正常工作时,辅安卓系统不运行,优选方案中,在主安卓系统中植入升级监听服务单元,并通过定制引导系统(英文名称为:boot loader)使其通过标志位的判断切换主辅系统的启动控制,在机顶盒正常工作的同时实现系统实时升级功能。
[0023]优选方案中,主安卓系统包括主动升级单元使得用户能够进行主动升级。[0024]进一步的优选方案中,辅安卓系统是剪裁主安卓系统获得的,使得两个系统相互独立却又同样具有很好的用户亲和性。
【专利附图】
【附图说明】
[0025]图1是本发明一种基于安卓的智能电视机顶盒的嵌入式系统的框图;
[0026]图2是本发明一种基于安卓的智能电视机顶盒的Recovery方法流程图;
[0027]图3是本发明一种基于安卓的智能电视机顶盒的存储设备的分区示意图;
[0028]图4是本发明中升级监听服务程序的流程图;
[0029]图5是本发明中主动升级的升级流程图;
[0030]图6是本发明中安卓根文件系统剪裁示例GPS模块启动流程图;
[0031]图7是本发明中一种桌面UI布局实例;
[0032]图8是本发明中usb升级程序的流程图;
[0033]图9是本发明中ip升级程序客户端的流程图。
【具体实施方式】
[0034]下面对照附图并结合优选的实施方式对本发明作进一步说明。
[0035]安卓系统自带有Recovery系统,用于完成系统的升级、恢复等功能,但是现有Android系统的自带的Recovery与Android系统共用同一根文件系统,当存储设备上的根文件系统镜像被破坏时,无法进入Recovery系统进行恢复。从严格角度说Android的Recovery并不能完全与主Android系统剥离开,不是真正的双系统。为此,如图1所示,本发明对基于安卓的智能机顶盒的嵌入式系统进行改进,采用辅安卓系统300 (下文称安卓小系统)和主安卓系统200 (下文称安卓大系统)的双系统框架,安卓大系统用于提供用户所需的功能,例如:看电视、视听娱乐等功能,是所有基于安卓的智能机顶盒均具有的系统;本发明在机顶盒的安卓大系统的基础上,增加具有恢复单元、升级单元的安卓小系统,用于实现对安装大系统的恢复、升级功能,该安卓小系统与安卓大系统共用内核,但小系统具有独立的根文件系统,并且与安卓大系统的根文件系统分别存储于智能机顶盒的存储设备的不同物理分区;然后修改嵌入式系统的引导系统100 (英文名为boot loader)以在系统启动时实现安卓大系统和安卓小系统之间的切换。boot loader是在操作系统内核运行之前运行的一小段程序,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适的状态,以便为最终调用操作系统内核准备好正确的环境。本发明的引导系统包括引导功能模块用于实现前述初始化硬件设备、建立内存空间映射图等引导功能,本发明还增设有计数器和切换模块,切换模块用于控制引导模块引导启动安卓大系统或安卓小系统;标志位用于安卓大系统是否需要升级,计数器用于累计所述主安卓系统无法启动的次数。其中,切换模块的工作流程为:系统上电后计数器自加,然后判断预定存储分区的标志位是否为升级标志位,如果是,则控制引导模块引导启动安卓小系统,并运行安卓小系统的升级单元对安卓大系统进行升级,如果否,则启动安卓大系统;安卓大系统启动成功,则计数器清零,如果安卓大系统启动失败则:计数器的值小于额定值时控制所述引导模块引导重新启动安卓大系统,计数器值大于或等于额定值时,清空计数器,控制所述引导模块引导启动所述安卓小系统,并运行安卓小系统的恢复单元对所述安卓大系统进行系统恢复。为实现通过安卓小系统进行升级,所述安卓大系统中还需要添加升级监听服务单元,用于在主安卓系统满足预定升级条件时下载升级包并修改所述预定分区的标志位为升级标志位。优选的,安卓大系统中也可设置主动升级单元,用于在接收到用户的主动升级指令时对主安卓系统进行升级。本发明的安卓小系统优选是剪裁掉所述主安卓系统除系统恢复和/或系统升级以外的其他功能模块而获得的。
[0036]为进一步对本发明的技术方案进行阐述,下文提供更加具体的实施例对前述嵌入式系统的设计、制作、及系统Recovery方法进行说明。
[0037]本实施例的嵌入式系统的设计和制作主要包括:
[0038]一、定制 boot loader 引导系统。
[0039]智能机顶盒属于嵌入式设备的一种,因此其正常启动必须利用boot loader引导系统。在嵌入式操作系统中,boot loader是在操作系统内核运行之前运行的一小段程序。可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。常用的boot loader工作状态下分为两个模式:启动模式和下载模式。为实现boot loader的标志位检测和系统切换功能,增添下载模式下的命令,并以之引导系统内核。
[0040]本方法的boot loader定制主要分为两个内容:首先,在目标机顶盒使用的bootloader内部加入计数器、切换模块;另外,完成机顶盒存储设备的分区。各部分内容的具体方法实施如下:
[0041](I)在bootloader中增加判断、切换命令:
[0042]由于在boot loader中要实现计数器、判断标志位以及切换系统启动参数等功能,增加boot loader的命令,并添加其为启动命令。下文以最常用的U_boot为例,介绍bootloader增加命令的方法。若要在U_boot中加入自己需要的命令,注意在三个部分添加或补充内容:
[0043]A.在common文件夹下添加相关的cmd_XXX.c文件:
[0044]其中XXX为索要添加的命令名称,其格式为:
[0045]U_B00T_CMD
[0046](
[0047]XXX, I, I, do_xxx,
[0048]〃help information for short〃,
[0049]〃help information in detail〃
[0050]);
[0051]do_xxx() {}函数具体实现索要添加的功能。
[0052]B.在common文件夹下的Makefile中添加:
[0053]COBJS-S(C0NFIG_CMD_MYCMD)+=cmd_XXX.ο
[0054]C.在include/configs文件夹下的vpe_apoll0.h(此处对应开发板名称)
[0055]中添加:
[0056]#define C0NFIG_CMD_XXX
[0057]并使用make工具制作出镜像,烧录入机顶盒相关分区,即可在定制的U_boot环境下使用所需的XXX命令。[0058]添加完命令后,可实现boot loader对升级标志位的判断,对计数器的判断,以及大、小系统间的切换而不影响boot loader的引导功能。
[0059](2)完成存储设备分区
[0060]机顶盒平台结构相对复杂,通常选择功能强的boot loader对设备进行引导,这些boot loader通常都会向内核传输启动参数bootargs, bootargs中包含着分区信息。因此在定制机顶盒时,应当对机顶盒存储设备进行有效分区,这样有利于恢复、升级的高效进行。
[0061]本方法设计的机顶盒存储设备分区示意图如图3所示。下面按照图示顺序分别详述各分区内容:
[0062]A.Bootloader分区存放定制的boot loader镜像,是系统启动时首先调用的存储区块;
[0063]B.Bootargs分区存放当前需引导系统的启动参数bootargs ;
[0064]C.Bootargs_big分区存放引导大系统所需的系统参数bootargs ;
[0065]D.Bootargs_small分区存放引导小系统所需的系统参数bootargs ;
[0066]E.Kernel分区存放大、小安卓系统共用的完整功能的系统内核;
[0067]F.Kernel_bak分区存放出厂时内核备份,供系统恢复时使用;
[0068]G.Flag分区存放升级标志位以及机顶盒基本信息,厂家可设计特有的数据结构,存放如出厂时间,机顶盒版本等目标机顶盒信息,分区示例如图3所示,可进行进一步分区。
[0069]H.Rootfs_small分区存放经过剪裁的安卓小系统根文件系统镜像。
[0070]1.Rootfs_big分区存放大系统根文件系统相关镜像,分区示例如图3所示,可进行进一步分区,将Native层库文件、Native层应用程序和java层应用程序分别单独分区,以便升级时对特定内容单独升级,降低升级难度,提高安全性。可根据不同的升级要求进行不同的分区规划,自由度高,使用方便。
[0071]J.Rootfs_bak分区存放根文件系统的出厂备份镜像,根据机顶盒自身存储设备容量以及升级包刷新的分区选择做出调整,与rootfS_big分区配合使用。
[0072]完成以上两个内容,则完成boot loader的定制,为目标机顶盒实现通过安卓小系统对安卓大系统恢复、升级提供基础。
[0073]步骤二:安卓大系统下添加恢复、升级相关程序
[0074]在安卓系统智能电视机顶盒平台上,安卓大系统提供用户应用所需的所有功能,包括看电视,视听娱乐等安卓系统提供的优秀体验。为实现本实施例设计的Recovery方法,需在正常运行的安卓大系统下添加以下两部分内容:首先,在安卓大系统下添加升级监听服务程序,开机自动运行;另外,在安卓大系统下添加主动升级程序,各部分内容的具体方法实施如下:
[0075](I)在安卓大系统下添加升级监听服务程序,开机自动运行:
[0076]本方法设计的Recovery系统框架可以实现实时、高效的升级。需要大系统下进行升级信息监测、升级包下载以及升级标志位设置三方面的支持。本实施例的升级监听服务程序的流程图如图4所示。在安卓大系统下运行升级信息监测服务,根据厂商需要,对升级来源、升级版本、升级类别进行检测,当符合升级条件时,设置升级标志位,并提醒用户进行升级,同时,重启系统。
[0077]为使安卓小系统升级功能有效实现,升级监听服务程序需要在机顶盒开机时自动运行,其运行脚本为update_check.sh:
[0078]#! / system/bin/sh
[0079]echo〃open update_check service^
[0080]cd/〈update_check path〉
[0081]./<update_check name〉
[0082]其中<update_check path〉为升级检测服务程序所在的根文件目录位置,<update_check name)为升级检测服务程序名。
[0083]为了能够在开机时自动执行脚本文件,需要修改安卓大系统根文件目录下的init.rc (启动脚本)中的启动配置,创建一个服务,服务名称可任意配置,记为<update_check〉。在init.rc最后添加:
[0084]service〈update_check>/system/bin/sh/<update_check [0085]path>/update_check.sh
[0086]oneshot
[0087]这时,当用户启动安卓大系统时,系统会自动启动升级检测服务。
[0088](2)在安卓大系统下添加主动升级程序为实现灵活、个性化的机顶盒平台系统定制,本框架允许用户主动进行升级操作,升级包来源可分为远端和本地,用户提供本地升级源,如含有标准升级包的usb存储设备,或从远端服务器上主动查找升级包,有选择的进行升级。
[0089]本方法提供的主动升级程序利用JNI技术,JNI是Java Native Interface的缩写,中文译作java本地调用。使用JNI技术主要有两点好处:首先,可以使用已经由其他语言编写完成的库文件;其次,实现由底层语言编写的小型时间敏感代码。本方法中遇到的就是第二种情况,由于安卓应用层不具备操作具体硬件的权限,本方法设计使用JNI完成对mtd (请注明中文)设备的操作。
[0090]具体主动程序流程如图5所示。用户从大系统进入主动升级界面,选择要升级的模式,这时,程序检测相关源与本地机顶盒设备的连接。找到升级源后,对升级源处的升级包进行检测,检测该升级包是否符合本地机顶盒的升级条件。然后将符合条件的升级包下载到本地设定好的flash分区,并进行校验。确定升级包完好后,进行升级操作,利用JNI操作mtd设备,将升级包写入相关mtd分区。最后,提醒用户升级完成,并实现重启。
[0091]步骤三:安卓小系统定制
[0092]本方法提供的Recovery系统框架为机顶盒平台长时间、稳定运行提供了有力保障,尽可能排除因存储设备出错导致的软件问题。将系统恢复功能放置于独立的小系统内,保证了大系统崩溃时对目标机顶盒系统的顺利恢复。并为了保持用户体验的一致性,引入安卓小系统。
[0093]安卓小系统优选需满足以下三个条件:稳定、流畅地运行在机顶盒平台上;支持本方法设计的Recovery系统框架相关程序;占用很小的存储空间。
[0094]为满足上述三个条件,需对安卓系统进行深度定制。裁剪掉不需要的安卓系统模块,如GPS、VOIP、TELEPHONE等。下面以GPS模块剪裁为例,讲述安卓系统功能模块的裁剪方法。
[0095]若要对安卓系统特定功能模块进行裁剪,需要对其启动流程进行分析,GPS模块启动流程如图6所示。阅读安卓源码,可分析出GPS启动流程。按照启动流程对gps逐级裁剪:
[0096](I) Framework 层 service 裁剪
[0097](2) Framework 层 location 组件裁剪
[0098](3) Framework 层 jni 裁剪
[0099](4) HAL 层裁剪
[0100]具体操作流程如下所述:
[0101]A.由 zygote 启动流程可知,location service 服务在 systemserver 中开启,故注释安卓源码中位于〈android location〉/gingerbread-2.3.4/frameworks/base/services/ java/com/android/server 目录下 SystemServer.java 内的相关代石马,其中〈android location)为安卓源码所在根文件目录位置,关闭该服务。
[0102]B.Location Manager 服务关闭后,将 LocationManagerServer.java 删除,该服务已不再被调用,该文件位于〈android location)/gingerbread-2.3.4/frameworks/base/services/java/com/android/server 目录下。
[0103]C.删除 GpsLocationProvider 及其依赖包,因为 LocationManagerServer 直接调用GpsLocationProvider,故`将其删除。编译安卓源码中的service, jar,编译通过。
[0104]D.修改 jni 层 GPS 源码,将 com—android—server—location—GpsLocationProvider.cpp 中 intregister_android_server_location_GpsLocationProvider (JNIEnv^env)函数放空,使其返回值为0,从而将jni与native层进行隔离(不能对该文件直接进行删除是由于缺少该文件时,zygote启动initl失败)。编译后生成库 Iibandroid—servers, so。
[0105]Ε.修改 framework 层 location 组件,删除〈android location〉/gingerbread-2.3.4/frameworks/base/下的 location 文件夹,编译 framework, jar。这时,编译service出错。因此,修改调用Gps相关函数的service,即UiModeManagerService.java,注释掉所有和location相关的包并修改location相关函数调用。
[0106]F.至此,GPS 模块裁剪完毕,编译生成新的 service, jar、framework.jar、ext.jar替换原生的对应包,并将编译出来的I ibandroid—servers, so拷贝到机顶盒/system/lib下,可以正常运行安卓系统。
[0107]根据上述条件,保留系统正常运行及恢复、升级相关模块,对安卓进行深度剪裁,得到本方法所需的安卓小系统。
[0108]步骤四:安卓小系统下添加Recoveir系统相关程序
[0109]在本方法设计的基于安卓系统智能电视机顶盒Recovery系统框架中,安卓小系统完成恢复和升级的功能。因此要在裁剪好的安卓小系统中完成以下三部分的内容:首先,实现与安卓大系统用户体验一致的系统UI ;其次,实现Recoveir小系统内对安卓大系统的恢复功能;最后,完成Recovery小系统内对安卓大系统的升级功能。具体流程如下所示:
[0110](I)实现安卓小系统Π:本方法利用安卓系统强大的图形界面,设计操作简单且具有厂商特点的小系统Launcher作为小系统上唯一运行的程序。一种可使用的布局如图7所示。相关按钮链接到相应的功能程序,可灵活的加入其它功能,如工厂软件测试选项等。
[0111](2)实现Recovery小系统内对安卓大系统的恢复功能:
[0112]编写recovery service程序,如上文步骤二,加入开机自启脚本,使其运行于后台。Service 利用 Iinux 自带的 ioctl 系统函数,操作mtd设备(memory technology device内存技术设备)完成备份镜像向安卓大系统分区的拷贝。在java层利用socket套接字实现进程间通信,调用service,进而实现在安卓Π端实现安卓大系统恢复,功能详细流程参考图2。系统启动时,计数器自加并启动大系统,如无法进入大系统,判断计数器是否小于规定的重启次数n,如果小于,则重启重复上述流程;如果计数器大于或等于规定的重启次数η,则将kernel_bak分区的linux kernel备份镜像拷贝到大系统kernel分区,并进入小系统,执行恢复单元,进而完成了对安卓大系统的恢复。
[0113](3)完成Recovery小系统内对安卓大系统的升级功能:
[0114]为体现安卓更新快、功能多样性强的特点,本方法添加了实时性强、方法多样的大系统升级功能。升级流程如图2所示,系统上电后,检测flag分区的标志位状态是否符合升级条件(即是否为升级标志位),如符合,则进入Recovery小系统进行升级操作,如成功升级,则升级标志位清零,进入大系统,否则重新进行升级流程;当不符合升级条件时,进入安卓大系统,用户正常使用。
[0115]与现有技术相同,优选实施例的升级功能因为其升级包源不同,可分为本地升级和远端升级,本方法分别以USb存储设备升级和ip服务器升级为例,详述多样的升级模式。
[0116]Usb存储设备升级具体流程如图8所示,用户在机顶盒上插入usb存储设备时,后台程序识别设备,并将其挂载到指定的挂载点。这时,对挂载的设备进行检索,当升级包存在且符合升级条件时,弹出对话框,用户进一步确定升级将升级包写入对应mtd分区,则完成对安卓大系统的升级。本程序中java层与native层的进程间通信与恢复程序相同。
[0117]Ip服务器升级具体流程如图9所示,当机顶盒与远端服务器相连时,机顶盒作为客户端会向服务器发送请求,进行连接,当连接成功后,检索服务器镜像源,当升级包存在且符合升级条件时,弹出对话框用户进一步确定升级将升级包写入对应的mtd分区,则完成对安卓大系统的升级。本流程中进程间通信同样利用socket套接字。
[0118]通过进入大、小系统进行升级程序测试和模拟大系统软件系统损坏的情况测试恢复功能。可以发现本发明可以准确、高效的完成系统的恢复与升级,并带给用户一致的产品体验。
[0119]以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属【技术领域】的技术人员来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明显变型,而且性能或用途相同,都应当视为属于本发明的保护范围。
【权利要求】
1.一种基于安卓的智能机顶盒的嵌入式系统,包括引导系统和用于提供用户应用所需功能的主安卓系统,其特征在于:还包括辅安卓系统,该辅安卓系统与所述主安卓系统共用内核,但两者的根文件系统相互独立并分别存储于智能机顶盒的存储设备的不同物理分区;所述辅安卓系统包括用于对所述主安卓系统进行系统恢复的恢复单元; 所述引导系统包括计数器、切换模块和引导模块;所述计数器用于累计所述主安卓系统无法启动的次数;所述切换模块用于在所述主安卓系统无法启动且所述计数器的值小于额定值时控制所述引导模块引导重新启动所述主安卓系统,否则,在所述主安卓系统无法启动且所述计数器的值大于或等于额定值时,清空计数器,控制所述引导模块引导启动所述辅安卓系统,并运行所述恢复单元对所述主安卓系统进行系统恢复;所述计数器在所述主安卓系统正常启动后清零。
2.根据权利要求1所述的基于安卓的智能机顶盒的嵌入式系统,其特征在于: 所述辅安卓系统还包括用于对所述主安卓系统进行系统升级的升级单元; 所述主安卓系统包括升级监听服务单元,用于在主安卓系统满足预定升级条件时下载升级包并修改预定存储分区的标志位为升级标志位; 所述切换模块还用于在所述预定存储分区的标志位为升级标志位时控制所述引导模块引导启动所述辅安卓系统并运行所述升级单元对所述主安卓系统进行升级。
3.根据权利要求1所述的基于安卓的智能机顶盒的嵌入式系统,其特征在于:所述主安卓系统还包括主动升级单元,用于在接收到用户的主动升级指令时对主安卓系统进行升级。
4.根据权利要求1、2或3所述的基于安卓的智能机顶盒的嵌入式系统,其特征在于:所述辅安卓系统是剪裁掉所述主安卓系统除系统恢复和/或系统升级以外的其他功能模块而获得的。
5.—种如权利要求1所述的基于安卓的智能机顶盒的嵌入式系统的recovery方法,其特征在于,包括以下步骤: 51、系统上电后进入引导系统,启动计数器进行自加; 52、引导启动王安卓系统; 53、当主安卓系统无法启动时,切换模块判断计数器的值是否小于额定值,若是,控制引导模块引导重新启动主安卓系统,计数器自加;若否,则清空计数器,控制引导模块引导启动辅安卓系统,并运行恢复单元对主安卓系统进行系统恢复;当主安卓系统正常启动时,计数器清零。
6.—种如权利要求5所述的方法,其特征在于: 主安卓系统启动后开启升级监听服务,在满足预定升级条件时,下载升级包,并修改预定存储分区的标志位为升级标志位; 所述步骤SI和S2之间还包括以下步骤:判断所示标志位是否为升级标志位,若是,则启动辅安卓系统运行升级单元对主安卓系统进行升级,并清空升级标志位;若否,则进入步骤S2。
7.—种如权利要求5所述的方法,其特征在于: 当主安卓系统启动后,在接收到用户的主动升级指令时,对主安卓系统进行升级。
【文档编号】G06F9/445GK103826162SQ201410073454
【公开日】2014年5月28日 申请日期:2014年2月28日 优先权日:2014年2月28日
【发明者】胡勇, 陈鹏, 刘睿, 范元平, 耿金河 申请人:深圳市佳创视讯技术股份有限公司