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

相关文章

通过Docker容器部署Python环境的全流程

《通过Docker容器部署Python环境的全流程》在现代化开发流程中,Docker因其轻量化、环境隔离和跨平台一致性的特性,已成为部署Python应用的标准工具,本文将详细演示如何通过Docker容... 目录引言一、docker与python的协同优势二、核心步骤详解三、进阶配置技巧四、生产环境最佳实践

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

redis-sentinel基础概念及部署流程

《redis-sentinel基础概念及部署流程》RedisSentinel是Redis的高可用解决方案,通过监控主从节点、自动故障转移、通知机制及配置提供,实现集群故障恢复与服务持续可用,核心组件包... 目录一. 引言二. 核心功能三. 核心组件四. 故障转移流程五. 服务部署六. sentinel部署

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

MySQL 升级到8.4版本的完整流程及操作方法

《MySQL升级到8.4版本的完整流程及操作方法》本文详细说明了MySQL升级至8.4的完整流程,涵盖升级前准备(备份、兼容性检查)、支持路径(原地、逻辑导出、复制)、关键变更(空间索引、保留关键字... 目录一、升级前准备 (3.1 Before You Begin)二、升级路径 (3.2 Upgrade

Spring Boot 中的默认异常处理机制及执行流程

《SpringBoot中的默认异常处理机制及执行流程》SpringBoot内置BasicErrorController,自动处理异常并生成HTML/JSON响应,支持自定义错误路径、配置及扩展,如... 目录Spring Boot 异常处理机制详解默认错误页面功能自动异常转换机制错误属性配置选项默认错误处理

Spring Boot从main方法到内嵌Tomcat的全过程(自动化流程)

《SpringBoot从main方法到内嵌Tomcat的全过程(自动化流程)》SpringBoot启动始于main方法,创建SpringApplication实例,初始化上下文,准备环境,刷新容器并... 目录1. 入口:main方法2. SpringApplication初始化2.1 构造阶段3. 运行阶

使用Go实现文件复制的完整流程

《使用Go实现文件复制的完整流程》本案例将实现一个实用的文件操作工具:将一个文件的内容完整复制到另一个文件中,这是文件处理中的常见任务,比如配置文件备份、日志迁移、用户上传文件转存等,文中通过代码示例... 目录案例说明涉及China编程知识点示例代码代码解析示例运行练习扩展小结案例说明我们将通过标准库 os

Ubuntu 24.04启用root图形登录的操作流程

《Ubuntu24.04启用root图形登录的操作流程》Ubuntu默认禁用root账户的图形与SSH登录,这是为了安全,但在某些场景你可能需要直接用root登录GNOME桌面,本文以Ubuntu2... 目录一、前言二、准备工作三、设置 root 密码四、启用图形界面 root 登录1. 修改 GDM 配