基于android系统的充电器探测及上报方法

文档序号:9810258阅读:634来源:国知局
基于android系统的充电器探测及上报方法
【技术领域】
[0001]本发明涉及充电器探测技术领域,具体涉及基于android系统的充电器探测及上报方法。
【背景技术】
[0002]Android系统作为一款功能强大的移动式操作系统得到了国内外广大厂商和用户的青睐,其应用范围不断扩大,市场占有率持续提高。在android系统开发过程中,经常会碰到系统关机后,通过mini usb 口外接充电器无法正常进入充电模式显示充电界面的问题,尤其是在一些行业用嵌入式处理器平台上移植androicM.0以下版本系统时,这个问题尤为关出。

【发明内容】

[0003]鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的基于android系统的充电器探测及上报方法,解决android系统关机后外接电源情况下不能正常进入充电模式的问题。
[0004]依据本发明的一个方面,提供了基于android系统的充电器探测及上报方法,包括嵌入式处理器和充电芯片,外部电源通过所述充电芯片同电池建立充电关系,所述android系统包括系统引导程序bootloader、内核kernel和android文件系统,包括以下步骤:
[0005]在所述系统引导程序bootloader中获取充电器状态信息;
[0006]把探测到的充电器状态信息传递给所述内核kernel ;
[0007]所述内核kernel启动后加载所述android系统;
[0008]在所述an droid系统启动过程中通过读取所述内核kerne I的启动参数,获取所述充电器相关状态信息,并且将所述状态信息作为系统属性值保存起来;
[0009]通过对所述系统属性值的判断确定进入正常工作模式还是充电模式。
[0010]进一步地,所述android 文件系统包括 uramdisk.1mg 和 android_root.1mg。
[0011]进一步地,所述android系统的启动顺序依次为所述系统引导程序bootloader、所述内核kernel和所述android文件系统。
[0012]进一步地,所述把探测到的充电器状态信息传递给所述内核kernel步骤中,是以bootargs启动参数的形式传递给所述内核kernel的。
[0013]更进一步地,所述充电芯片的VINSENSE和CHRG两个管脚分别跟所述嵌入式处理器的GP101和GP102连接在一起。
[0014]更进一步地,在所述系统引导程序bootloader中获取充电器状态信息步骤中,具体包括:
[0015]在所述系统引导程序bootloader中初始化所述GP101和GP102,并将其设置为输入状态;
[0016]读取所述GP1l和GP102的电平值;
[0017]如果GP1l为高电平,外部充电器插入;
[0018]如果同时GP102为低电平,夕卜部充电器正在给电池充电,设置环境变量androidboot.mode = charger ;反之,设置所述环境变量参数为空。
[0019]更进一步地,所述把探测到的充电器状态信息传递给所述内核kernel步骤,具体包括:借助所述系统引导程序bootloader中的bootargs向内核传递参数,将androidboot.mode的信息传递给所述内核kernel的cmdline作为内核参数。
[0020]更进一步地,在所述android系统启动过程中通过读取所述内核kernel的启动参数,获取所述充电器相关状态信息,并且将所述状态信息作为系统属性值保存起来的步骤中,具体包括:
[0021]Uramdis.1mg挂载后在所述android系统的第一个进程init执行过程中读取所述内核kernel的启动参数并进行解析;
[0022]将androidboot.mode = charger的信息解析后保存到bootmode变量中。
[0023]更进一步地,所述通过对所述系统属性值的判断确定进入正常工作模式还是充电模式步骤,具体包括:
[0024]如果bootmode的值为charger,则所述android系统进入充电模式并显示充电界面;
[0025]反之,所述android系统进入正常启动模式。
[0026]本发明充分利用android系统拥有的强大功能和自身具有的丰富系统资源,解决了 android系统关机后外接电源情况下不能正常进入充电模式的问题,简单易于实现,性能可靠,成本低,性价比高。
[0027]上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的【具体实施方式】。
【附图说明】
[0028]通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。说明书附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。显而易见地,下面描述的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
[0029]图1示出了根据本发明实施例一的基于android系统的充电器探测及上报方法整体框架图;
[0030]图2示出了根据本发明实施例二的基于android系统的充电器探测及上报方法流程图;
[0031]图3示出了根据本发明实施例三的基于android系统的充电器探测及上报方法流程图。
[0032]图4示出了根据本发明实施例四的基于android系统的充电器探测及上报装置示意图。
【具体实施方式】
[0033]下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
[0034]需要说明的是,在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技术人员应可以理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明书及权利要求并不以名词的差异来作为区分组件的方式,而是以组件在功能上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包含”或“包括”为一开放式用语,故应解释成“包含但不限定于”。说明书及权利要求中提及的“GP101”和“GP102”中的“I”和“2”只是为了说明的便利,实质上可以是嵌入式处理器中的任意通用GP1接口,并没有什么不同,也可以用“第一 GP10” “第二 GP10”来称呼。说明书后续描述为实施本发明的较佳实施方式,然所述描述乃以说明书的一般原则为目的,并非用以限定本发明的范围。本发明的保护范围当视所附权利要求所界定者为准。
[0035]为了解决上述android系统关机后外接电源情况下不能正常进入充电模式的问题,本发明提出了基于android系统的充电器探测及上报方法。
[0036]为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个附图并不构成对本发明实施例的限定。
[0037]实施例一、基于android系统的充电器探测及上报方法的整体框架。
[0038]下面结合图1对本实施例一的方法进行详细说明。
[0039]图1为本发明实施例一的基于android系统的充电器探测及上报方法整体框架图,如图1所示,本发明实施例一个完整的android系统通常包括系统引导程序bootloader、内核kernel和android文件系统三个部分,其中所述android文件系统包括uramdisk.1mg 和 android_root.1mg,启动顺序依次为:
[0040]步骤SlOl、所述系统引导程序bootloader ;
[0041]步骤S102、所述内核kernel ;
[0042]步骤S103、所述 android 文件系统中的 uramdisk.1mg ;
[0043]步骤S104、所述 android 文件系统中的 android_root.1mg。
[0044]实施例二、基于android系统的充电器探测及上报方法。
[0045]下面结合图2对本实施例的方法进行详细说明。
[0046]图2为本发明实施例二的基于android系统的充电器探测及上报方法的流程示意图,如图2所示,本实施例的方法包括:嵌入式处理器和充电芯片,外部电源通过所述充电芯片同电池建立充电关系,所述android系统包括系统引导程序bootloader、内核kernel和android文件系统。具体的,所述android文件系统包括uramdisk.1mg和android_root.1mg ο所述android系统的启动顺序依次为所述系统引导程序boot loader、所述内核kernel和所述android文件系统。所述充电芯片的VINSENSE和CHRG两个管脚分别跟所述嵌入式处理器的GP101和GP102连接在一起。
[0047]在嵌入式操作系统中,bootloader是在操作系统内核运行之前运行的,可以初始化硬件设备、建立内存空间映射图,从而将系统的软硬件环境带到一个合适状态,以便为最终调用操作系统内核准备好正确的环境。在嵌入式系统中,通常并没有像B1S(BasicInput Output System,基本输入输出系统)那样的固件程序(注,有的嵌入式CPU也会内嵌一段短小的启动程序),因此整个系统的加载启动任务就完全由bootloader来完成。
[0048]本实施例的方法包括以下步骤:
[0049]步骤S201、在所述系统引导程序bootloader中获取充电器状态信息。
[0050]具体的,在所述系统引导程序bootloader中初始化所述GP101和GP102,并将其设置为输入状态;
[0051 ] 读取所述GP101和GP102的电平值;
[0052]如果GP101为高电平,外部充电器插入;
[0053]如果同时GP102为低电平,外部充电器正在给电池充电,设置环境变量androidboot.mode = charger ;反之,设置所述环境变量参数为空。
[0054]步骤S202、把探测到的充电器状态信息传递给所述内核kernel。
[0055]具体的,上述步骤S202中是以bootargs启动参数的形式传递给所述内核kernel的。
[0056]具体的,借助所述系统引导程序bootloader中的bootargs向内核传递参数,将androidboot.mode的信息传递给所述内核kernel的cmdline作为内核参数。
[0057]下面举一个具体的bootloader中代码的例子,通过探测充电芯片充电管脚状态,如果管脚为高电平,则充电器插入正在充电,设置bootargs,添加androidboot.mode参数,否则参数为空。
[0058]charger_gp1_initO ;val = charger_mode_detect();
[0059]if(val)
[0060]setenv("bootargs", "androidboot.mode = charger");
[0061]else
[0062]setenv("bootargs","");
[0063]步骤S203、所述内核kernel启动后加载所述android系统。
[0064]步骤S204、在所述android系统启动过程中通过读取所述内核kernel的启动参数,获取所述充电器相关状态信息,并且将所述状态信息作为系统属性值保存起来。
[0065]具体的,所述uramdis.1mg挂载后在所述android系统的第一个进程init执行过程中读取所述内核kernel的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1