MTK开机流程 - MMI部分(VC模拟器)

2023-10-28 05:08

本文主要是介绍MTK开机流程 - MMI部分(VC模拟器),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

MTK开机流程-MMI部分(VC模拟器)
基于53平台09A版本,通过VC模拟器调试,整理出一条大概的MMI开机流程,后续完善。

- 创建MMI task进程
mmi_create()

- MMI task初始化
MMI_Init()
mmi_frm_init_key_event()   // 按键初始化
L4InitTimer()              // 计时器初始化
setup_UI_wrappers()        // WGUI初始化
mmi_fe_init()              // 字体初始化

- MMI task接收消息事件
MMI_task()
InitEventHandlersBeforePowerOn()  // 事件初始化
MMI_MTPNP_master_init()以及MMI_MTPNP_slave_init() // 主副SIM卡初始化
msg_get_ext_queue_info()          // 获取消息
mmi_frm_fetch_msg_from_extQ_to_circularQ()        // 消息转换
OslNumOfCircularQMsgs()           // 获取消息个数
OslReadCircularQ()                // 读取消息信息
switch (Message.msg_id)
{
  ...
  case MSG_ID_MMI_EQ_POWER_ON_IND:               // 开机事件
  break;
  ...
}
SetDateTime()                   // 设置时间
gdi_init()                      // GDI初始化
switch (p->poweron_mode)
{
  ...
  case POWER_ON_KEYPAD:        // 按键开机
  ...
}
MTPNP_AD_Init()                // AD初始化,还不太清楚
PhnsetSetUARTConfig()          // UART配置
DTGetRTCTime(&StartUpTime);    // 获取开机时间

- MMI 启动流程
mmi_bootup_start()
mmi_bootup_entry_disk_check()      // 磁盘检查
mmi_frm_power_on_init_procedure()  // 开机初始化
FlightModeCheckBeforeAnimation()   // 检测飞行模式
InitializeAll()                    // APP初始化
InitNvramDataBeforeAnimation()     // NV初始化

- APP初始化
InitializeAll()
InitUnicodeSupport()      // Unicode
gdi_init()                // GDI
mdi_audio_init()          // AUDIO
mdi_init()                // MDI
mdi_webcam_init()         // 网络摄像头
InitMMIUsbContext()       // USB
InitProtocolEvents()      // Protocol Event
InitFramework()           // Framework
InitHardwareEvents()      // Protocol Event
InitTime()                // Date Time
setup_UI_wrappers()       // WGUI
PopulateResData()         // 资源文件,包括字符串、图片、音频等
PowerAndEndKeyHandler()   // Power And End Key Handle
InitStringLanguage()      // 多国语言
mmi_um_init()             // 短消息
mmi_dispatch_init()       // 彩信
InitCallManagement()      // 通话记录
mmi_vt_init()             // Video Telephony
mmi_ucm_init()            // 呼叫
initialize_UI_demo()      // UI环境
InitNetWorkBootUpEventsCallBack()  // 网络
InitProfileApp()          // 情景模式
InitSimDetection()        // SIM卡 短消息
...

- 初始化完成后,开机动画
switch (p->poweron_mode)
{
  ...
  default:
  ProtocolEventHandler(...);
  break;     // 默认处理
  ...
}
MTPNP_AD_Bootup()
mmi_bootup_dual_sim_start()                // SIM卡
mmi_bootup_dual_sim_start_bootup_by_mode() // SIM卡
MTPNP_PFAL_Master_Startup_Normal()         // SIM卡
PowerOnNormalMode()                        // 正常模式开机
mmi_bootup_entry_animation()               // 开机动画
mmi_pwron_entry_animation_screen()         // 开机动画界面
gui_start_timer(force_stop_time, mmi_pwron_force_terminate_display) // 设置强制关闭动画计时器
mmi_pwron_show_image_callback()          // 动画完成回调
EntryPhnseFactoryDefaultCalibrationScr() // 屏幕校准
mmi_bootup_exit_animation()              // 动画结束
mmi_bootup_entry_low_battery_warning()   // 检查电量
mmi_bootup_entry_security_check()        // 安全检查,包括SIM卡密码,SIM卡是否可用等
goto_opening_screen()
InitAllApplications()                 // 重复初始化,直接return
exit_custom_startup_screen()          // 退出动画
ShowWelcomeScr()                      // 显示welcom界面
ShowIdleAppSubLcd()                   // 显示子屏
mmi_bootup_exit_welcome_screen()      // 退出welcom界面
mmi_bootup_entry_network_searching()  // 搜网
EntryIdleScreen()                     // 进入待机界面

