MTK开机流程—应用部分

原创 2009年09月30日 17:24:00

 

 

 

 

修改人

版本号

变更说明

修改日期

夏绍华

V1.0

Init

 

 

 

 

 

 

 

 

 

 

MTK开机流程应用部分

1     说明:... 3

2     应用启动第一阶段系统资源配置:... 3

3     应用启动第二阶段等待开机事件:... 4

4     应用启动第三阶段开机动画:... 7

5     应用启动第四阶段进入待机界面:... 8

 


 

1          说明:

(适用于MTK6223平台)

在分析开机流程的过程中,我们首先需要学习平台的相关文档,并阅读代码,有初步的了解后,再搭建调试环境,通过跟踪和打印LOG来分析验证实际的开机流程。由于目前的条件限制以及平台存在的一些缺陷,目前我调试的方法是结合串口打印和模拟器打印、跟踪的方法来调试的。

因为开机流程跟开机触发原因、卡状态、网络状态、本机设置以及用户交互都有关系,流程各不相同,本文档只分析其中一种过程,在这个过程下学会分析问题和解决问题的方法之后,其他的流程可按此方法分析得来。

 

 

2          应用启动第一阶段系统资源配置

应用启动的第一阶段是创建系统环境,对TARGET开发板来说,就是启动底层硬件、配置MCU、配置外围器件,创建操作系统、配置系统资源、创建各种任务等;对模拟器了说,主要是创建工作环境来模拟开发板,并提供一套GUI来提供输入输出,和用户交互。下图是模拟器在启动但没开机的时候的串口信息,目标板的信息与之相似:

     顺便提供一套模拟器的图片做参考:

       

 

3          应用启动第二阶段等待开机事件

 

下图是在添加打印语句后在模拟器上得到的打印信息:

由于模拟器是无法完全模拟TARGET上的硬件信息和嵌入式系统的BOOT过程、操作系统创建、任务加载过程的,所以我们目前暂时先不重点关注这个部分,本文档的目的也是在模拟器能完成的应用启动流程上进行说明和介绍。

从上图我们可以看到,在应用启动的过程中,先是创建 mmi_task(),然后进入MMI_task()功能实体,进行MMI应用的初始化,并进入无限循环等待事件处理。在最开始的时候,是等待开机事件,进行应用部分的开机。

开机事件是MSG_ID_MMI_EQ_POWER_ON_IND,在MMI_task收到这个事件后,进入函数分支:

……

switch (p->poweron_mode)

       case POWER_ON_KEYPAD:

              ……

              mmi_bootup_entry_disk_check();                   

                                         

 

然后再逐层调用:

mmi_bootup_exit_disk_check()

mmi_bootup_entry_flight_mode_query()  

 

FlightModeCheckBeforeAnimation()

MTPNP_AD_Bootup()

(这个调用过程到这里就结束了,这个函数是底层封装函数,通过反汇编以及函数调用栈,我们可以看到程序的运行状态。)

 

   我们可以看到,这个封装函数调用了MTPNP_PFAL_Master_Startup_Normal(),再看MTPNP_PFAL_Master_Startup_Normal()的反汇编函数,如下:

 

调用了PowerOnNormalMode()。

 

所以程序能够继续运行下去,整个开机过程的栈结构如下:

 

 

4          应用启动第三阶段开机动画

PowerOnNormalMode()的执行过程如下:

 

具体的实现我们可以参照代码来阅读。可以看到此时手机还处在播放开机动画的过程当中,调用SimPasswdReqResponse()进入其中的一个函数分支。

到开机动画播放完后,会有一个定时器事件上面给MMI TASK,进行相关的处理后,退出动画播放,再调用SimPasswdReqResponse()进入它的另一个分支,下面是动画播放完后的函数调用关系。

    最后调用到mmi_ready_to_idle_screen_ind(),该函数是MOD_MMI任务自己给自己发一个MSG_ID_MMI_READY_TO_IDLE_SCREEN_IND消息到外部消息队列,并设置好该事件的处理函数mmi_ready_to_idle_screen_ind_hdlr(),本轮消息处理调用过程结束。

 

