android 电池(二):android关机充电流程、充电画面显示

关键词:android电池关机充电androidboot.mode charger 关机充电 充电画面显示
平台信息:
内核:linux2.6/linux3.0
系统:android/android4.0
平台:S5PV310(samsungexynos 4210)

电池的基本原理;

android关机充电流程、充电画面显示;

Android开机充电流程,电池电量、低电信息是怎么处理的;

上一篇我们讲了锂电池的充放电的流程和电池的一些特性,这一节我们重点说一下android关机充电是怎么、充电画面显示是怎么实现的,这个在工作中也比较有用,我们开始做这一块的时候也走了不少的弯路。我记得我们做adnroid2.3的时候,关机状态和充电logo显示是在uboot中做的。应该是有两种做法,回头我再看下uboot中做画面显示那一块是怎么做的,这一节我们重点说系统中的充电logo显示。

一、android正常开机流程、关机充电流程

在写这篇文章之前我们先看两个流程:正常开机流程,关机充电系统启动流程

1、正常开机流程,按开机键。

可大致分成三部分

(1)、OS_level:UBOOT、kenrel、init这三步完成系统启动;

(2)、Android_level:这部分完成android部的初始化;

(3)、Home Screen:这部分就是我们看到的launcher部分。


2、关机充电系统启动流程

与前面相比,这个流程只走到init这一部分,就没有往后走了,这部分我们会在后面的代码中分析。


二、关机充电逻辑硬件逻辑

1、插入DC,charger IC从硬件上唤醒系统,相当于长按开机键开机。


下面这部分是charger IC连接系统的控制部分。


三、软件逻辑。

DC插入,其实相当于关机状态下“按开机键”开机。第一步要走UBOOT、kernel 、android init这一流程。

1、UBOOT

UBOOT启动代码我们不在这里详细分析,这里我们只要注意二个问题:

a:如何判断是DC插入;

b:设定setenv("bootargs", "androidboot.mode=charger"),androidboot.mode这个参数相当重要,这个参数决定系统是正常启动、还是关机充电状态。

Uboot/board/samsung/smdk4212/smkd4212.c

int board_late_init (void)
{
	int keystate = 0;
	printf("check start mode\n");
  if ((*(int *)0x10020800==0x19721212) || (*(int *)0x10020804==0x19721212)
|| (*(int *)0x10020808==0x19721212)) //(1)、检查是否有DC插入;
{
    setenv ("bootargs", "");//(2)、没有DC插入;
  } else  {//DC插入
		int tmp=*(int *)0x11000c08;
    *(int *)0x10020800=*(int *)0x10020804=0x19721212;
    *(int *)0x11000c08=(tmp&(~0xc000))|0xc000;
	udelay(10000);
	if ((*(int *)0x11000c04 & 0x80)!=0x80 && INF_REG4_REG != 0xf) {
		setenv ("bootargs", "androidboot.mode=charger");//(3)、设定bootargs为charger状态
		printf("charger mode\n");
	} else {
		setenv ("bootargs", "");
	}
	*(int *)0x11000c08=tmp;
  }
#ifdef CONFIG_CPU_EXYNOS4X12
	int charge_status=CheckBatteryLow();//(4)、检查电池电量;
	keystate=board_key_check();//(5)、检查按键状态;
	// fuse bootloader
	if(second_boot_info != 0) {
		boot_symbol=1;
		INF_REG2_REG =0x8;
		run_command(CONFIG_BOOTCMD_FUSE_BOOTLOADER, NULL);
	}
	if((INF_REG4_REG == 0xd)) {
		// reboot default
		char buf[10];
		sprintf(buf, "%d", CONFIG_BOOTDELAY);
		setenv ("bootdelay", buf);
		setenv ("reserved", NULL);
		sav
  • 2
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
安卓设备的充电流程一般包括以下步骤: 1. 插入充电器并连接电源 当用户将充电器插入安卓设备并连接电源时,系统会检测到电源连接事件,然后启动相应的服务和线程来处理充电流程。 2. 开始充电流程 系统会根据充电器的类型和电池的状态,选择合适的充电模式,并开始充电流程。在此过程中,系统会监测电池的状态,包括电量、温度、电压等,并动态调整充电电流和电压等参数,以保证充电过程的安全和稳定。 3. 监测充电状态 系统会持续监测充电状态,包括电池电量、充电电流、充电电压等,并将这些信息通知给用户和应用程序。用户可以通过系统设置界面或者充电图标来查看电池电量和充电状态,应用程序可以通过BatteryManager类获取电池状态信息。 4. 充电完成 当电池充满电时,系统会停止充电流程,并通知用户和应用程序。通常情况下,系统会将充电电流降低到一个很小的值,以防止电池过充或者损坏。 5. 断开电源 当用户拔出充电器或者电源故障时,系统会检测到电源断开事件,并停止充电流程。此时,系统会根据电池的状态和充电模式,选择合适的电池管理策略,例如保持当前电量、降低电量等级、关闭不必要的应用程序等。 总的来说,安卓设备的充电流程是一个复杂的系统过程,需要多个服务和线程协同工作,以保证充电过程的安全、稳定和高效。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值