此文章适用于所有的Android设备开机优化。
开机优化主要有以下几个部分:
1. bootloader优化
2. Kernel优化
3. Android启动优化
准备
统计开机时间
一般根据串口打印的信息里面的时间标签来统计开机时间,虽然不是很准确,却基本有效。
bootloader优化
一般来说,bootloader的时间是比较短的,可以优化的工作也不多。但是有一个普遍可以优化的选项,就是Android AVB.
AVB(Android Verify Boot) 如果在你的项目中不需要使用,可以关闭。
AVB 的使能Config CONFIG_ANDROID_AVB=y CONFIG_AVB_LIBAVB=y CONFIG_AVB_LIBAVB_AB=y CONFIG_AVB_LIBAVB_ATX=y CONFIG_AVB_LIBAVB_USER=y
kernel优化
首先,打开启动debug,获取驱动加载的时间,在bootargs中添加
initcall_debug loglevel=8
根据日志信息,优化驱动。一些确定不使用的驱动,直接在config中关闭。
如果是通过设备树来兼容硬件的,在dts上disable
如果某些驱动需要,但是又加载时间太长,考虑做成ko的方式
Android启动优化
- 使用bootchart工具,分析开机过程中的行为,查看是否有需要优化的地方。
其他不正经的优化
- 在init.rc中,根据系统启动的阶段,做一些CPU和DDR做一些定频的工作。
on early-init dosomething #给CPU和DDR设置超频,让速度飞起来 on property:sys.boot_completed=1 dosomething #启动完成了,回到发飙前的状态
- 在init过程中,肯定很多的IO操作,那么,也可以先让IO效率彪一会儿车。
on late-fs ... on property:sys.boot_completed=1 ...