2024年5月7日发(作者:归溪儿)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.1
(22)申请日 2014.02.28
(71)申请人 深圳市佳创视讯技术股份有限公司
地址 518000 广东省深圳市福田区滨河路以南、沙嘴路以东中央西谷大厦,15层01-
08,16层04-06
(72)发明人 胡勇 陈鹏 刘睿 范元平 耿金河
(74)专利代理机构 深圳新创友知识产权代理有限公司
代理人 赵烨福
(51)
H04N21/443
G06F9/445
(10)申请公布号 CN 103826162 A
(43)申请公布日 2014.05.28
权利要求说明书 说明书 幅图
(54)发明名称
基于安卓的智能机顶盒的嵌入式系
统及其recovery方法
(57)摘要
本发明公开了基于安卓的智能机顶
盒的嵌入式系统及其recovery方法,所述
系统包括引导系统和用于提供用户应用所
需功能的主安卓系统,其特征在于:还包
括辅安卓系统,该辅安卓系统与所述主安
卓系统共用内核,但两者的根文件系统相
互独立并分别存储于智能机顶盒的存储设
备的不同物理分区;所述辅安卓系统包括
用于对所述主安卓系统进行系统恢复的恢
复单元;所述引导系统包括计数器、切换
模块和引导模块,用于在主安卓系统启动
失败达到额定次数时启动辅安卓系统对主
安卓系统进行恢复。本发明具有运行稳
定、恢复功能可靠的有益效果。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
1.一种基于安卓的智能机顶盒的嵌入式系统,包括引导系统和用于提供用
户应用所需功能的主安卓系统,其特征在于:还包括辅安卓系统,该辅安卓
与所述主安卓系统共用内核,但两者的根文件系统相互独立并
顶盒的存储设备的不同物理分区;所述辅安卓系
行系统恢复的恢复单元;
系统
分别存储于智能机
统包括用于对所述主安卓系统进
所述引导系统包括计数器、切换模块和引导模块;所述计数器用于累计所述
主安卓系统无法启动的次数;所述切换模块用于在所述主安卓系统无
述计数器的值小于额定值时控制所述引导模块引导重新
则,在所述主安卓系统无法启动且所述计
数器,控制所述引导模块引
主安卓系统进
法启动且所
启动所述主安卓系统,否
数器的值大于或等于额定值时,清空计
导启动所述辅安卓系统,并运行所述恢复单元对所述
行系统恢复;所述计数器在所述主安卓系统正常启动后清零。
2.根据权利要求1所述的基于安卓的智能机顶盒的嵌入式系统,其特征在于:
所述辅安卓系统还包括用于对所述主安卓系统进行系统升级的升级单元;
所述主安卓系统包括升级监听服务单元,用于在主安卓系统满足预定升级条
所述切换模块还用于在所述预定存储分区的标志位为升级标志位时控制所
件时下载升级包并修改预定存储分区的标志位为升级标志位;
进
述引导模块引导启动所述辅安卓系统并运行所述升级单元对所述主安卓系统
行升级。
3.根据权利要求1所述的基于安卓的智能机顶盒的嵌入式系统,其特征在于:
所述主安卓系统还包括主动升级单元,用于在接收到用户的主动升级
安卓系统进行升级。 指令时对主
4.根据权利要求1、2或3所述的基于安卓的智能机顶盒的嵌入式系统,其
特征在于:所述辅安卓系统是剪裁掉所述主安卓系统除系统恢复和/或系统
以外的其他功能模块而获得的。 升级
5.一种如权利要求1所述的基于安卓的智能机顶盒的嵌入式系统的recovery
S1、系统上电后进入引导系统,启动计数器进行自加;
S2、引导启动主安卓系统;
S3、当主安卓系统无法启动时,切换模块判断计数器的值是否小于额定值,
若是,控制引导模块引导重新启动主安卓系统,计数器自加;若否,
器,控制引导模块引导启动辅安卓系统,并运行恢复单
恢复;当主安卓系统正常启动时,计数器
方法,其特征在于,包括以下步骤:
则清空计数
元对主安卓系统进行系统
清零。
6.一种如权利要求5所述的方法,其特征在于:
主安卓系统启动后开启升级监听服务,在满足预定升级条件时,下载升级包,
所述步骤S1和S2之间还包括以下步骤:判断所示标志位是否为升级标志
位,若是,则启动辅安卓系统运行升级单元对主安卓系统进行升级,并清空
标志位;若否,则进入步骤S2。
并修改预定存储分区的标志位为升级标志位;
升级
7.一种如权利要求5所述的方法,其特征在于:
当主安卓系统启动后,在接收到用户的主动升级指令时,对主安卓系统进行
升级。
说 明 书
技术领域
本发明涉及嵌入式系统,尤其是涉及一种基于安卓的智能机顶盒的嵌入式系
背景技术
Android(安卓)系统是谷歌公司在2007年11月公布的基于Linux内核的
开源手机操作系统,是针对移动终端开发的一整套移动软件。谷歌成立了全
联盟组织,由众多手机制造商、电信运营商、芯片制造商共同组成,
Android系统,自此Android系统不断升级,功能也越来越完
HTC、摩托罗拉都推出了自己的Android手机,谷歌也
的谷歌TV,再加上香港华锋的e途M7导航仪、
Android系统大放异彩。谷歌公司正致力
平台,通过与全球各地的手机制造
品。发展到今天,很多厂商
范围已经不限于手机
掌上游
统及其recovery方法。
球性
共同开发
善。目前,三星、
推出了基于Android系统
MIPS的高清机顶盒,这些都让
于让Android系统不依赖于设备的硬件
商和移动运营商合作,开发并推广移动服务产
都推出了自己的Android产品,Android系统的使用
等移动设备,在各种嵌入式设备,如机顶盒、多媒体播放器、
戏机、导航仪等,上都得到广泛使用。
机顶盒作为经常使用的家用电器,必须拥有长时间稳定工作的能力,其中
recovery功能必不可少。Recovery功能在机顶盒系统软件出现故障时能够自
半自动的完成系统恢复,保证其正常工作,节约了售后服务支出的人
强了用户体验。
动或
力物力,增
在Android系统中,用组合键(依机型不同)即可进入recovery界面,在这个
界面用户可以直接用sd卡上的zip格式的rom升级或者备份自己安卓设备
的系 统。其使用原理与PC机上的GHOST软件一样,起到系统备份与还
时也提供内核升级,根文件系统刷入等功能。 原作用。同
传统的recovery功能过于简单,即便有与用户交互的界面也相对简陋,不符
合当前智能机顶盒用户对用户体验的需求;与此同时,手机Android系统的
recovery与大系统共用同一根文件系统,当存储设备上的根文件系统镜像被
时,无法进入recovery系统进行恢复。 破坏
发明内容
本发明所要解决的技术问题是:提供一种基于安卓的智能机顶盒的嵌入式系
本发明的技术问题通过下属手段予以解决:
一种基于安卓的智能机顶盒的嵌入式系统,包括引导系统和用于提供用户应
用所需功能的主安卓系统,其特征在于:还包括辅安卓系统,该辅安卓系统
述主安卓系统共用内核,但两者的根文件系统相互独立并分别存储于
的存储设备的不同物理分区;所述辅安卓系统包括用于对所述
统恢复的恢复单元;
统,用于保证机顶盒的稳定工作。
与所
智能机顶盒
主安卓系统进行系
所述引导系统包括计数器、切换模块和引导模块;所述计数器用于累计所述
主安卓系统无法启动的次数;所述切换模块用于在所述主安卓系统无法启动
述计数器的值小于额定值时控制所述引导模块引导重新启动所述主安
则,在所述主安卓系统无法启动且所述计数器的值大于或等于
数器,控制所述引导模块引导启动所述辅安卓系统,并
主安卓系统进行系统恢复;所述计数器在所述主
且所
卓系统,否
额定值时,清空计
运行所述恢复单元对所述
安卓系统正常启动后清零。
优选地:
所述辅安卓系统还包括用于对所述主安卓系统进行系统升级的升级单元;所
述主安卓系统包括升级监听服务单元,用于在主安卓系统满足预定升级条件
载升级包并修改预定存储分区的标志位为升级标志位;所述切换模块
述预定存储分区的标志位为升级标志位时控制所述引导模块引
卓系统并运行所述升级单元对所述主安卓系统进行升级。
时下
还用于在所
导启动所述辅安
所述主安卓系统还包括主动升级单元,用于在接收到用户的主动升级指令时
所述辅安卓系统是剪裁掉所述主安卓系统除系统恢复和/或系统升级以外的
一种所述的基于安卓的智能机顶盒的嵌入式系统的recovery方法,包括以下
S1、系统上电后进入引导系统,启动计数器进行自加;
S2、引导启动主安卓系统;
S3、当主安卓系统无法启动时,切换模块判断计数器的值是否小于额定值,
若是,控制引导模块引导重新启动主安卓系统,计数器自加;若否,则清空
器,控制引导模块引导启动辅安卓系统,并运行恢复单元对主安卓系
恢复;当主安卓系统正常启动时,计数器清零。
步骤:
其他功能模块而获得的。
对主安卓系统进行升级。
计数
统进行系统
优选地:
主安卓系统启动后开启升级监听服务,在满足预定升级条件时,下载升级包,
并修改预定存储分区的标志位为升级标志位;所述步骤S1和S2之间还包
下步骤:判断所示标志位是否为升级标志位,若是,则启动辅安卓系
单元对主安卓系统进行升级,并清空升级标志位;若否,则进
括以
统运行升级
入步骤S2。
当主安卓系统启动后,在接收到用户的主动升级指令时,对主安卓系统进行
与现有技术相比,本发明采用与主安卓系统相互独立的辅安卓系统提供主安
卓系统的恢复服务,由于两者根文件系统相互独立,辅安卓系统在主安卓系
溃的情况下仍然能够独立的完成主安卓系统的恢复工作;而且两个系
能够降低机顶盒存储设备的分区复杂度,节约存储空间。而且
盒正常工作时无需运行,因而其所处的存储器分区不易
复服务。进一步的,本发明的两个系统均采用安
高的用户友好性。
升级。
统崩
统共用内核
辅安卓系统在机顶
损坏,能够稳定的提供恢
卓系统,相比于现有技术具有更
由于机顶盒正常工作时,辅安卓系统不运行,优选方案中,在主安卓系统中
植入升级监听服务单元,并通过定制引导系统(英文名称为:boot loader)
通过标志位的判断切换主辅系统的启动控制,在机顶盒正常工作的同
实时升级功能。
使其
时实现系统
优选方案中,主安卓系统包括主动升级单元使得用户能够进行主动升级。
进一步的优选方案中,辅安卓系统是剪裁主安卓系统获得的,使得两个系统
相互独立却又同样具有很好的用户亲和性。
附图说明
图1是本发明一种基于安卓的智能电视机顶盒的嵌入式系统的框图;
图2是本发明一种基于安卓的智能电视机顶盒的Recovery方法流程图;
图3是本发明一种基于安卓的智能电视机顶盒的存储设备的分区示意图;
图4是本发明中升级监听服务程序的流程图;
图5是本发明中主动升级的升级流程图;
图6是本发明中安卓根文件系统剪裁示例GPS模块启动流程图;
图7是本发明中一种桌面UI布局实例;
图8是本发明中usb升级程序的流程图;
图9是本发明中ip升级程序客户端的流程图。
具体实施方式
下面对照附图并结合优选的实施方式对本发明作进一步说明。
安卓系统自带有Recovery系统,用于完成系统的升级、恢复等功能,但是
现有Android系统的自带的Recovery与Android系统共用同一根文件系统,
储设备上的根文件系统镜像被破坏时,无法进入Recovery系统进行
格角度说Android的Recovery并不能完全与主Android系统剥
当存
恢复。从严
离开,不是真正的 双系统。为此,如图1所示,本发明对基于安卓的智能
改进,采用辅安卓系统300(下文称安卓小系统)
卓大系统)的双系统框架,安卓大系统用
视听娱乐等功能,是所有基
的安卓大系统的基础
对安装大系统
统具有
机顶盒的嵌入式系统进行
和主安卓系统200(下文称安
于提供用户所需的功能,例如:看电视、
于安卓的智能机顶盒均具有的系统;本发明在机顶盒
上,增加具有恢复单元、升级单元的安卓小系统,用于实现
的恢复、升级功能,该安卓小系统与安卓大系统共用内核,但小系
独立的根文件系统,并且与安卓大系统的根文件系统分别存储于智能机顶
盒的存储设备的不同物理分区;然后修改嵌入式系统的引导系统100(英文
boot loader)以在系统启动时实现安卓大系统和安卓小系统之间的切
loader是在操作系统内核运行之前运行的一小段程序,可以初
立内存空间映射图,从而将系统的软硬件环境带到一个
调用操作系统内核准备好正确的环境。本发明的
实现前述初始化硬件设备、建立内存空间
数器和切换模块,切换模块用于控
统;标志位用于安卓大系统
启动的次数。其中,
名为
换。boot
始化硬件设备、建
合适的状态,以便为最终
引导系统包括引导功能模块用于
映射图等引导功能,本发明还增设有计
制引导模块引导启动安卓大系统或安卓小系
是否需要升级,计数器用于累计所述主安卓系统无法
切换模块的工作流程为:系统上电后计数器自加,然后判断
预定存储分区的标志位是否为升级标志位,如果是,则控制引导模块
卓小系统,并运行安卓小系统的升级单元对安卓大系统进行升
动安卓大系统;安卓大系统启动成功,则计数器清零,
则:计数器的值小于额定值时控制所述引导模块
器值大于或等于额定值时,清空计数器,
系统,并运行安卓小系统的恢复单
过安卓小系统进行升级,所
在主安卓系统满足预
升级标志位。
的主动
引导启动安
级,如果否,则启
如果安卓大系统启动失败
引导重新启动安卓大系统,计数
控制所述引导模块引导启动所述安卓小
元对所述安卓大系统进行系统恢复。为实现通
述安卓大系统中还需要添加升级监听服务单元,用于
定升级条件时下载升级包并修改所述预定分区的标志位为
优选的,安卓大系统中也可设置主动升级单元,用于在接收到用户
升级指令时对主安卓系统进行升级。本发明的安卓小系统优选是剪裁掉所
为进一步对本发明的技术方案进行阐述,下文提供更加具体的实施例对前述
本实施例的嵌入式系统的设计和制作主要包括:
一、定制boot loader引导系统。
智能机顶盒属于嵌入式设备的一种,因此其正常启动必须利用boot loader
引导系统。在嵌入式操作系统中,boot loader是在操作系统内核运行之前运
一小段程序。可以初始化硬件设备、建立内存空间映射图,从而将系
环境带到一个合适状态,以便为最终调用操作系统内核准备好
的boot loader工作状态下分为两个模式:启动模式和下
的标志位检测和系统切换功能,增添下载模式下
嵌入式系统的设计、制作、及系统Recovery方法进行说明。
述主安卓系统除系统恢复和/或系统升级以外的其他功能模块而获得的。
行的
统的软硬件
正确的环境。常用
载模式。为实现boot loader
的命令,并以之引导系统内核。
本方法的boot loader定制主要分为两个内容:首先,在目标机顶盒使用的boot
loader内部加入计数器、切换模块;另外,完成机顶盒存储设备的分区。各
内容的具体方法实施如下: 部分
(1)在bootloader中增加判断、切换命令:
由于在boot loader中要实现计数器、判断标志位以及切换系统启动参
能,增加boot loader的命令,并添加其为启动命令。下文以最
boot为例,介绍boot loader增加命令的方法。若要在U-boot
数等功
常用的U-
中加入自己需
要的命令,注意在三个部分添加或补充内容:
A.在common文件夹下添加相关的cmd_XXX.c文件:
其中XXX为索要添加的命令名称,其格式为:
U_BOOT_CMD
(
xxx,1,1,do_xxx,
"help information for short",
"help information in detail"
);
do_xxx(){}函数具体实现索要添加的功能。
B.在common文件夹下的Makefile中添加:
COBJS-$(CONFIG_CMD_MYCMD)+=cmd_XXX.o
C.在include/configs文件夹下的vpe_apollo.h(此处对应开发板名称)
中添加:
#define CONFIG_CMD_XXX
并使用make工具制作出镜像,烧录入机顶盒相关分区,即可在定
U-boot环境下使用所需的XXX命令。
添加完命令后,可实现boot loader对升级标志位的判断,对计数器的判
断,以及大、小系统间的切换而不影响boot loader的引导功能。
(2)完成存储设备分区
机顶盒平台结构相对复杂,通常选择功能强的boot loader对设备进行
这些boot loader通常都会向内核传输启动参数bootargs,bootargs
着分区信息。因此在定制机顶盒时,应当对机顶盒存储设备进
分区,这样有利于恢复、升级的高效进行。
本方法设计的机顶盒存储设备分区示意图如图3所示。下面按照图示
别详述各分区内容:
ader分区存放定制的boot loader镜像,是系统启动时首先调
储区块;
gs分区存放当前需引导系统的启动参数bootargs;
gs_big分区存放引导大系统所需的系统参数bootargs;
gs_small分区存放引导小系统所需的系统参数bootargs;
分区存放大、小安卓系统共用的完整功能的系统内核;
_bak分区存放出厂时内核备份,供系统恢复时使用;
制的
引导,
中包含
行有效
顺序分
用的存
分区存放升级标志位以及机顶盒基本信息,厂家可设计特有
结构,存放如出厂时间,机顶盒版本等目标机顶盒信息,
3所示,可进行进一步分区。
_small分区存放经过剪裁的安卓小系统根文件系统镜像。
_big分区存放大系统根文件系统相关镜像,分区示例如图3
可进行进一步分区,将Native层库文件、Native层应用程
应用程序分别单独分区,以便升级时对特定内容单独
提高安全性。可根据不同的升级要求进行
使用方便。
_bak分区存放根文件系统的出厂备份镜像,根据机顶盒自
设备容量以及升级包刷新的分区选择做出调整,与
使用。
的数据
分区示例如图
所示,
序和java层
升级,降低升级难度,
不同的分区规划,自由度高,
身存储
rootfs_big分区配合
完成以上两个内容,则完成boot loader的定制,为目标机顶盒实现通过安卓
步骤二:安卓大系统下添加恢复、升级相关程序
在安卓系统智能电视机顶盒平台上,安卓大系统提供用户应用所需的所有功
能,包括看电视,视听娱乐等安卓系统提供的优秀体验。为实现本实施例设
Recovery方法,需在正常运行的安卓大系统下添加以下两部分内容:
卓大系统下添加升级监听服务程序,开机自动运行;另外,在
主动升级程序,各部分内容的具体方法实施如下:
小系统对安卓大系统恢复、升级提供基础。
计的
首先,在安
安卓大系统下添加
(1)在安卓大系统下添加升级监听服务程序,开机自动运行:
本方法设计的Recovery系统框架可以实现实时、高效的升级。需要大
为使安卓小系统升级功能有效实现,升级监听服务程序需要在机顶盒
#!/system/bin/sh
echo"open update_check service"
cd/<update_check path>
./<update_check name>
其中<update_check path>为升级检测服务程序所在的根文件目录位
为了能够在开机时自动执行脚本文件,需要修改安卓大系统根文件目
service<update_check>/system/bin/sh/<update_check
录下的(启动脚本)中的启动配置,创建一个服务,服务名称
可任意配置,记为<update_check>。在最后添加:
置,<update_check name>为升级检测服务程序名。
开机时自动运行,其运行脚本为update_:
系统下进行升级信息监测、升级包下载以及升级标志位设置三方面的
支持。本实施例的升级监听服务程序的流程图如图4所示。在安卓大
系统下运行升级信息监测服务,根据厂商需要,对升级来源、升级版
本、升级类别进行检测,当符合升级条件时,设置升级标志位,并提
醒用户进行升级,同时,重启系统。
path>/update_
oneshot
这时,当用户启动安卓大系统时,系统会自动启动升级检测服务。
(2)在安卓大系统下添加主动升级程序
系统定制,本框架允许用户主动进
端和本地,用户提供本地升级源,
或从远端服务器上主动查找升级
本方法提供的主动升级程序利用JNI技术,JNI是Java Native Interface
具体主动程序流程如图5所示。用户从大系统进入主动升级界面,选
级的模式,这时,程序检测相关源与本地机顶盒设备的连接。
为实现灵活、个性化的机顶盒平台
行升级操作,升级包来源可分为远
如含有标准升级包的usb存储设备,
包,有选择的进行升级。
的缩写,中文译作java本地调用。使用JNI技术主要有两点好处:首
先,可以使用已经由其他语言编写完成的库文件;其次,实现由底层
语言编写的小型时间敏感代码。本方法中遇到的就是第二种情况,由
于安卓应用层不具备操作具体硬件的权限,本方法设计使用JNI完成
对mtd(请注明中文)设备的操作。
择要升
找到升级源后,对升级源处的升级包进行检测,检测该升级包
合本地机顶盒的升级条件。然后将符合条件的升级包下载到本
好的flash分区,并进行校验。确定升级包完好后,进行升级
利用JNI操作mtd设备,将升级包写入相关mtd分区。最后,
户升级完成,并实现重启。
是否符
地设定
操作,
提醒用
步骤三:安卓小系统定制
本方法提供的Recovery系统框架为机顶盒平台长时间、稳定运行提供了有力
保障,尽可能排除因存储设备出错导致的软件问题。将系统恢复功能放置于
的小系统内,保证了大系统崩溃时对目标机顶盒系统的顺利恢复。并
户体验的一致性,引入安卓小系统。
独立
为了保持用
安卓小系统优选需满足以下三个条件:稳定、流畅地运行在机顶盒平台上;
为满足上述三个条件,需对安卓系统进行深度定制。裁剪掉不需要的安卓系
统模块,如GPS、VOIP、TELEPHONE等。下面以GPS模块剪裁为例,讲
卓系统功能模块的裁剪方法。
支持本方法设计的Recovery系统框架相关程序;占用很小的存储空间。
述安
若要对安卓系统特定功能模块进行裁剪,需要对其启动流程进行分析,GPS
模块启动流程如图6所示。阅读安卓源码,可分析出GPS启动流程。按照
流程对gps逐级裁剪: 启动
(1)Framework层service裁剪
(2)Framework层location组件裁剪
(3)Framework层jni裁剪
(4)HAL层裁剪
具体操作流程如下所述:
A.由zygote启动流程可知,location service服务在systemserver中开启,故
注释安卓源码中位于<android
location>/gingerbread-
2.3.4/frameworks/base/services/ java/com/android/server目录下
内的相关代码,其中
所在根文件目录位置,关闭该服务。
<android location>为安卓源码
on Manager服务关闭后,将删除,该服
C.删除GpsLocationProvider及其依赖包,因为LocationManagerServer直接
D.修改jni层GPS源码,将
E.修改framework层location组件,删除<android
F.至此,GPS模块裁剪完毕,编译生成新的、、
替换原生的对应包,并将编译出来的libandroid_拷贝到机顶盒
/system/lib下,可以正常运行安卓系统。
location>/gingerbread-2.3.4/frameworks/base/下的location文件夹,编译
。这时,编译service出错。因此,修改调用Gps相关函数
的service,即,注释掉所有和location相关
的包并修改location相关函数调用。
com_android_server_location_中
intregister_android_server_location_GpsLocationProvider(JNIEnv*env)函数
放空,使其返回值为0,从而将jni与native层进行隔离(不能对该文件
直接进行删除是由于缺少该文件时,zygote启动init1失败)。编译后生成
库libandroid_。
调用GpsLocationProvider,故将其删除。编译安卓源码中的,
编译通过。
务已不再被调用,该文件位于<android
location>/gingerbread-2.3.4/frameworks/
base/services/java/com/android/server目录下。
根据上述条件,保留系统正常运行及恢复、升级相关模块,对安卓进行深度
步骤四:安卓小系统下添加Recovery系统相关程序
在本方法设计的基于安卓系统智能电视机顶盒Recovery系统框架中,安卓小
系统完成恢复和升级的功能。因此要在裁剪好的安卓小系统中完成以下三部
内容:首先,实现与安卓大系统用户体验一致的系统UI;其次,实
小系统内对安卓大系统的恢复功能;最后,完成Recovery小
统的升级功能。具体流程如下所示:
剪裁,得到本方法所需的安卓小系统。
分的
现Recovery
系统内对安卓大系
(1)实现安卓小系统UI:
本方法利用安卓系统
的小系统Launcher
如图7所示。相关按
能,如工厂软件测试
强大的图形界面,设计操作简单且具有厂商特点
作为小系统上唯一运行的程序。一种可使用的布局
钮链接到相应的功能程序,可灵活的加入其它功
选项等。
(2)实现Recovery小系统内对安卓大系统的恢复功能:
编写recovery service程序,如上文步骤二,加入开机自启脚本,使其
运行于后台。Service利用linux自带的ioctl系统函数,操作mtd设备
(memory technology device内存技术设备)完成备份镜像向安卓大系统
分区的拷贝。在java层利用socket套接字实现进程间通信,调用
service,进而实现在安卓UI端实现安卓大系统恢复,功能详细流程
参考图2。系统启动时,计数器自加并启动大系统,如无法进入大系
统,判断计数器是否小于规定的重启次数n,如果小于,则重启重复
上述流程;如果计数器大于或等于规定的重启次数n,则将kernel_bak
分区的linux kernel备份镜像拷贝到大系统kernel分区,并进入小系统,
执行恢复单元,进而完成了对安卓大系统的恢复。
(3)完成Recovery小系统内对安卓大系统的升级功能:
为体现安卓更新快、功能多样性强的特点,本方法添加了实时性强、
与现有技术相同,优选实施例的升级功能因为其升级包源不同,可分
Usb存储设备升级具体流程如图8所示,用户在机顶盒上插入usb存
时,后台程序识别设备,并将其挂载到指定的挂载点。这时,
的设备进行检索,当升级包存在且符合升级条件时,弹出对话
户进一步确定升级将升级包写入对应mtd分区,则完成对安卓
储设备
对挂载
框,用
为本地升级和远端升级,本方法分别以usb存储设备升级和ip服务器
升级为例,详述多样的升级模式。
方法多样的大系统升级功能。升级流程如图2所示,系统上电后,检
测flag分区的标志位状态是否符合升级条件(即是否为升级标志位),
如符合,则进入Recovery小系统进行升级操作,如成功升级,则升级
标志位清零,进入大系统,否则重新进行升级流程;当不符合升级条
件时,进入安卓大系统,用户正常使用。
大系统的升级。本程序中java层与native层的进程间通信与
相同。 恢复程序
Ip服务器升级具体流程如图9所示,当机顶盒与远端服务器相连时,
作为客户端会向服务器发送请求,进行连接,当连接成功后,
务器镜像源,当升级包存在且符合升级条件时,弹出对话框用
步确定升级将升级包写入对应的mtd分区,则完成对安卓大系
级。本流程中进程间通信同样利用socket套接字。
机顶盒
检索服
户进一
统的升
通过进入大、小系统进行升级程序测试和模拟大系统软件系统损坏的情
并
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能
认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术
来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明
且性能或用途相同,都应当视为属于本发明的保护范围。
况测试恢复功能。可以发现本发明可以准确、高效的完成系统的恢复与升级,
带给用户一致的产品体验。
人员
显变型,而
2024年5月7日发(作者:归溪儿)
(19)中华人民共和国国家知识产权局
(12)发明专利说明书
(21)申请号 CN2.1
(22)申请日 2014.02.28
(71)申请人 深圳市佳创视讯技术股份有限公司
地址 518000 广东省深圳市福田区滨河路以南、沙嘴路以东中央西谷大厦,15层01-
08,16层04-06
(72)发明人 胡勇 陈鹏 刘睿 范元平 耿金河
(74)专利代理机构 深圳新创友知识产权代理有限公司
代理人 赵烨福
(51)
H04N21/443
G06F9/445
(10)申请公布号 CN 103826162 A
(43)申请公布日 2014.05.28
权利要求说明书 说明书 幅图
(54)发明名称
基于安卓的智能机顶盒的嵌入式系
统及其recovery方法
(57)摘要
本发明公开了基于安卓的智能机顶
盒的嵌入式系统及其recovery方法,所述
系统包括引导系统和用于提供用户应用所
需功能的主安卓系统,其特征在于:还包
括辅安卓系统,该辅安卓系统与所述主安
卓系统共用内核,但两者的根文件系统相
互独立并分别存储于智能机顶盒的存储设
备的不同物理分区;所述辅安卓系统包括
用于对所述主安卓系统进行系统恢复的恢
复单元;所述引导系统包括计数器、切换
模块和引导模块,用于在主安卓系统启动
失败达到额定次数时启动辅安卓系统对主
安卓系统进行恢复。本发明具有运行稳
定、恢复功能可靠的有益效果。
法律状态
法律状态公告日
法律状态信息
法律状态
权 利 要 求 说 明 书
1.一种基于安卓的智能机顶盒的嵌入式系统,包括引导系统和用于提供用
户应用所需功能的主安卓系统,其特征在于:还包括辅安卓系统,该辅安卓
与所述主安卓系统共用内核,但两者的根文件系统相互独立并
顶盒的存储设备的不同物理分区;所述辅安卓系
行系统恢复的恢复单元;
系统
分别存储于智能机
统包括用于对所述主安卓系统进
所述引导系统包括计数器、切换模块和引导模块;所述计数器用于累计所述
主安卓系统无法启动的次数;所述切换模块用于在所述主安卓系统无
述计数器的值小于额定值时控制所述引导模块引导重新
则,在所述主安卓系统无法启动且所述计
数器,控制所述引导模块引
主安卓系统进
法启动且所
启动所述主安卓系统,否
数器的值大于或等于额定值时,清空计
导启动所述辅安卓系统,并运行所述恢复单元对所述
行系统恢复;所述计数器在所述主安卓系统正常启动后清零。
2.根据权利要求1所述的基于安卓的智能机顶盒的嵌入式系统,其特征在于:
所述辅安卓系统还包括用于对所述主安卓系统进行系统升级的升级单元;
所述主安卓系统包括升级监听服务单元,用于在主安卓系统满足预定升级条
所述切换模块还用于在所述预定存储分区的标志位为升级标志位时控制所
件时下载升级包并修改预定存储分区的标志位为升级标志位;
进
述引导模块引导启动所述辅安卓系统并运行所述升级单元对所述主安卓系统
行升级。
3.根据权利要求1所述的基于安卓的智能机顶盒的嵌入式系统,其特征在于:
所述主安卓系统还包括主动升级单元,用于在接收到用户的主动升级
安卓系统进行升级。 指令时对主
4.根据权利要求1、2或3所述的基于安卓的智能机顶盒的嵌入式系统,其
特征在于:所述辅安卓系统是剪裁掉所述主安卓系统除系统恢复和/或系统
以外的其他功能模块而获得的。 升级
5.一种如权利要求1所述的基于安卓的智能机顶盒的嵌入式系统的recovery
S1、系统上电后进入引导系统,启动计数器进行自加;
S2、引导启动主安卓系统;
S3、当主安卓系统无法启动时,切换模块判断计数器的值是否小于额定值,
若是,控制引导模块引导重新启动主安卓系统,计数器自加;若否,
器,控制引导模块引导启动辅安卓系统,并运行恢复单
恢复;当主安卓系统正常启动时,计数器
方法,其特征在于,包括以下步骤:
则清空计数
元对主安卓系统进行系统
清零。
6.一种如权利要求5所述的方法,其特征在于:
主安卓系统启动后开启升级监听服务,在满足预定升级条件时,下载升级包,
所述步骤S1和S2之间还包括以下步骤:判断所示标志位是否为升级标志
位,若是,则启动辅安卓系统运行升级单元对主安卓系统进行升级,并清空
标志位;若否,则进入步骤S2。
并修改预定存储分区的标志位为升级标志位;
升级
7.一种如权利要求5所述的方法,其特征在于:
当主安卓系统启动后,在接收到用户的主动升级指令时,对主安卓系统进行
升级。
说 明 书
技术领域
本发明涉及嵌入式系统,尤其是涉及一种基于安卓的智能机顶盒的嵌入式系
背景技术
Android(安卓)系统是谷歌公司在2007年11月公布的基于Linux内核的
开源手机操作系统,是针对移动终端开发的一整套移动软件。谷歌成立了全
联盟组织,由众多手机制造商、电信运营商、芯片制造商共同组成,
Android系统,自此Android系统不断升级,功能也越来越完
HTC、摩托罗拉都推出了自己的Android手机,谷歌也
的谷歌TV,再加上香港华锋的e途M7导航仪、
Android系统大放异彩。谷歌公司正致力
平台,通过与全球各地的手机制造
品。发展到今天,很多厂商
范围已经不限于手机
掌上游
统及其recovery方法。
球性
共同开发
善。目前,三星、
推出了基于Android系统
MIPS的高清机顶盒,这些都让
于让Android系统不依赖于设备的硬件
商和移动运营商合作,开发并推广移动服务产
都推出了自己的Android产品,Android系统的使用
等移动设备,在各种嵌入式设备,如机顶盒、多媒体播放器、
戏机、导航仪等,上都得到广泛使用。
机顶盒作为经常使用的家用电器,必须拥有长时间稳定工作的能力,其中
recovery功能必不可少。Recovery功能在机顶盒系统软件出现故障时能够自
半自动的完成系统恢复,保证其正常工作,节约了售后服务支出的人
强了用户体验。
动或
力物力,增
在Android系统中,用组合键(依机型不同)即可进入recovery界面,在这个
界面用户可以直接用sd卡上的zip格式的rom升级或者备份自己安卓设备
的系 统。其使用原理与PC机上的GHOST软件一样,起到系统备份与还
时也提供内核升级,根文件系统刷入等功能。 原作用。同
传统的recovery功能过于简单,即便有与用户交互的界面也相对简陋,不符
合当前智能机顶盒用户对用户体验的需求;与此同时,手机Android系统的
recovery与大系统共用同一根文件系统,当存储设备上的根文件系统镜像被
时,无法进入recovery系统进行恢复。 破坏
发明内容
本发明所要解决的技术问题是:提供一种基于安卓的智能机顶盒的嵌入式系
本发明的技术问题通过下属手段予以解决:
一种基于安卓的智能机顶盒的嵌入式系统,包括引导系统和用于提供用户应
用所需功能的主安卓系统,其特征在于:还包括辅安卓系统,该辅安卓系统
述主安卓系统共用内核,但两者的根文件系统相互独立并分别存储于
的存储设备的不同物理分区;所述辅安卓系统包括用于对所述
统恢复的恢复单元;
统,用于保证机顶盒的稳定工作。
与所
智能机顶盒
主安卓系统进行系
所述引导系统包括计数器、切换模块和引导模块;所述计数器用于累计所述
主安卓系统无法启动的次数;所述切换模块用于在所述主安卓系统无法启动
述计数器的值小于额定值时控制所述引导模块引导重新启动所述主安
则,在所述主安卓系统无法启动且所述计数器的值大于或等于
数器,控制所述引导模块引导启动所述辅安卓系统,并
主安卓系统进行系统恢复;所述计数器在所述主
且所
卓系统,否
额定值时,清空计
运行所述恢复单元对所述
安卓系统正常启动后清零。
优选地:
所述辅安卓系统还包括用于对所述主安卓系统进行系统升级的升级单元;所
述主安卓系统包括升级监听服务单元,用于在主安卓系统满足预定升级条件
载升级包并修改预定存储分区的标志位为升级标志位;所述切换模块
述预定存储分区的标志位为升级标志位时控制所述引导模块引
卓系统并运行所述升级单元对所述主安卓系统进行升级。
时下
还用于在所
导启动所述辅安
所述主安卓系统还包括主动升级单元,用于在接收到用户的主动升级指令时
所述辅安卓系统是剪裁掉所述主安卓系统除系统恢复和/或系统升级以外的
一种所述的基于安卓的智能机顶盒的嵌入式系统的recovery方法,包括以下
S1、系统上电后进入引导系统,启动计数器进行自加;
S2、引导启动主安卓系统;
S3、当主安卓系统无法启动时,切换模块判断计数器的值是否小于额定值,
若是,控制引导模块引导重新启动主安卓系统,计数器自加;若否,则清空
器,控制引导模块引导启动辅安卓系统,并运行恢复单元对主安卓系
恢复;当主安卓系统正常启动时,计数器清零。
步骤:
其他功能模块而获得的。
对主安卓系统进行升级。
计数
统进行系统
优选地:
主安卓系统启动后开启升级监听服务,在满足预定升级条件时,下载升级包,
并修改预定存储分区的标志位为升级标志位;所述步骤S1和S2之间还包
下步骤:判断所示标志位是否为升级标志位,若是,则启动辅安卓系
单元对主安卓系统进行升级,并清空升级标志位;若否,则进
括以
统运行升级
入步骤S2。
当主安卓系统启动后,在接收到用户的主动升级指令时,对主安卓系统进行
与现有技术相比,本发明采用与主安卓系统相互独立的辅安卓系统提供主安
卓系统的恢复服务,由于两者根文件系统相互独立,辅安卓系统在主安卓系
溃的情况下仍然能够独立的完成主安卓系统的恢复工作;而且两个系
能够降低机顶盒存储设备的分区复杂度,节约存储空间。而且
盒正常工作时无需运行,因而其所处的存储器分区不易
复服务。进一步的,本发明的两个系统均采用安
高的用户友好性。
升级。
统崩
统共用内核
辅安卓系统在机顶
损坏,能够稳定的提供恢
卓系统,相比于现有技术具有更
由于机顶盒正常工作时,辅安卓系统不运行,优选方案中,在主安卓系统中
植入升级监听服务单元,并通过定制引导系统(英文名称为:boot loader)
通过标志位的判断切换主辅系统的启动控制,在机顶盒正常工作的同
实时升级功能。
使其
时实现系统
优选方案中,主安卓系统包括主动升级单元使得用户能够进行主动升级。
进一步的优选方案中,辅安卓系统是剪裁主安卓系统获得的,使得两个系统
相互独立却又同样具有很好的用户亲和性。
附图说明
图1是本发明一种基于安卓的智能电视机顶盒的嵌入式系统的框图;
图2是本发明一种基于安卓的智能电视机顶盒的Recovery方法流程图;
图3是本发明一种基于安卓的智能电视机顶盒的存储设备的分区示意图;
图4是本发明中升级监听服务程序的流程图;
图5是本发明中主动升级的升级流程图;
图6是本发明中安卓根文件系统剪裁示例GPS模块启动流程图;
图7是本发明中一种桌面UI布局实例;
图8是本发明中usb升级程序的流程图;
图9是本发明中ip升级程序客户端的流程图。
具体实施方式
下面对照附图并结合优选的实施方式对本发明作进一步说明。
安卓系统自带有Recovery系统,用于完成系统的升级、恢复等功能,但是
现有Android系统的自带的Recovery与Android系统共用同一根文件系统,
储设备上的根文件系统镜像被破坏时,无法进入Recovery系统进行
格角度说Android的Recovery并不能完全与主Android系统剥
当存
恢复。从严
离开,不是真正的 双系统。为此,如图1所示,本发明对基于安卓的智能
改进,采用辅安卓系统300(下文称安卓小系统)
卓大系统)的双系统框架,安卓大系统用
视听娱乐等功能,是所有基
的安卓大系统的基础
对安装大系统
统具有
机顶盒的嵌入式系统进行
和主安卓系统200(下文称安
于提供用户所需的功能,例如:看电视、
于安卓的智能机顶盒均具有的系统;本发明在机顶盒
上,增加具有恢复单元、升级单元的安卓小系统,用于实现
的恢复、升级功能,该安卓小系统与安卓大系统共用内核,但小系
独立的根文件系统,并且与安卓大系统的根文件系统分别存储于智能机顶
盒的存储设备的不同物理分区;然后修改嵌入式系统的引导系统100(英文
boot loader)以在系统启动时实现安卓大系统和安卓小系统之间的切
loader是在操作系统内核运行之前运行的一小段程序,可以初
立内存空间映射图,从而将系统的软硬件环境带到一个
调用操作系统内核准备好正确的环境。本发明的
实现前述初始化硬件设备、建立内存空间
数器和切换模块,切换模块用于控
统;标志位用于安卓大系统
启动的次数。其中,
名为
换。boot
始化硬件设备、建
合适的状态,以便为最终
引导系统包括引导功能模块用于
映射图等引导功能,本发明还增设有计
制引导模块引导启动安卓大系统或安卓小系
是否需要升级,计数器用于累计所述主安卓系统无法
切换模块的工作流程为:系统上电后计数器自加,然后判断
预定存储分区的标志位是否为升级标志位,如果是,则控制引导模块
卓小系统,并运行安卓小系统的升级单元对安卓大系统进行升
动安卓大系统;安卓大系统启动成功,则计数器清零,
则:计数器的值小于额定值时控制所述引导模块
器值大于或等于额定值时,清空计数器,
系统,并运行安卓小系统的恢复单
过安卓小系统进行升级,所
在主安卓系统满足预
升级标志位。
的主动
引导启动安
级,如果否,则启
如果安卓大系统启动失败
引导重新启动安卓大系统,计数
控制所述引导模块引导启动所述安卓小
元对所述安卓大系统进行系统恢复。为实现通
述安卓大系统中还需要添加升级监听服务单元,用于
定升级条件时下载升级包并修改所述预定分区的标志位为
优选的,安卓大系统中也可设置主动升级单元,用于在接收到用户
升级指令时对主安卓系统进行升级。本发明的安卓小系统优选是剪裁掉所
为进一步对本发明的技术方案进行阐述,下文提供更加具体的实施例对前述
本实施例的嵌入式系统的设计和制作主要包括:
一、定制boot loader引导系统。
智能机顶盒属于嵌入式设备的一种,因此其正常启动必须利用boot loader
引导系统。在嵌入式操作系统中,boot loader是在操作系统内核运行之前运
一小段程序。可以初始化硬件设备、建立内存空间映射图,从而将系
环境带到一个合适状态,以便为最终调用操作系统内核准备好
的boot loader工作状态下分为两个模式:启动模式和下
的标志位检测和系统切换功能,增添下载模式下
嵌入式系统的设计、制作、及系统Recovery方法进行说明。
述主安卓系统除系统恢复和/或系统升级以外的其他功能模块而获得的。
行的
统的软硬件
正确的环境。常用
载模式。为实现boot loader
的命令,并以之引导系统内核。
本方法的boot loader定制主要分为两个内容:首先,在目标机顶盒使用的boot
loader内部加入计数器、切换模块;另外,完成机顶盒存储设备的分区。各
内容的具体方法实施如下: 部分
(1)在bootloader中增加判断、切换命令:
由于在boot loader中要实现计数器、判断标志位以及切换系统启动参
能,增加boot loader的命令,并添加其为启动命令。下文以最
boot为例,介绍boot loader增加命令的方法。若要在U-boot
数等功
常用的U-
中加入自己需
要的命令,注意在三个部分添加或补充内容:
A.在common文件夹下添加相关的cmd_XXX.c文件:
其中XXX为索要添加的命令名称,其格式为:
U_BOOT_CMD
(
xxx,1,1,do_xxx,
"help information for short",
"help information in detail"
);
do_xxx(){}函数具体实现索要添加的功能。
B.在common文件夹下的Makefile中添加:
COBJS-$(CONFIG_CMD_MYCMD)+=cmd_XXX.o
C.在include/configs文件夹下的vpe_apollo.h(此处对应开发板名称)
中添加:
#define CONFIG_CMD_XXX
并使用make工具制作出镜像,烧录入机顶盒相关分区,即可在定
U-boot环境下使用所需的XXX命令。
添加完命令后,可实现boot loader对升级标志位的判断,对计数器的判
断,以及大、小系统间的切换而不影响boot loader的引导功能。
(2)完成存储设备分区
机顶盒平台结构相对复杂,通常选择功能强的boot loader对设备进行
这些boot loader通常都会向内核传输启动参数bootargs,bootargs
着分区信息。因此在定制机顶盒时,应当对机顶盒存储设备进
分区,这样有利于恢复、升级的高效进行。
本方法设计的机顶盒存储设备分区示意图如图3所示。下面按照图示
别详述各分区内容:
ader分区存放定制的boot loader镜像,是系统启动时首先调
储区块;
gs分区存放当前需引导系统的启动参数bootargs;
gs_big分区存放引导大系统所需的系统参数bootargs;
gs_small分区存放引导小系统所需的系统参数bootargs;
分区存放大、小安卓系统共用的完整功能的系统内核;
_bak分区存放出厂时内核备份,供系统恢复时使用;
制的
引导,
中包含
行有效
顺序分
用的存
分区存放升级标志位以及机顶盒基本信息,厂家可设计特有
结构,存放如出厂时间,机顶盒版本等目标机顶盒信息,
3所示,可进行进一步分区。
_small分区存放经过剪裁的安卓小系统根文件系统镜像。
_big分区存放大系统根文件系统相关镜像,分区示例如图3
可进行进一步分区,将Native层库文件、Native层应用程
应用程序分别单独分区,以便升级时对特定内容单独
提高安全性。可根据不同的升级要求进行
使用方便。
_bak分区存放根文件系统的出厂备份镜像,根据机顶盒自
设备容量以及升级包刷新的分区选择做出调整,与
使用。
的数据
分区示例如图
所示,
序和java层
升级,降低升级难度,
不同的分区规划,自由度高,
身存储
rootfs_big分区配合
完成以上两个内容,则完成boot loader的定制,为目标机顶盒实现通过安卓
步骤二:安卓大系统下添加恢复、升级相关程序
在安卓系统智能电视机顶盒平台上,安卓大系统提供用户应用所需的所有功
能,包括看电视,视听娱乐等安卓系统提供的优秀体验。为实现本实施例设
Recovery方法,需在正常运行的安卓大系统下添加以下两部分内容:
卓大系统下添加升级监听服务程序,开机自动运行;另外,在
主动升级程序,各部分内容的具体方法实施如下:
小系统对安卓大系统恢复、升级提供基础。
计的
首先,在安
安卓大系统下添加
(1)在安卓大系统下添加升级监听服务程序,开机自动运行:
本方法设计的Recovery系统框架可以实现实时、高效的升级。需要大
为使安卓小系统升级功能有效实现,升级监听服务程序需要在机顶盒
#!/system/bin/sh
echo"open update_check service"
cd/<update_check path>
./<update_check name>
其中<update_check path>为升级检测服务程序所在的根文件目录位
为了能够在开机时自动执行脚本文件,需要修改安卓大系统根文件目
service<update_check>/system/bin/sh/<update_check
录下的(启动脚本)中的启动配置,创建一个服务,服务名称
可任意配置,记为<update_check>。在最后添加:
置,<update_check name>为升级检测服务程序名。
开机时自动运行,其运行脚本为update_:
系统下进行升级信息监测、升级包下载以及升级标志位设置三方面的
支持。本实施例的升级监听服务程序的流程图如图4所示。在安卓大
系统下运行升级信息监测服务,根据厂商需要,对升级来源、升级版
本、升级类别进行检测,当符合升级条件时,设置升级标志位,并提
醒用户进行升级,同时,重启系统。
path>/update_
oneshot
这时,当用户启动安卓大系统时,系统会自动启动升级检测服务。
(2)在安卓大系统下添加主动升级程序
系统定制,本框架允许用户主动进
端和本地,用户提供本地升级源,
或从远端服务器上主动查找升级
本方法提供的主动升级程序利用JNI技术,JNI是Java Native Interface
具体主动程序流程如图5所示。用户从大系统进入主动升级界面,选
级的模式,这时,程序检测相关源与本地机顶盒设备的连接。
为实现灵活、个性化的机顶盒平台
行升级操作,升级包来源可分为远
如含有标准升级包的usb存储设备,
包,有选择的进行升级。
的缩写,中文译作java本地调用。使用JNI技术主要有两点好处:首
先,可以使用已经由其他语言编写完成的库文件;其次,实现由底层
语言编写的小型时间敏感代码。本方法中遇到的就是第二种情况,由
于安卓应用层不具备操作具体硬件的权限,本方法设计使用JNI完成
对mtd(请注明中文)设备的操作。
择要升
找到升级源后,对升级源处的升级包进行检测,检测该升级包
合本地机顶盒的升级条件。然后将符合条件的升级包下载到本
好的flash分区,并进行校验。确定升级包完好后,进行升级
利用JNI操作mtd设备,将升级包写入相关mtd分区。最后,
户升级完成,并实现重启。
是否符
地设定
操作,
提醒用
步骤三:安卓小系统定制
本方法提供的Recovery系统框架为机顶盒平台长时间、稳定运行提供了有力
保障,尽可能排除因存储设备出错导致的软件问题。将系统恢复功能放置于
的小系统内,保证了大系统崩溃时对目标机顶盒系统的顺利恢复。并
户体验的一致性,引入安卓小系统。
独立
为了保持用
安卓小系统优选需满足以下三个条件:稳定、流畅地运行在机顶盒平台上;
为满足上述三个条件,需对安卓系统进行深度定制。裁剪掉不需要的安卓系
统模块,如GPS、VOIP、TELEPHONE等。下面以GPS模块剪裁为例,讲
卓系统功能模块的裁剪方法。
支持本方法设计的Recovery系统框架相关程序;占用很小的存储空间。
述安
若要对安卓系统特定功能模块进行裁剪,需要对其启动流程进行分析,GPS
模块启动流程如图6所示。阅读安卓源码,可分析出GPS启动流程。按照
流程对gps逐级裁剪: 启动
(1)Framework层service裁剪
(2)Framework层location组件裁剪
(3)Framework层jni裁剪
(4)HAL层裁剪
具体操作流程如下所述:
A.由zygote启动流程可知,location service服务在systemserver中开启,故
注释安卓源码中位于<android
location>/gingerbread-
2.3.4/frameworks/base/services/ java/com/android/server目录下
内的相关代码,其中
所在根文件目录位置,关闭该服务。
<android location>为安卓源码
on Manager服务关闭后,将删除,该服
C.删除GpsLocationProvider及其依赖包,因为LocationManagerServer直接
D.修改jni层GPS源码,将
E.修改framework层location组件,删除<android
F.至此,GPS模块裁剪完毕,编译生成新的、、
替换原生的对应包,并将编译出来的libandroid_拷贝到机顶盒
/system/lib下,可以正常运行安卓系统。
location>/gingerbread-2.3.4/frameworks/base/下的location文件夹,编译
。这时,编译service出错。因此,修改调用Gps相关函数
的service,即,注释掉所有和location相关
的包并修改location相关函数调用。
com_android_server_location_中
intregister_android_server_location_GpsLocationProvider(JNIEnv*env)函数
放空,使其返回值为0,从而将jni与native层进行隔离(不能对该文件
直接进行删除是由于缺少该文件时,zygote启动init1失败)。编译后生成
库libandroid_。
调用GpsLocationProvider,故将其删除。编译安卓源码中的,
编译通过。
务已不再被调用,该文件位于<android
location>/gingerbread-2.3.4/frameworks/
base/services/java/com/android/server目录下。
根据上述条件,保留系统正常运行及恢复、升级相关模块,对安卓进行深度
步骤四:安卓小系统下添加Recovery系统相关程序
在本方法设计的基于安卓系统智能电视机顶盒Recovery系统框架中,安卓小
系统完成恢复和升级的功能。因此要在裁剪好的安卓小系统中完成以下三部
内容:首先,实现与安卓大系统用户体验一致的系统UI;其次,实
小系统内对安卓大系统的恢复功能;最后,完成Recovery小
统的升级功能。具体流程如下所示:
剪裁,得到本方法所需的安卓小系统。
分的
现Recovery
系统内对安卓大系
(1)实现安卓小系统UI:
本方法利用安卓系统
的小系统Launcher
如图7所示。相关按
能,如工厂软件测试
强大的图形界面,设计操作简单且具有厂商特点
作为小系统上唯一运行的程序。一种可使用的布局
钮链接到相应的功能程序,可灵活的加入其它功
选项等。
(2)实现Recovery小系统内对安卓大系统的恢复功能:
编写recovery service程序,如上文步骤二,加入开机自启脚本,使其
运行于后台。Service利用linux自带的ioctl系统函数,操作mtd设备
(memory technology device内存技术设备)完成备份镜像向安卓大系统
分区的拷贝。在java层利用socket套接字实现进程间通信,调用
service,进而实现在安卓UI端实现安卓大系统恢复,功能详细流程
参考图2。系统启动时,计数器自加并启动大系统,如无法进入大系
统,判断计数器是否小于规定的重启次数n,如果小于,则重启重复
上述流程;如果计数器大于或等于规定的重启次数n,则将kernel_bak
分区的linux kernel备份镜像拷贝到大系统kernel分区,并进入小系统,
执行恢复单元,进而完成了对安卓大系统的恢复。
(3)完成Recovery小系统内对安卓大系统的升级功能:
为体现安卓更新快、功能多样性强的特点,本方法添加了实时性强、
与现有技术相同,优选实施例的升级功能因为其升级包源不同,可分
Usb存储设备升级具体流程如图8所示,用户在机顶盒上插入usb存
时,后台程序识别设备,并将其挂载到指定的挂载点。这时,
的设备进行检索,当升级包存在且符合升级条件时,弹出对话
户进一步确定升级将升级包写入对应mtd分区,则完成对安卓
储设备
对挂载
框,用
为本地升级和远端升级,本方法分别以usb存储设备升级和ip服务器
升级为例,详述多样的升级模式。
方法多样的大系统升级功能。升级流程如图2所示,系统上电后,检
测flag分区的标志位状态是否符合升级条件(即是否为升级标志位),
如符合,则进入Recovery小系统进行升级操作,如成功升级,则升级
标志位清零,进入大系统,否则重新进行升级流程;当不符合升级条
件时,进入安卓大系统,用户正常使用。
大系统的升级。本程序中java层与native层的进程间通信与
相同。 恢复程序
Ip服务器升级具体流程如图9所示,当机顶盒与远端服务器相连时,
作为客户端会向服务器发送请求,进行连接,当连接成功后,
务器镜像源,当升级包存在且符合升级条件时,弹出对话框用
步确定升级将升级包写入对应的mtd分区,则完成对安卓大系
级。本流程中进程间通信同样利用socket套接字。
机顶盒
检索服
户进一
统的升
通过进入大、小系统进行升级程序测试和模拟大系统软件系统损坏的情
并
以上内容是结合具体的优选实施方式对本发明所作的进一步详细说明,不能
认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的技术
来说,在不脱离本发明构思的前提下,还可以做出若干等同替代或明
且性能或用途相同,都应当视为属于本发明的保护范围。
况测试恢复功能。可以发现本发明可以准确、高效的完成系统的恢复与升级,
带给用户一致的产品体验。
人员
显变型,而