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

相关文章

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

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

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

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

Spring AI ectorStore的使用流程

《SpringAIectorStore的使用流程》SpringAI中的VectorStore是一种用于存储和检索高维向量数据的数据库或存储解决方案,它在AI应用中发挥着至关重要的作用,本文给大家介... 目录一、VectorStore的基本概念二、VectorStore的核心接口三、VectorStore的

python之流程控制语句match-case详解

《python之流程控制语句match-case详解》:本文主要介绍python之流程控制语句match-case使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录match-case 语法详解与实战一、基础值匹配(类似 switch-case)二、数据结构解构匹

电脑开机提示krpt.dll丢失怎么解决? krpt.dll文件缺失的多种解决办法

《电脑开机提示krpt.dll丢失怎么解决?krpt.dll文件缺失的多种解决办法》krpt.dll是Windows操作系统中的一个动态链接库文件,它对于系统的正常运行起着重要的作用,本文将详细介绍... 在使用 Windows 操作系统的过程中,用户有时会遇到各种错误提示,其中“找不到 krpt.dll”

在VSCode中本地运行DeepSeek的流程步骤

《在VSCode中本地运行DeepSeek的流程步骤》本文详细介绍了如何在本地VSCode中安装和配置Ollama和CodeGPT,以使用DeepSeek进行AI编码辅助,无需依赖云服务,需要的朋友可... 目录步骤 1:在 VSCode 中安装 Ollama 和 CodeGPT安装Ollama下载Olla

linux环境openssl、openssh升级流程

《linux环境openssl、openssh升级流程》该文章详细介绍了在Ubuntu22.04系统上升级OpenSSL和OpenSSH的方法,首先,升级OpenSSL的步骤包括下载最新版本、安装编译... 目录一.升级openssl1.官网下载最新版openssl2.安装编译环境3.下载后解压安装4.备份

C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)

《C#集成DeepSeek模型实现AI私有化的流程步骤(本地部署与API调用教程)》本文主要介绍了C#集成DeepSeek模型实现AI私有化的方法,包括搭建基础环境,如安装Ollama和下载DeepS... 目录前言搭建基础环境1、安装 Ollama2、下载 DeepSeek R1 模型客户端 ChatBo

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型的操作流程

《0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeekR1模型的操作流程》DeepSeekR1模型凭借其强大的自然语言处理能力,在未来具有广阔的应用前景,有望在多个领域发... 目录0基础租个硬件玩deepseek,蓝耘元生代智算云|本地部署DeepSeek R1模型,3步搞定一个应