zoukankan      html  css  js  c++  java
  • Android 开机问题知多少

    极力推荐文章:欢迎收藏
    Android 干货分享

    阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android

    本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:

    一、 如何抓取开机问题Log
    二、开机问题Log 分析流程
    三、 kernel Log 搜索关键字fs_mgr 初步分析定位
    四、uart log中搜索关键字 SBC,是否存在error/ fail/ assert
    五、开始时间长的问题分析方法

    一、 如何抓取开机问题Log

    当我们遇到开机问题时候,不同阶段,我们需要不同的Log分析,这样才可以快速方便的解决开机问题,如果没有Log,我们几乎很难分析解决开机问题。

    开机问题 抓取 Log 流程如下:
     如何抓取开机问题Log

    二、开机问题Log 分析流程

    通过不同阶段的Log,我们进行不同的重点分析。

    开机问题Log 分析流程如下:

    开机问题Log分析流程

    三、 kernel Log 搜索关键字 fs_mgr

    kernel Log 中搜索关键字 fs_mgr 初步分析定位分区问题。

    1. fs_mgr: __mount(source=/dev/block/dm-0,target=/system,type=ext4)=-1

    System分区mount失败debug方法

    • a.Kernel log中有emmc “I/O error” ,需要检查emmc相关供电,替换物料交叉实验
    • b.Log中没有I/O error, 回读system分区对比正常机器system.img看文件是否被破坏

    2.fs_mgr: __mount(source=/dev/block/dm-0,target=/data,type=ext4)=-1

    Data分区mount失败debug方法

    a.一般加密的情况/userdata分区会先出现 mount fail情况, 然后才解密节点/dev/block/dm-0 or dm-1 , target=/data mount成功 ,正常
    b.如果只有userdata mount 失败, 可能是分区数据毁损, 请先readback img, 然后手动进recovery modefactory reset 看能否恢复
    c.Readbackuserdata img 可以对比正常机器看是哪个文件毁损

    3. init: fs_mgr_mount_all returned an error

    Dm-verity配置错误引起user版本开不了机(eng版本正常)

    同步打开/kernel-3.18/arch/arm/configs/${project}_defconfig 中如下两个定义:

    		CONFIG_DM_VERITY=y
                     CONFIG_DM_VERITY_FEC=y
    

    4.fs_mgr: Error loading verity table (Invalid argument) 跳转至3

    四、uart log中搜索关键字 SBC,是否存在error/ fail/ assert

    五、开始时间长的问题分析方法

    1. MTK 平台开机时间保存的文件

    a.手机中(/proc/bootprof
    b.mobile Log中的bootprof文件。
    c. Kernel Log 中搜索关键字 BOOTPROF

    2. 开机时间耗时分解

    a.Preloader耗时(5~8s): preloader
    b.Lk耗时(4~6s): lk
    c.Kernel初始化完成(5~10s): Kernel_init_done
    d.开始播放动画30~35s: BOOT_Animation:START
    e.动画播放完毕: BOOT_Animation:END

    /proc/bootprof记录开机时间的文件举例如下:

    << /proc/bootprof >>:
    ----------------------------------------
    0	    BOOT PROF (unit:msec)
    ----------------------------------------
          // preloader LK
          1336        : preloader
          8331        : lk (Start->Show logo: 1382)
    ----------------------------------------
        ... ...
        // Kernel 初始化完成
        2902.540083 :    1-swapper/0       : Kernel_init_done
    	 
    	... ... 
        // 开机动画开始
        7958.560172 :  705-SurfaceFlinger: : BOOT_Animation:START
        ... ... 
    	// 开机动画播放完毕
        298996.885174 : 2097-Binder:463_5    : BOOT_Animation:END
        299055.478251 : 1083-ActivityManager : AP_Init:[service]:[com.android.bluetooth]:[com.android.bluetooth/.btservice.AdapterService]:pid:3854
        299079.525174 : OFF
    ----------------------------------------
    ================ END of FILE ===============
    

    /proc/bootprof  记录开机时间的文件

    至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    微信关注公众号:  程序员Android,领福利

  • 相关阅读:
    布署脚本
    HTTP请求报文支持的各种方法
    robot framework学习笔记之六—自动变量
    robot framework接口测试之二-四种常见的POST提交数据方式
    自定义过滤器-时间转化器
    自定义过滤器-有参数
    自定义过滤器-没有参数
    过滤器-orderBy
    过滤器-limitBy
    过滤器-filterBy
  • 原文地址:https://www.cnblogs.com/wangjie1990/p/11310923.html
Copyright © 2011-2022 走看看