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 beginn");
+ sleep(10);
+ ERROR("delay 10s wait for HiWiFi boot endn");
+ }
//klog_set_level(KLOG_NOTICE_LEVEL);
开机Logo的改动这里就不给出了,之前的文章有提及过。
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 beginn");
+ sleep(10);
+ ERROR("delay 10s wait for HiWiFi boot endn");
+ }
//klog_set_level(KLOG_NOTICE_LEVEL);
开机Logo的改动这里就不给出了,之前的文章有提及过。
举报