MTK手机正常开机流程以及开机常见故障诊断
2015-09-18 17:06
267 查看
一、正常开机
上图是手机正常开机的时序图:
(1)时序图的四个信号线如下:
① Power on key:开机键。
② LVDs:低差分稳压信号线。
③ Reset:复位键。
④ BBwakeup:BB唤醒信号线。
(2)其他:
①Power on key pressed:开机电源键按下.
②Power on key debounce time:开机电源键防反跳时间.
③Reset delay:复位延时。
④Power on key released:开机电源键释放.
⑤Power off key pressed:关机电敌键按T。
⑥Power off key released:关机电源键释放。
⑦msec:毫秒。
上图所显示的开机流程如下:
当按下Power on key后,二极管导通.PWRKEY检测到低电平.驱动PMIC电源管理芯片打开LVDs(低压差分信号线),之后PMIC电源管理芯片使BBwakeup信号线复位,随之BBwakeup信号线起来进人软件开机程序。从而完成开机。而按Power
on key关机时,MTK平台首先执行软件关机程序。随后复位,LVDs也被关闭,从而完成关机。
正常开机流程中的某些步异中运行不正常的现象基本诊断如下图.读者可自行诊断手机的常见故障。这个过程可以加深对手机工作原理的理解。对开发工作有很大的帮助。
但仅仅理解正常开机的流程还不够,另外两个开机过程也非常重要,那就是闹钟开机过程和充电开机过程.理解了这两个开机过程,对开机流程才能有完整的把握。
二、闹钟开机
(1)时序图的5个信号线如下:
Left soft key:左软按键。
Power on key:开机键。
LVDs:低差分稳压信号线。
Reset:复位键。
BBwakeup:BB唤醒信号线。
(2)其他:
Power on key pressed:开机电键被按下。
Power on key debounce time:开机电源键防反跳时间。
Reset delays复位延时。
Power on key released:开机电源键释放。
Power off key pressed:关机电源健按下。
Power off key released:关机电源键释放。
RTC Alarm:实时时钟闹钟。
Left soft key pressed to confirm Alarm power on:左软按健按下以确认闹钟打开。
msec:毫秒。
上面时序所体现的开机过程如下:
当闹钟醒来时,BBwakeup信号先起来,它由低电平变为高电平,然后PMIC电派管理芯片的所有LVDs(稳压信号)后起来。过了200ms后,PMIC电旅管理芯片使
BBwakeup信号线复位,执行软件开机程序。当按下左按健停止闹钟时,就完成开机过程。其关机过程同正常关机一样。
三、充电开机
(1)时序图的5个信号线如下:
PMIC CHR:电源管理芯片信号。
EINT_ CHRDET:中断。
LVDs:低差分稳压信号线。
Reset:复位键。
BBwakeup:BB唤醒信号线。
(2)其他:
Charger plug in:充电器插人.
Power on key debounce time:开机电源键防反跳时间。
Reset delay:复位延时。
Charger plug out:充电器拔出。
msec:毫秒.
上面的充电开机时序图显示的开机过程如下:
当充电器给手机充电时,CHRIN检测到高电平.驱动PMIC(电源管理芯片)打开LVDs低差分稳压信号线.如果此时电池的电压>3.2 V,则PMIC(电源管理芯片)产生EINT中断(高电平);如果此时电池的电压<3. 2 V, MTK平台先小电流充电使电池的电压大于3.2 V,然后PMIC使BBwakeup信号复位,BBwakeup起来后执行软件开机程序,从而完成充电开机过程。
四、系统启动涉及的关健文件
bootarm. s (mcu\init\src\bootarm. s)和init. c (mcu\init\src\init. c)是MTK平台的启动主要涉及的两个文件,其中bootarm. s代码用ARM指令编写,以提高代码执行的效率。
(1)先看bootarm.s,摘录其中一部分代码如下:
我们可以用记事本打开bootarm.s,可以看到里面的代码主要是对CPU的寄存器、中断向量表、RAM以及flash等的配置。很多人困惑为什么用上面代码书写,实际上上面的代码的格式比C语言的书写格式执行效率要高。
(2)再看看init. c里面的代码,摘录一部分如下:
我们可以用记事本或Source Insight软件打开init. c,可以看到里面的代码用C语言编写.主要是对系统的进一步初始化,包括对USB等外设骆动的加载等。仔细阅读上面的代码,能让我们对系统的核心工作机制有个更深的认识。
上图是手机正常开机的时序图:
(1)时序图的四个信号线如下:
① Power on key:开机键。
② LVDs:低差分稳压信号线。
③ Reset:复位键。
④ BBwakeup:BB唤醒信号线。
(2)其他:
①Power on key pressed:开机电源键按下.
②Power on key debounce time:开机电源键防反跳时间.
③Reset delay:复位延时。
④Power on key released:开机电源键释放.
⑤Power off key pressed:关机电敌键按T。
⑥Power off key released:关机电源键释放。
⑦msec:毫秒。
上图所显示的开机流程如下:
当按下Power on key后,二极管导通.PWRKEY检测到低电平.驱动PMIC电源管理芯片打开LVDs(低压差分信号线),之后PMIC电源管理芯片使BBwakeup信号线复位,随之BBwakeup信号线起来进人软件开机程序。从而完成开机。而按Power
on key关机时,MTK平台首先执行软件关机程序。随后复位,LVDs也被关闭,从而完成关机。
正常开机流程中的某些步异中运行不正常的现象基本诊断如下图.读者可自行诊断手机的常见故障。这个过程可以加深对手机工作原理的理解。对开发工作有很大的帮助。
但仅仅理解正常开机的流程还不够,另外两个开机过程也非常重要,那就是闹钟开机过程和充电开机过程.理解了这两个开机过程,对开机流程才能有完整的把握。
二、闹钟开机
(1)时序图的5个信号线如下:
Left soft key:左软按键。
Power on key:开机键。
LVDs:低差分稳压信号线。
Reset:复位键。
BBwakeup:BB唤醒信号线。
(2)其他:
Power on key pressed:开机电键被按下。
Power on key debounce time:开机电源键防反跳时间。
Reset delays复位延时。
Power on key released:开机电源键释放。
Power off key pressed:关机电源健按下。
Power off key released:关机电源键释放。
RTC Alarm:实时时钟闹钟。
Left soft key pressed to confirm Alarm power on:左软按健按下以确认闹钟打开。
msec:毫秒。
上面时序所体现的开机过程如下:
当闹钟醒来时,BBwakeup信号先起来,它由低电平变为高电平,然后PMIC电派管理芯片的所有LVDs(稳压信号)后起来。过了200ms后,PMIC电旅管理芯片使
BBwakeup信号线复位,执行软件开机程序。当按下左按健停止闹钟时,就完成开机过程。其关机过程同正常关机一样。
三、充电开机
(1)时序图的5个信号线如下:
PMIC CHR:电源管理芯片信号。
EINT_ CHRDET:中断。
LVDs:低差分稳压信号线。
Reset:复位键。
BBwakeup:BB唤醒信号线。
(2)其他:
Charger plug in:充电器插人.
Power on key debounce time:开机电源键防反跳时间。
Reset delay:复位延时。
Charger plug out:充电器拔出。
msec:毫秒.
上面的充电开机时序图显示的开机过程如下:
当充电器给手机充电时,CHRIN检测到高电平.驱动PMIC(电源管理芯片)打开LVDs低差分稳压信号线.如果此时电池的电压>3.2 V,则PMIC(电源管理芯片)产生EINT中断(高电平);如果此时电池的电压<3. 2 V, MTK平台先小电流充电使电池的电压大于3.2 V,然后PMIC使BBwakeup信号复位,BBwakeup起来后执行软件开机程序,从而完成充电开机过程。
四、系统启动涉及的关健文件
bootarm. s (mcu\init\src\bootarm. s)和init. c (mcu\init\src\init. c)是MTK平台的启动主要涉及的两个文件,其中bootarm. s代码用ARM指令编写,以提高代码执行的效率。
(1)先看bootarm.s,摘录其中一部分代码如下:
... ... ... ... LDR<span style="white-space:pre"> </span>a4,EMISASE_REG IF :DEF: MT6229 : LOR: : DEF: MT6228 : LOR: :DEF: MT6225 : LOR: : DEF: MT6230 : LOR: :DEF: MT6238 IF :DEF: MT6238 LDR al,[a4,# 0x70] ELSE LDR al,[a4,# 0x60] ENDIF ELSE LDR al,[a4,# 0x40] ENDIF AND al,al,# 0x03 MOV a2,# FLASH_SRAM_REMAP CMP a1,a2 BEQ MTK_LoadPC LDR a1,EMT_26MHZ_SEITING STR a1,[a4] STP a1,[a4,# 0x08] MOV a2,# BOOTROM_FLASH_REMAP IF :DEF: MT6229 :LOR: :DEF: MT6228 :LOR: :DEF: MT6225 :LOR: :DEF: MT6230 :LOR: :DEF: MT6238 IF :DEF: MT6238 LDR a1,[a4,# 0x70] BIC al,a1,#3 ORR a2,a2,a1 STRH a2,[a4,# 0x70] ELSE STRH a2,[a4,# 0x60] ENDIF ELSE STRH a2,[a4,# 0x40] ... ... ... ...
我们可以用记事本打开bootarm.s,可以看到里面的代码主要是对CPU的寄存器、中断向量表、RAM以及flash等的配置。很多人困惑为什么用上面代码书写,实际上上面的代码的格式比C语言的书写格式执行效率要高。
(2)再看看init. c里面的代码,摘录一部分如下:
... ... ... static void HWDInitialization(void) { # ifdef MT6208 { { kal_uint32 delay= 1000000; REG WRITE(RTC_base,0x4316) ; while (delay> 0) { delay-- ; } } # endif # ifdef MTK_SLEEP_ENABLE LISM_Init (); # endif # ifndef L1_NOT_PRESENT # ifdef _HW_DIVIDER_ HW_Divider_lnitialization () ; # endif # endif ... ... ...
我们可以用记事本或Source Insight软件打开init. c,可以看到里面的代码用C语言编写.主要是对系统的进一步初始化,包括对USB等外设骆动的加载等。仔细阅读上面的代码,能让我们对系统的核心工作机制有个更深的认识。
相关文章推荐
- 零基础学python-18.3 递归函数vs循环和递归处理任意结构
- 零基础学python-18.3 递归函数vs循环和递归处理任意结构
- 安卓图片加载框架--Universal-Image-Loader
- Mjoke app的开发
- 硬币 coin题解
- xcode7升级后导致奔溃到jsonkit
- PHPCMS搭建wap手机网站
- 矩阵乘法的Strassen算法
- NSPredicate类,指定过滤器的条件---董鑫
- jQuery插件Flot实战Demo
- Linux chattr和lsattr
- 豆瓣爬虫
- TFS erasure code实现方案
- ul li高度在ie6、ie7、ie8、FF下兼容问题解决
- 第一次开源项目贡献
- jenkins系列教程
- MySQL学习5_CentOS下Mysql数据库(不使用yum命令)的安装与配置
- SEAndroid中sepolicy/adbd.te策略文件分析
- Unity脚本中使用NGUI的预先准备
- 多进程和多线程的优缺点