MTK MMI启动过程分析
来源:互联网 发布:淘宝回收手机靠谱么 编辑:程序博客网 时间:2024/05/16 17:08
在取得MTK的06B版本代码后,开始进行了艰苦的代码分析工作,我的工作是把一个手机的MTK的代码移植到另外一个手机上,在改了custom部分代码后,系统虽然可以正常启动,但LCD是白屏,没有任何界面显示。
由于没有仿真器可以使用,只能通过阅读代码和调试进行,尤其是和硬件有关的信息也需要更多功夫去理解。略去硬件平台的定制代码,因为那是custom里所定义的一些驱动初始化的工作,最复杂的部分还是在plutommi这个代码目录里。
MMI启动过程:
系统在TaskInit.c里创建了MMI的主要任务表:
const osl_task_create_info task_create_tbl[TOTAL_TASKS] =
{
{"DUM1 TASK", "DUM1 Q", 127, 128, 0, Dummy_task},
{"DUM2 TASK", "DUM2 Q", 127, 128, MAX_PRT_NODES, Dummy_task},
{"MMI TASK", "MMI Q", 127, 4096, MAX_PRT_NODES, MMI_task},
{"DUM3 TASK", "DUM3 Q", 127, 128, 0, Dummy_task},
};
接着发生了如下的函数调用过程:
1. plutommi/mmi/Framework/Tasks/TasksSrc/MMITask.c->MMI_task,整个界面是由一个任务函数启动,MMI_Task函数不断介绍ps层的消息,在收到MSG_ID_MMI_EQ_POWER_ON_IND消息后,如果是键盘开机会调用mmi_bootup_entry_disk_check(),这个调用最终会做一系列的程序初始化工作。。
2. plutommi/mmi/MiscFramework/MiscFrameworkSrc/BootupApp.c->mmi_bootup_entry_disk_check,在系统上电后执行这个函数。
3. plutommi/mmi/MiscFramework/MiscFrameworkSrc/BootupApp.c ->mmi_frm_power_on_init_procedure
4. plutommi/mmi/Framework/Tasks/TasksSrc/MMITask.c->InitializeAll,嘿嘿,又绕回来到这个模块来了。这个函数实现了很多平台初始化的工作,我加了函数让系统直接进入工程模式(可能有其它更好的办法。)
接着是应用程序初始化:
在Bootup App过程里,首先是做disk的检查,然后接着开始检查飞行模式,紧接着是启动动画显示,接着发生如下过程(可以在BootupApp.c从上看到下):
1.plutommi/mmi/MiscFramework/MiscFrameworkSrc/BootupApp.c->mmi_bootup_entry_nand_check_query()
2. plutommi/mmi/MiscFramework/MiscFrameworkSrc/SimDetection.c->PowerOnBatteryIndicationComplete()
3. plutommi/mmi/MiscFramework/MiscFrameworkSrc/BootupApp.c->mmi_bootup_exit_nand_check_query()
4. plutommi/mmi/MiscFramework/MiscFrameworkSrc/BootupApp.c->mmi_bootup_entry_security_check()
5. plutommi/mmi/MiscFramework/MiscFrameworkSrc/SimDetection.c->PowerOnBatteryIndicationCompletePhase2()
6. SimDetection module:
plutommi/mmi/MiscFramework/MiscFrameworkSrc/SimDetection.c->EntryScrEnterPhoneLock(), phone lock 屏幕入口
plutommi/mmi/MiscFramework/MiscFrameworkSrc/SimDetection.c->SimPasswdReqResponse(void *inMsg) ,密码请求响应被调用
plutommi/mmi/MiscFramework/MiscFrameworkSrc/SimDetection.c->mmi_ready_to_idle_screen_ind_hdlr(void *msg),即将进入idle screen时调用处理。
plutommi/mmi/MiscFramework/MiscFrameworkSrc/SimDetection.c->mmi_bootup_entry_security_check(),启动时的安全检查。
7. plutommi/mmi/IdleScreen/IdleScreenSrc/MiscFunctions.c->goto_opening_screen()
8. plutommi/mmi/Framework/Tasks/TasksSrc/MMITask.c->InitAllApplications()
- MTK MMI启动过程分析
- MTK MMI启动过程分析
- MTK MMI启动过程分析(转载)
- MMI启动过程:
- MTK MMI framework
- MTK MMI一些总结
- 引用 MTK MMI 简介:
- MTK MMI 简介:
- MTK MMI event 小结
- mtk mmi开机流程
- MTK MMI Cache
- MTK MMI event
- mtk mmi 常用
- MTK mmi应用程序本质
- MTK bootloader 启动过程
- [Feature phone系列]从MMI看手机启动过程
- MTK MMI添加菜单实例
- MTK MMI event 小结 1
- 减少缓存冲突,提高程序执行速度
- class file has wrong version 49.0, should be 48.0
- java多线程例子
- php中的当前网址和根路径
- JDK ThreadLocal实例
- MTK MMI启动过程分析
- 职责链模式ChainOfResponsibility
- 结构体(c语言基础)
- 委托
- 《深入理解计算机系统》3.38题解——缓冲区溢出攻击实例(续1)
- Java按指定行数读取文件
- S3C2410存储器扩展(2)——NorFlash
- 2009.12.27 OA项目工作报告
- 《深入理解计算机系统》3.38题解——缓冲区溢出攻击实例(续2)