mtk
初始化流程
hal\system\init\src\init.c
hal\peripheral\src\drv_comm.c
custom\drv\misc_drv\_default_bb\mt6250\custom_drv_init.c
Application_Initialize-->
systemInitialization();//kal 内核的初始化 , 及中断初始化 , 及 Initialize_FDD_tables
HWDInitialization();-->
USC_Start();//1us 时间管理
OSTD_Init();//OStimedate 初始化
RM_Init();//afterOSTD_Init()andbefore2Gand3GSMM'sinit()function
L1SM_Init();//L1 睡眠模式管理
HW_Divider_Initialization(); // 这个是干嘛的?
Drv_Init_Phase1(); -->// 一些硬件驱动初始化 hal\peripheral\src\drv_comm.c
DclPMU_Initialize(); // 电源管理
drv_hisr_init(); // 高级中断
lpwr_init(); //low power
DclPWM_Initialize(); //PWM
DclSADC_Initialize(); //ADC
custom_drv_init(); // 用户驱动初始化 custom_drv_init.c
DclAUX_Initialize(); //audio
Drv_Init_Phase2();-->// 一些硬件驱动初始化 hal\peripheral\src
hal\system\init\src\init.c
hal\peripheral\src\drv_comm.c
custom\drv\misc_drv\_default_bb\mt6250\custom_drv_init.c
Application_Initialize-->
systemInitialization();//kal 内核的初始化 , 及中断初始化 , 及 Initialize_FDD_tables
HWDInitialization();-->
USC_Start();//1us 时间管理
OSTD_Init();//OStimedate 初始化
RM_Init();//afterOSTD_Init()andbefore2Gand3GSMM'sinit()function
L1SM_Init();//L1 睡眠模式管理
HW_Divider_Initialization(); // 这个是干嘛的?
Drv_Init_Phase1(); -->// 一些硬件驱动初始化 hal\peripheral\src\drv_comm.c
DclPMU_Initialize(); // 电源管理
drv_hisr_init(); // 高级中断
lpwr_init(); //low power
DclPWM_Initialize(); //PWM
DclSADC_Initialize(); //ADC
custom_drv_init(); // 用户驱动初始化 custom_drv_init.c
DclAUX_Initialize(); //audio
Drv_Init_Phase2();-->// 一些硬件驱动初始化 hal\peripheral\src
stack_init_comp_info()-->初始化task任务
MTK执行流程
MMI_task通过 mmi_frm_fetch_msg_from_extQ_to_circularQ ( 将消息从外部队列复制到
循环队列),之后从循环队列读出消息并执行相应的函数。
switch (Message.msg_id)
{
case MSG_ID_TIMER_EXPIRY:
{
EvshedMMITimerHandler(&Message); //处理定时器消息
}
break;
case MSG_ID_MMI_EQ_POWER_ON_IND:
{
开机模式
有正常启动( 用户按键盘后启动), 有充电启动, 还有闹钟闹时启动, 有异常启动。
这里所谓的启动, 有时候仅仅是显示一个用于表示状态的屏幕, 而不全是完整的启
动整个系统。
}
break;
default:
ProtocolEventHandler( ); //处理消息
//函数是得到消息中保存对应消息处理函数的函数入口,并根据入口执行相应函数,
break;