这篇关于MTK开机流程 - MMI部分(VC模拟器)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/290896

相关文章

SpringBoot整合Flowable实现工作流的详细流程

《SpringBoot整合Flowable实现工作流的详细流程》Flowable是一个使用Java编写的轻量级业务流程引擎,Flowable流程引擎可用于部署BPMN2.0流程定义,创建这些流程定义的... 目录1、流程引擎介绍2、创建项目3、画流程图4、开发接口4.1 Java 类梳理4.2 查看流程图4

java Long 与long之间的转换流程

《javaLong与long之间的转换流程》Long类提供了一些方法,用于在long和其他数据类型(如String)之间进行转换,本文将详细介绍如何在Java中实现Long和long之间的转换,感... 目录概述流程步骤1:将long转换为Long对象步骤2:将Longhttp://www.cppcns.c

Ubuntu设置程序开机自启动的操作步骤

《Ubuntu设置程序开机自启动的操作步骤》在部署程序到边缘端时,我们总希望可以通电即启动我们写好的程序,本篇博客用以记录如何在ubuntu开机执行某条命令或者某个可执行程序,需要的朋友可以参考下... 目录1、概述2、图形界面设置3、设置为Systemd服务1、概述测试环境:Ubuntu22.04 带图

spring-gateway filters添加自定义过滤器实现流程分析(可插拔)

《spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔)》:本文主要介绍spring-gatewayfilters添加自定义过滤器实现流程分析(可插拔),本文通过实例图... 目录需求背景需求拆解设计流程及作用域逻辑处理代码逻辑需求背景公司要求,通过公司网络代理访问的请求需要做请

使用JavaConfig配置Spring的流程步骤

《使用JavaConfig配置Spring的流程步骤》JavaConfig是Spring框架提供的一种基于Java的配置方式,它通过使用@Configuration注解标记的类来替代传统的XML配置文... 目录一、什么是 JavaConfig?1. 核心注解2. 与 XML 配置的对比二、JavaConf

Java对接Dify API接口的完整流程

《Java对接DifyAPI接口的完整流程》Dify是一款AI应用开发平台,提供多种自然语言处理能力,通过调用Dify开放API,开发者可以快速集成智能对话、文本生成等功能到自己的Java应用中,本... 目录Java对接Dify API接口完整指南一、Dify API简介二、准备工作三、基础对接实现1.

Android 12解决push framework.jar无法开机的方法小结

《Android12解决pushframework.jar无法开机的方法小结》:本文主要介绍在Android12中解决pushframework.jar无法开机的方法,包括编译指令、框架层和s... 目录1. android 编译指令1.1 framework层的编译指令1.2 替换framework.ja

将Java项目提交到云服务器的流程步骤

《将Java项目提交到云服务器的流程步骤》所谓将项目提交到云服务器即将你的项目打成一个jar包然后提交到云服务器即可,因此我们需要准备服务器环境为:Linux+JDK+MariDB(MySQL)+Gi... 目录1. 安装 jdk1.1 查看 jdk 版本1.2 下载 jdk2. 安装 mariadb(my

一文详解如何在Python中从字符串中提取部分内容

《一文详解如何在Python中从字符串中提取部分内容》:本文主要介绍如何在Python中从字符串中提取部分内容的相关资料,包括使用正则表达式、Pyparsing库、AST(抽象语法树)、字符串操作... 目录前言解决方案方法一:使用正则表达式方法二:使用 Pyparsing方法三:使用 AST方法四:使用字

Mysql删除几亿条数据表中的部分数据的方法实现

《Mysql删除几亿条数据表中的部分数据的方法实现》在MySQL中删除一个大表中的数据时,需要特别注意操作的性能和对系统的影响,本文主要介绍了Mysql删除几亿条数据表中的部分数据的方法实现,具有一定... 目录1、需求2、方案1. 使用 DELETE 语句分批删除2. 使用 INPLACE ALTER T