MTK MMI启动过程分析(转载)

在取得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()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MTK 技术总结 一、环境与编译注意 在编译生成版本之前需要对环境目录进行修改, 将 \SUNNY26_05C.W06.16_F1_MMI\make 目录下的Option.mak 文件中 DIR_ARM = c:\Progra~1\ARM\RVCT DIR_ARM = c:\progra~1\arm\adsv1_2 ARM 环境的安装目录对应正确。否则make 有两个error,提示app 错误 当用make 或Res_Generator.bat 生成时,如果出现“找不到文件– SB_JWPSET.PBM” 则正确,否则错误。 一般使用sourceInsight 和make 配合使用,然后在debug 中运行。或用VC 编程序调试。 注意VC 模拟器和make 之间有差别 在#if #else 等地方可能有多条一样的语句需要添加。 已经有一模拟器不能再运行另一个模拟器,会出现问题 --------------------Configuration: PixtelMMI - Win32 Debug-------------------- Linking... LINK : fatal error LNK1168: cannot open Debug/PixtelMMI.exe for writing Error executing link.exe. PixtelMMI.exe - 1 error(s), 0 warning(s) 添加菜单最好使用代码比较工具用现成工程添加 Make 出错判断: build\SUNNY_F181\ MT6226M.log 连接错误 build\SUNNY_F181\log 编译错误 二、plutommi\Customer\CustResource\PLUTO_MMI\ref_list.txt 添加字符串资源 最后 STR_ID_TEST_MYTEST Undefined 20 MYTEST MYTES T 我的测试我的测试MYTEST MYTEST MYTEST 三、plutommi\mmi\Inc\ GlobalMenuItems.h 菜单ID //zdd begin 20050929 added for kkclub download MENU_SETTING_WALLPAPER_KKCLUB, MENU_SETTING_SS_KKCLUB, MENU_SETTING_POWER_ON_KKCLUB, MENU_SETTING_POWER_OFF_KKCLUB, MENU_TONE_SETUP_KKCLUB, //zdd end 20050929 added for kkclub download //zdd++ 20060414 for new kkclub MENU_KKCLUB_OPTION, MENU_KKCLUB_OPTION_BACK, MENU_KKCLUB_OPTION_CHANGEMENU,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值