[RK3288][Android6.0] 调试笔记 --- 增加操作系统开机时间

标签: delay init bootanimation system boot zygote
35人阅读 评论(0) 收藏 举报
分类:

Platform: RK3288
OS: Android 6.0
Kernel: 3.10.92

背景:
由于系统有模块需要和外部硬件做同步,因此要延长开机时间。


调试思路
由于系统只显示了开机动画,没有开机Logo。因此一开始的思路是把开机动画时间延长,然后把launcher或者zygote的启动时间也延迟。调试发现不可行,因为init进程之后的进程都是并发执行的,而很多进程的功能又是相互依赖的,如下图(图片来自参考链接博客):

这里写图片描述

因此把延时做在init进程之前了,由于这时开机动画是没有运行的,所以也要开启开机Logo的显示,避免黑屏太久。


解决方法:
init改动如下:

kris@eco:~/rk3288/system/core$ g df 6a8f21df1001917edafb978a427ae98c64a91490 4d69b8b74af30a2e0329eeb124d48a228c9b1800
diff --git a/init/init.cpp b/init/init.cpp
index e748a4f..3594279 100755
--- a/init/init.cpp
+++ b/init/init.cpp
@@ -215,6 +215,7 @@ void service_start(struct service *svc, const char *dynamic_args)
     // Running processes require no additional work --- if they're in the
     // process of exiting, we've ensured that they will immediately restart
     // on exit, unless they are ONESHOT.
+
     if (svc->flags & SVC_RUNNING) {
         return;
     }
@@ -1287,6 +1288,7 @@ static void rk_parse_cpu(void)


 int main(int argc, char** argv) {
+
     if (!strcmp(basename(argv[0]), "ueventd")) {
         return ueventd_main(argc, argv);
     }
@@ -1332,6 +1334,12 @@ int main(int argc, char** argv) {
     // to the outside world.
     open_devnull_stdio();
     klog_init();
+    if (!is_first_stage){
+        ERROR("\n");
+        ERROR("delay 10s wait for HiWiFi boot begin\n");
+        sleep(10);
+        ERROR("delay 10s wait for HiWiFi boot end\n");
+    }
     //klog_set_level(KLOG_NOTICE_LEVEL);

开机Logo的改动这里就不给出了,之前的文章有提及过。


参考:
Android 核心分析 之八——Android 启动过程详解

查看评论

[RK3288][Android6.0] 调试笔记 --- apk安装添加黑名单

Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 出于定制考虑,需要把系统一些不必要的apk移除,但是一个个找又太麻烦, 在不考虑存储空...
  • kris_fei
  • kris_fei
  • 2017-04-14 13:30:20
  • 1045

[RK3288][Android6.0] 调试笔记 --- 开机语言默认为简体中文

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92kris@:~/rk3288/build/target/product$ g df debf30...
  • kris_fei
  • kris_fei
  • 2017-07-25 16:47:07
  • 870

[RK3288][Android6.0] 调试笔记 --- home key触发启动launcher调用

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92过程比较简单,倒序查看。
  • kris_fei
  • kris_fei
  • 2017-08-22 14:36:04
  • 405

[RK3288][Android6.0] 调试笔记 --- 外网和内网同时使用

PC:Ubuntu 14.04 LTS 需求: 同时接了两个网段,一个内网,一个外网。 由于对网络不熟悉,之前都是同时只用一个网段,不方便。 今天同事帮我解决了这个问题,感谢他! 方法: ...
  • kris_fei
  • kris_fei
  • 2018-01-05 15:27:15
  • 328

[RK3288][Android6.0] 开机播放音乐流程小结

Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 main ->    bootanimation_main.cpp     new BootAn...
  • kris_fei
  • kris_fei
  • 2017-04-17 10:23:41
  • 1756

[RK3288][Android6.0] 移植笔记 --- RK818配置不正确导致无法开机调试

Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 现象: 在成功Download之后又遇到了无法开机的问题,kernel打印几条log就停住了. ...
  • kris_fei
  • kris_fei
  • 2016-11-17 18:54:35
  • 2662

[RK3288][Android6.0] 调试笔记 --- 开机动画时间的确定

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92之前有在 [RK3288][Android6.0] 调试笔记 — 开机动画支持播放mp4视频功能...
  • kris_fei
  • kris_fei
  • 2017-08-02 16:35:31
  • 705

人脸识别demo

  • 2017年09月07日 15:59
  • 67.68MB
  • 下载

[RK3288][Android6.0] 调试笔记 --- 开机设置默认出厂时间方法

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92需求: 默认刷机后的RTC模块没有设置的话时间在2000年,需要改成201701010000。...
  • kris_fei
  • kris_fei
  • 2017-06-28 09:43:39
  • 897

[RK3288][Android6.0] 调试笔记 --- 开机默认选择24小时制时间格式

Platform: Rockchip OS: Android 6.0 Kernel: 3.10.92 系统默认使用的是12小时制时间格式. 当触摸设置的24小时格式时,会有如下调用: ...
  • kris_fei
  • kris_fei
  • 2017-04-18 17:10:35
  • 1117
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 65万+
    积分: 1万+
    排名: 1349
    最新评论