高通如何优化FFBM启动时间


我们知道,FFBM(工厂快速启动模式)是用来提高生产效率,所以较少的启动时间,更多
高效。 这里有4种优化FFBM引导时间的方法。


1.当设备引导到FFBM时,跳过LK的5秒延迟。 (仅适用于Android M及更高版本)
int boot_linux_from_mmc(void)
{
...
#if VERIFIED_BOOT
if((boot_verify_get_state() == ORANGE) && (!boot_into_ffbm))
{
#if FBCON_DISPLAY_MSG
display_bootverify_menu(DISPLAY_MENU_ORANGE);
wait_for_users_action();
#else
dprintf(CRITICAL,
"Your device has been unlocked and can't be trusted.\nWait for 5 seconds before proceeding\n");
mdelay(5000);
#endif
}
#endif
...
}




2.移动servicemanager,surfaceflinger,fastmmi服务到init.qcom.factory.rc的头


rootdir\etc\init.qcom.factory.rc
on mmi
# ========================================================
# This is FFBM only settings.
# ========================================================
#mkdir for factory data files.
mkdir /cache/FTM_AP 0750 root root
#Start the following services needed for fftm
start servicemanager
start surfaceflinger
start fastmmi

start qcom-usb-sh
start logd
start debuggerd
start debuggerd64
start servicemanager//删掉
start surfaceflinger//删掉

start per_mgr
start qcom-sh
start ril-daemon
start config_bluetooth
start sensors
start media
start fastmmi//删掉
start wcnss-service
start qcom-post-boot
start rmt_storage
start qcom-c_main-sh
start irsc_util
start qcamerasvr
start qcomsysd
start ptt_ffbm
start tftp_server




3.首先创建draw_thread,因为创建输入线程将延迟1秒。




static int start_threads() {
int retval = -1;
MMI_ALOGI("start create threads");
#ifdef ANDROID
//retval = create_input_threads();
//if(retval < 0) {
// MMI_ALOGE("create input threads fail.");
// return -1;
//}

retval = pthread_create(&g_draw_tid, NULL, draw_thread, NULL);
if(retval < 0) {
MMI_ALOGE("create thread fail, error=%s", strerror(errno));
return -1;
}
MMI_ALOGD("create draw thread(thread id=%lu) for draw screen\n", g_draw_tid);
retval = create_input_threads();
if(retval < 0) {
MMI_ALOGE("create input threads fail.");
return -1;
}

#endif
....
}




4.确保使用用户构建,而不是userdebug / eng构建。

猜你喜欢

转载自blog.csdn.net/ldinvicible/article/details/60966333