高通芯片刷机我的分析理解(启动分析故障分析)
⾼通芯⽚刷机我的分析理解(启动分析故障分析)安卓⼿机⾼通芯⽚刷机我的分析理解
⾼通芯⽚⼿机是市⾯上⽐较流⾏的⼿机系列,例如:⼩⽶系列⼤部分机型,三星系列部分⾼端机型,中兴努⽐亚系列,联想⼿机⾼端机型,⼀加⼿机全部机型,还有华为⼿机⼀⼩部分等等吧。刷⾼通芯⽚⼿机必须知道⾼通⼿机的引导过程,⽽⾼通芯⽚⼿机引导过程相对复杂,我经过⼀周的学习和思考基本掌握了⾼通芯⽚⼿机的引导过程,我的理解可能有错误之处,希望看到这篇⽂章的同学给我意见和建议。科目三路考技巧
我先从总体说⼀下引导过程:PBL-SBL1-LK-BOOT(安卓引导镜像)-Android
第⼀阶段. :PBL-SBL1 阶段。⼿机上电也就是开机,⼿机先从PBL(Application Primary Boot Loader主引导加载程序)它位于主板的ROM中,(线刷包中没有这部分程序代码,他是固化到ROM中的,出⼚就有的⽆法改变,甚⾄⼚商也不知道具体代码是⾼通私有的部
分)CPU先把它加载到SDRAM中开始执⾏PBL引导程序,主要是硬件特别是CPU初始化,让CPU正确⼯作。这⼀步还加载了系统的下⼀项SBL1启动的镜像。启动完了之后把控制权交给SBL1.
PBL:对刷机的作⽤是他有⼀个紧急下载模式(EDL :emergent download)它有两个特点:
⼀是它有emmc的驱动程序也就是它能访问emmc。
⼆是它⽀持USB模式也就是⾼通的Qdownload 9008模式 通过 firehouse协议与电脑连接并能够下载数据到emmc,也就是通过刷机软件刷机。
在这种模式下⽐较典型的刷机软件有两个:⾼通的QPST软件的QFIL(Qualcomm Flash Image Loader)和⼩⽶的刷机软件MiFlash.
说⼀下这两个软件利⽤⾼通9008模式软件的运⾏原理:它们都需要加载刷机包⾥的prog_emmc_firehose_8976_ddr.mbn⽂件,(8976也可以是其它⾼通芯⽚型号)它被称为镜像烧写器,也就是这个⽂件被刷机程序加载后运⾏在电脑端,他负责通过firehouse协议与连接了9008模式的⼿机的PBL程序进⾏沟通。把镜像⽂件根据在刷机包⾥的⽂件rawprogram0.XML(刷机包的镜像⽂件在⼿机⾥加载的路径)和l(补充分区相关的路径)下载到⼿机端。也就是刷机过程
补充⼏点说明:
1. SBL1阶段启动了按键驱动之后通过监听⼿机⽤户的按键⽅法来进⼊PBL模式。
2. Sbl1还会模拟出9006端⼝,并且会加载mass storage(U盘)此时电脑端可以管理⼿机emmc,⽐如分区等操作。当然也可以进⾏
crash RAM dump(崩溃时内存转储)⼯作。分析⼿机启动时的崩溃原因。例如利⽤adb⼯具命令adb
erase aboot或fastboot erase sbl1命令来来让系统崩溃(⽆法发现aboot)SBL1⾃动转⼊普通下载模式通过Sahara协议进⾏下载或刷机。电脑端显⽰Diagnostics 9006端⼝和mass storage(U盘)两个条⽬。
3. qh-Qdownload9008(comx),9008这个端⼝号是⼿机端PBL虚拟出来的,也就是电脑端通过⾃⼰comx端⼝与⼿机端的9008端
⼝通信,9008端⼝数据指向PBL引导程序。PBL通过9008端⼝接受电脑数据通过⾃⼰的emmc驱动把数据写到emmc(或flash)中。 2. ⾼通紧急下载模式(EDL)优点是⼿机系统不论如何被破坏都能被刷好,因为它不需要 emmc的任何数据。缺点也明显就是这种模式太过强暴把emmc都刷了容易丢失 IMEI号。需要QCN备份数据。如果刷错包很容易变真砖的。电容在电路中的作用
3.进⼊紧急下载模式⽅法:
⽅法⼀:抠掉电池(可以不抠电池),长按 ⾳量下键 + ⾳量上键,再插⼊USB线
⽅法⼆:将主板上的紧急下载测试点与地相连(需要拆机并且下载测试点不好),再 插⼊USB线。
⽅法三:在进⼊fastboot模式后,利⽤fastboot erase sbl1,此后插⼊USB线。
此⽅法原理是:PBL引导程序发现⼆次引导程序sbl1丢失,引导失败所以就⾃动 进⼊ 急下载模式的过程 ,⽤紧 急下载模式进⾏修复。
普通话排名⽅法四:在⼿机正常开机情况下,利⽤QFIL下载软件时,会有从正常模式转换到 紧
急下载模式的过程
⽅法五:⼯⼚空的PCBA的板⼦,在插⼊USB后,也会进⼊紧急下载模式
⽅法六:利⽤⼩⽶的⼯程线进⼊。原理是利⽤USB D+ 接地线(拆开USB线的绿⾊和⿊⾊短接)
⽅法七:能正常开机,利⽤ADB命令进⼊EDL模式。
⽅法⼋:给⼿机⼀个硬件gpio下拉,现在还不太明⽩什么意思(应该是emmc的测试点加1.8v接触也就是短接法救⿊砖)。
最后说明⼀下⼿机启动到这⼀步系统还没有初始化显⽰系统,也就是⿊屏状态。但是已经加载了⼿机按键的驱动,所以⼿机按键是能够被启动系统感知,和利⽤的。
⽤途:在fastboot模式进⼊不了时,是唯⼀的刷机⽅法。
第⼆阶段. LK阶段。 ⼿机通过第⼀阶段的PBL初始化硬件,给第⼆阶段SBL1做好硬件准备,并且PBL加载SBL1镜像(在刷机包⾥是
sbl1.mbn)到CPU的⼆级缓存L2,SBL1在L2执⾏,此时并没有初始化DDR(系统内存),所以不能加载主内存中运⾏。此时SBL1主要⼯作是初始化系统主内存,主板时钟,arm架构,emmc,按键,等⼿机硬件。此时系统的硬件处于基本可⽤状态。此时SBL1还负责加载电源管理模块的PBL初始化电源模块,把相关的硬件初始化,把电源模块的pbl加载到电源的SRAM去执⾏。把相关的参数放到share模块,供系统调⽤。最后把lk(⾼通默认引导程序,最出名的是u-boot但⾼通没⽤)引导主程序(在刷机包⾥是emmc_appsboot.mbn⽂件)镜像加载到DDR
由于系统加载了硬件驱动了,所以此时可以调⽤硬件了。故系统引导程序可以扫描⼿机按键组合来进⼊PBL的EDL模式(通过⼀个宏来调⽤PBL的EDL模式)。但是此时不能进⼊fastboot和recovery因为没有fastboot协议,也没有进⼊recovery的所需硬件环境。
SBL1的第⼀阶段加载QHEE(⾼通安全执⾏环境)到系统主内存,SBL1加载到主内存后,把控制权交给QHEE来执⾏,QHEE是⾼通特有的环境把安全相关的东西交给它处理,⽐如密码等问题等。此后引导程序把控制权交给lk(emmc_appsboot.mbn)此时真正进⼊了引导程序,⼿机各个硬件都能真正使⽤了包括显⽰相关的硬件。⼿机根据你的按键组合来调⽤fastboot协议(这是lk中的内置程序fastb
oot协议,由lk通过USB接⼝与电脑沟通,此时会虚拟⼀个端⼝可能是9008,与EDL不同)和recovery镜像(刷机包⾥的recovery.img)。
如果没有按键,则系统正常启动加载系统真正内核boot.img,此时如果没有发现boot.img镜像,LK会crash(崩溃),进⾏内存转储到emmc(Crash ram dump)LK会此时虚拟出9006端⼝,调⽤函数boot_sahara_init初始化sahara协议,枚举usb com⼝及mass storage。通过USB与电脑沟通,电脑端会有mass storage和9006端⼝出现。把⼿机emmc当做⼿机的⼀个移动盘来操作。此时⼿机会通过Sahara协议与电脑沟通。下载转储⽂件。当然我们也可以通过这种⽅法来刷机,⽤⾼通的emmc software download或⼩⽶的刷机⼯具MiFlash来下载刷机。(⼿机端显⽰什么我不知道,因为没⽤过)当然也可以⽤这种⽅法给⼿机emmc分区。
如果有按键组合则进⼊不同模式:fastboot模式和recovery模式
1.进⼊fastboot模式⽅法:
⽅法⼀:长按 电源键+⾳量下键
⽅法⼆:抠掉电池,然后长按⾳量下键,再插⼊USB线
⽅法三:进⼊adb模式,在adb⾥输⼊ adb reboot bootloader(PS:必须可以正常开机)
⽤途:刷整个系统或者刷某个分区
Fastboot模式是⼿机和电脑通过fastboot协议进⾏交互的,⼿机端接受电脑端fastboot命令然后⼿机端执⾏命令完成操作。此时由于系统已经加载显⽰驱动,所以⼿机端能够显⽰fastboot模式的画⾯。(⼿机端有完整的fastboot模式的命令和协议内容)
⽅法⼀:长按 电源键 + ⾳量上键
⽅法⼆:⼿机正常开机情况下,利⽤adb reboot recovery
⽤途:可以备份或者恢复系统(卡刷模式),⾼级recovery(第三⽅如CM)还可以root系统,挂载sd卡等操作。
Recovery模式是⼿机端的recovery镜像也就是刷机包⾥的(recovery.img)镜像,其实它就是⼀个微型的Linux系统,和boot.img系统镜像⼀样的东西。所不同点是recovery只是启动后功能弱。Boot.img包含系统内核负责引导Android系统。此时经过系统不断加载初始化硬件已经可以启动系统了。所以所有硬件都可以调⽤了。系统进⼊了真正启动阶段。
前⾯部分可以看做系统BIOS阶段下⾯是系统启动阶段。
第三阶段:boot阶段系统启动。lk加载系统内核镜像把控制权交给boot.img真正的引导系统。此时如果处于⼀些原因,系统可能会进⼊ffmb模式系统测试模式,(测试硬件如:听筒,话筒,wifi,屏幕,摄像头等等)。当然如果不进⼊测试模式,则引导系统进⼊Android世界。这些不是所讨论的内容了。
FFBM模式:开县旅游
⽅法⼀:利⽤QFIL软件
刷机后,第⼀次开机会进⼊该模式,在点击该模式中finish后,此后再次开机不会进⼊该模式,同样通过fastboot erase misc也可以达到不⽤进⼊该模式的作⽤。
⽤途:该模式不是Android本⾝的模式,⽽是⾼通的,它的主要作⽤是⽤于快速测试⼿机的⼀些基本功能。
第三阶段补充说明:当我们关机充电时,⼿机的充电画⾯是从boot.img⽂件⾥的,说明⼿机能进⼊充电模式,系统已经启动到内核模式了。只是没有再向后加载⽽已。
最后我分析⼀下通过⼿机出现画⾯来判断⼿机启动进程:
1.⼿机⿊砖模式(不能启动不能连接电脑)不能启动说明⼿机只能到PBL或者到达SBL1启动emmc-appsbl之前阶段在这阶段我们只能有⼀种刷机模式EDL进EDL模式的⽅法只有这么⼏种:
emmc是空的(出⼚),或你⼈为擦除掉SBL1(不能连电脑⽆法擦除,⾏不通这个⽅法)因为PBL没有检测到SBL1,运⾏异常所以能⾃动进⼊EDL.再就是⽤⼩⽶⼯程线来进⼊(原理USB D+ 接地)。再或者拆开⼿机主板短接emmc测试点接地(电池负极)也就是⽹上传的短接发(原理是PBL检测emmc异常)。以上都是⾼通9008模式。
饰品工艺2.⼿机出现⼚商logo此时⼿机运⾏在appsbl阶段,加载了lk(emmc-appsbl.mbn)因为⼿机能显出logo说明⼿机硬件基本初始化完成。所以⼿机应该能进如fastboot,recovery,也能引导系统。此时⼿机通过按不同按键组合可以进⼊相应的模式如:⾳量上下键进⼊9008模式等。(⼿机硬件初始化完成所以所有硬件都能被检查到的)。
3.⼿机引导boot(有开机logo)阶段时可能崩溃此,此时⼿机会虚拟9006端⼝和mass storage挂载为U盘模式。进⾏刷机。
3. 当我们关机充电时,⼿机能充电且充电画⾯显⽰在⼿机上。⼿机的充电画⾯是从boot.img⽂件⾥的,说明⼿机能进⼊充电模式,系统已经启动到内核模式了。只是没有再向后加载⽽已。此时以上刷机⽅法都适⽤。
4.⼿机有启动动画(注意是动画),说明⼿机进⼊Android启动过程了。⼿机adb模式也可以⽤了。(adb模式是⼿机与电脑通讯的协议,当然⼿机端⾃⼰也可以⽤必须⽤busybox软件也就是Android壳。
⼤名⿍⿍的Linux的bash壳)。
附注⼏种协议:firehouse协议pbl⽤。
Fastboot 协议 aboot⽤
Sahara 协议 sbl1⽤
Mass storage ⼤容量存储协议U盘模式。
中秋节祝福语 老师MTP(Mass transmission protocol)⼤容量传输议。
⼿机刷坏emmc控制器但flash没坏的理解⽅法:
我的⼿机刷机之后,启动的logo页⾯⾃动关机。现在能有9008模式,能进fastboot不能进recovery。系统刷机没问题能刷进各种刷机包。但就是不能启动。⽤fastboot earse Cache命令fail。不能访问emmc控制的flash。
分析:
⼿机能启动到logo页⾯说明⼿机基本的硬件没有坏。也能充电,但是没有充电动画显⽰。说明⼿机能
启动pbl sbl1 aboot。因为⼿机的logo和fastboot命令都在aboot程序⾥⾯所有⼿机能启动到aboot,⼿机为什么能启动到aboot因为⼿机访问emmc flash有两条通道⼀条是emmc协议,⼀条是sd卡协议。刷机能刷进的原因是flash没有损坏并且sd协议是有pbl的firehouse协议控制的。刷机时firehouse协议通过sd IC通道与flash交互并没有通过emmc通道,所以⼿机能刷进系统包。
⼿机启动到logo界⾯,说明⼿机启动到aboot阶段。那么⼿机是如何启动到aboot阶段的。⾸先pbl加载sbl1(通过sd卡通道加载,不通过emmc通道,因为此时还没初始化emmc通道)到缓存。Sbl1(通过sd卡通道加载,不过emmc通道,因为此时还没初始化emmc通道)加载aboot到内存,此时aboot初始化emmc,emmc通道可⽤。Aboot加载boot.img到内存(此时emmc通道可⽤),经过分析emmc控制器损坏所以aboot加载boot.img时出现错误(此时emmc可⽤但是emmc控制器损坏),⼿机不能启动。并且aboot加载recovery镜像时出错(此时emmc可⽤但是emmc控制器损坏)。此时⼿机不能再⽤sd卡通道了,因为这个通道⽐较慢。并且内存与emmc flash通过emmc协议通信的。此时emmc损坏不能与内存通信,会加载错误。包括fastboot earse Cache命令fail,也是在内存中执⾏会与emmc通道通信,所以也出现错误。
通过以上分析⼿机emmc 控制器损坏,但flash没坏。就会启动到logo界⾯。不能加载recovery不能加载boot.img。但是能通过pbl的firehouse通过SD卡协议与flash通信,能刷进成功但是不能够启动系统。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。