手机正常开机流程以及开机常见故障诊断

本文详细解析了手机的三种开机流程:正常开机、闹钟开机及充电开机,并介绍了关键启动文件的作用,有助于深入理解手机的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、正常开机 

 

上图是手机正常开机的时序图: (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等外设骆动的加载等。仔细阅读上面的代码,能让我们对系统的核心工作机制有个更深的认识。
深入剖析Qualcomm 手机开机的整个过程,即从按下开 机键一直到出现待机界面,Qualcomm 的手机软件在整个流程中究竟完成了哪些 工作。本文的主要目标是理清手机的初始化流程,并为今后Amoi 定做初始化工 作提供一个参考。 关键字:开机、Rex、TMC、ui_task、CoreApp 一、开机的简要流程分析 Qualcomm 的平台软件支持两种启动方式:一种是Nor Flash 启动方式,另 外一种就 是 Nand Flash 启动方式。Nor Flash 启动方式就相当于硬件直接找到一个入口点 开始执行代码,相比较而言会比较简单,且 Amoi 没有采用此种方式,所以本 文对于这种方式不做详细分析。另外一种就是Nand Flash 启动方式,这种方式 和PC 的启动方式比较相像,也是Amoi 采用的Boot 方式,下面将详细分析在此 方式下面的开机过程。 按下开机键之后,将产生一个时钟中断,从而通知AMSS 主芯片的Boot Load 硬件去将放置于Nand Flash 上面的第一个Block(8K)里面的Boot 代码Copy 到内核内存(RAM,这个内存应该是CPU 自带的内存,同后面提到的SDRAM 有 一定区别,可以把它当作CPU 的Cache)的0xFFFF0000 地址,并开始执行Boot 代码。Boot 的主要任务是完成整个系统的硬件初始化工作(类似于PC 上面的 BIOS 所完成的硬件自检工作,至于Boot 的详细工作机制,后文会有详细描述)。 Boot 所完成的工作里面,最重要的一件事就是会将整个手机软件代码(AMSS 软 件包)拷贝到SDRAM 中,并最后将控制权交给AMSS 软件。说白了,就是Boot 执行完成之后,代码的执行点将由Boot 跳转到AMSS软件的的入口点函数main(). (此函数在mobile.c 里实现)。 代码运行到了Main()之后,在这个函数里面将完成操作系统(rex)的初始化 工作,其实现方法是调用 rex_init()。Rex_init()完成的工作很简单: 1.完成操作系统必要的一些数据结构(timer 链表、任务链表等))的初始化 之外; 2.接下来,它创建了三个任务,分别是:rex_idle_task、rex_dpc_task 和 tmc_task。 Idle 任务没什么好解释的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值