android开机充电logo的显示方法

本文介绍了如何通过修改U-Boot和Kernel代码实现Android设备在充电时显示特定Logo的方法。涉及U-Boot设置启动参数、Kernel响应升级电池信息及System初始化过程中判断是否进入充电模式等关键技术点。
摘要由CSDN通过智能技术生成

android开机充电logo的显示方法

1,以下代码在uboot中

 bool firstBoot = (getenv("battery_updated")==NULL);   
 if ((DC_in == 1) && (INF_REG4_REG != 0xf)) {
   setenv ("bootargs", "androidboot.mode=charger");     开机执行这句android就会进入充电画面
   printf("charger mode\n");
      } else {
   setenv ("bootargs", "");

 if ((DC_in == 1) && (INF_REG4_REG != 0xf)) {
   setenv ("bootargs", "androidboot.mode=charger need_update_battery=true");
   printf("charger mode\n");
      } else {
      setenv ("bootargs", "need_update_battery=true");
      }
     setenv ("battery_updated","true");

 

2,以下代码在kernel

  /* if first booting, update */
  if(strstr(saved_command_line,"need_update_battery=true")!=NULL){
  bq27410_upgrade(di);
 }

 

3,以下代码在/system/core/init/init.c

property_init_action(int nargs, char **args)
{
    bool load_defaults = true;

    INFO("property init\n");
    if (!strcmp(bootmode, "charger"))       在这里会读取uboot传递的androidboot.mode
        load_defaults = false;
    property_init(load_defaults);
    return 0;
}

 

 


 for(;;) {
        int nr, i, timeout = -1;

        int fd;
        static int flag=0;
        char *fdp;
        if ((flag++)>150) {
           if ((fd = open ("/dev/mem", O_RDWR | O_SYNC)) > 0) {
               if ((fdp = (char *) mmap (0, 0x1000, PROT_READ | PROT_WRITE,
                       MAP_SHARED, fd, base_addr)) != MAP_FAILED) {
                   if (*(int *)(fdp+INFORM0)==warm_boot)
                           *(int *)(fdp+INFORM0)=0;
                   if (*(int *)(fdp+INFORM1)==warm_boot)
                           *(int *)(fdp+INFORM1)=0;
                   if (*(int *)(fdp+INFORM2)==warm_boot)
                           *(int *)(fdp+INFORM2)=0;
                   munmap (fdp, 0x1000);
               }
           close(fd);
           }
        }

}
 

在device/***/device.mk中增加

PRODUCT_PACKAGES  +=

                      charger  /

                      charger_res_images

 

在device/***/init*.rc中增加

service  batteryserver  charger

             class  charger

on  charger

             class_start  charger

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值