MTK平台的手机启动流程

  一  底层部分

1 首先硬件上电给基带芯片供电,在经过一定时序条件后,给基带芯片复位信号,开始了ARM核的启动过程。谈到启动,我们必须熟悉Scatter file。Scatter file定义了Load Region和Excecute Region,我们要关心系统运行时代码、数据的地址分布。
2 Bootarm.s是一个重要的文件,与启动过程息息相关,其中的INT_Initialize函数是ARM启动开始执行的代码。
3 BSP所作的工作如下。
(1)配置PLL,配置基带芯片的EMI参数,以让系统能够以最大的速度读取外部存储设备数据,让CPU以最大速度运行,从而缩短启动过程。
(2)做好runtime代码及数据的准备,确保Excecute Region的代码及数据到位。
(3)配置好ARM 7种异常模式的堆栈,进入RTOS Nucleus操作系统的初始化。
(4)Nucleus留给客户的初始化函数Application_Initialize,做平台该做的初始化工作,比如外部控制器的初始化等。

二  软件部分
 
(1)函数MMI_task主要完成的是不停地读取protocoltask中的消息,然后根据消息和参数进行相应的处理函数。
(2)在函数MMI_task里读取了消息后,系统会根据消息决定相应的处理方式。
(3)如果系统收到消息MSG_ID_MMI_EQ_POWER_ON_IND,系统根据当前系统的状态来决定启动的方式,比如通过按键启动、充电器启动等。
(3)如果系统收到消息MSG_ID_MMI_EQ_POWER_ON_IND,系统根据当前系统的状态来决定启动的方式,比如通过按键启动、充电器启动等。
(4)正常启动(用户按键盘启动)中首先调用了函数InitializeALL,它是系统启动的初始化函数。
(5)接着调用函数InitNvramData,让一些需要读NVRAM的模块读出NVRAM中的数据,以此来初始化这些需要用到NVRAM中的数据来初始化的模块。
(6)初始化后就为进入主屏幕而作相关的准备。播放开机动画及声音,点亮显示屏,并且设置一个开机动画播放完毕后需要调用的函数。
(7)最后进入EntryIdleScreen函数,该函数就是程序的初始界面,同时在里面把左软键设置为进入主菜单,左软键设为进入电话本。

至此,一个启动过程就结束了,以后的事情都交给注册好的事件响应函数和菜单响应函数去做。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值