5          应用启动第四阶段进入待机界面

MMI_task主循环里收到事件MSG_ID_MMI_READY_TO_IDLE_SCREEN_IND,根据注册的事件处理函数,调用mmi_ready_to_idle_screen_ind_hdlr(),具体的处理过程见下面的函数调用栈:

 

 

  下面是该过程的串口打印信息,注意看函数的执行过程,与调用栈的阅读方式是相反的。到这个过程执行完成,就进入了待机界面了,我们的应用开机过程就基本完成了。

 

 

 

 

 

版权声明:本文为博主原创文章,未经博主允许不得转载。

MTK手机正常开机流程以及开机常见故障诊断

MTK平台正常开机,闹钟开机,充电开机,系统启动涉及文件,以及故障分析
  • wangglong
  • wangglong
  • 2015年09月18日 17:06
  • 3105

MTK (android 开机)Android开机流程解析

//平台相关早期初始化,如获取板级信息,初始化时钟、中断、定时器等 /*       平台硬件早期初始化,包括irq、timer,wdt,uart,led,pmic(电压管理芯片),i2c,gp...
  • ffmxnjm
  • ffmxnjm
  • 2017年05月08日 09:19
  • 863

MTK开机详解

MTK笔记 L4是MMI/AT和协议栈的适配层。 ATCI是AT命令解析器。 UEM是用于抽象如键盘、LED、通用输入/输出等基本设备,是用户设备模块。 PHB就是电话本。 SMU是安全...
  • jackalfly
  • jackalfly
  • 2012年11月14日 17:36
  • 5436

MTK手机启动流程

MTK手机启动流程
  • wangglong
  • wangglong
  • 2015年09月19日 16:36
  • 783

MTK Camera 开机启动流程

一、MTK平台Camera框架          MTK平台的Camera的架构见下图,      这里主要介绍kernel部分和HAL层部分。     1、Kern...
  • G_linuxer_
  • G_linuxer_
  • 2016年05月07日 17:15
  • 2540

MTK开机流程 - MMI部分

MTK开机流程-MMI部分(VC模拟器)基于53平台09A版本,通过VC模拟器调试,整理出一条大概的MMI开机流程,后续完善。- 创建MMI task进程mmi_create()- MMI task初...
  • dsw846169600
  • dsw846169600
  • 2011年04月19日 14:48
  • 533

Android MTK平台修改开机动画,开机logo

修改开机logo 找到目录 trunk/mediatek/custom/common/lk/logo/ 该目录下面有很多的文件夹,都是在不同分辨率下面的logo 要修改的话就看需要...
  • jdsjlzx
  • jdsjlzx
  • 2014年03月07日 10:31
  • 5121

MTK 快速开机 技术详解

Android version 2.3.5 首先查看Settings里控制开关 01 // 获取当前状态 02 ...
  • mirkerson
  • mirkerson
  • 2014年03月23日 10:09
  • 4125

MTK开机LOGO图片的显示原理

 MTK开机LOGO图片的显示原理 一、图片的定义 1 1.1、update脚本 1 1.2、rules.mk脚本 2 1.3、图片的宏定义cust_display.h(索引序列号...
  • Toc_SunWinner
  • Toc_SunWinner
  • 2018年01月12日 15:27
  • 90

关于mt6572不能开机问题

刚接触mtk的平台,就遇到一个问题,新代码配置好flash之后,烧写到板子上,系统不能够正常启动,配置串口为115200,只能得到如下信息: [DL] 00001388 00000015 01030...
  • mcgrady_tracy
  • mcgrady_tracy
  • 2014年09月11日 19:44
  • 3678
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:MTK开机流程—应用部分
举报原因:
原因补充:

(最多只允许输入30个字)