您的位置:首页 > 其它

关于刷机的一些感悟

2016-11-04 11:13 295 查看
转载: http://bbs.pediy.com/showthread.php?t=188844

转载:来自看雪论坛@PEdiy.com

今天小弟用了一下午时间研究了一下刷机的问题,在网上看了一些帖子,有些感悟,同时也有一些疑惑与猜测无法证实,发此贴的目的一是希望总结一下今天下午的收获,同时也希望各位大牛可以为小弟解答一些疑惑,其中若有不对的地方,还请各位大牛不惜赐教

最近没事闲的刷了一下青橙n1,前几次刷的还好好地,结果后来就放松警惕了,结果果断把青橙给刷成板砖了,后来一看坏了。。。。好歹也1000多大洋呢。。。。小弟穷啊,网上各种找方法,也没研究出什么门路来,后来听说先把手机断电,然后重刷就好了,但青橙那货电池拔不出来。。好吧,反正也是砖了,果断拆机吧。 拆开了之后先吐槽一下。。。这货的电池是软的。。。卸电池的时候真心怕爆炸了。。。打开机箱后盖之后,能拆的线基本全拆了。。最后发现有个白色的6个线的头就是电源线,重插之后,果然,可以刷机了。于是又再次忐忑的刷机,还好后来成功了,由于被吓得是在是不轻,就寻思研究研究手机刷机吧,成砖神马的究竟是怎么回事。。。由于小弟才疏学浅,过程中很多地方都是猜测,小弟猜测的地方后面会一一标记出来(用括号1,2,3….的形式),如果有不对的地方,还请各位大牛不惜赐教。

好了,废话不说了,首先说下为什么刚开始没问题,后来刷成砖了。 当时的刷机环境是:小弟开着虚拟机,默认情况下插入青橙手机会连接到虚拟机的,然后我在主机上用sp_flash_tool点击download开始刷机了,(猜测1)由于插入手机后,usb默认应该是先连接到主机的,这时候被主机的sp_flash_tool识别出来了,然后开始刷机,接着usb被虚拟机识别,进入了虚拟机,与主机断开了连接,此时导致刷机被中断,相当于刷机过程中把线给拔了,但这时候手机内部的逻辑应该还在等待usb口的数据输入,此时手机内的程序没有响应开机,+-键的逻辑,程序一直等待输入或者循环读取输入,导致长按开机键也没有反应,最终只能通过拔电池来强行断电了。

后来查了一下刷机相关的内容,发现有的说手机开机的时候经过的流程是lPL->SPL->Linux kernel->Android系统,有的说是BootLoader->Linux kernel->Android系统。有的说Bootloader=IPL+SPL,有的说BootLoader = SPL的。后来看到一篇文章感觉说的比较靠谱(但不太确定,叫猜测2吧),IPL,SPL是Windows phone中的称呼,HTC从windows mobile中引进来的,后来为了统一称呼,就把SPL成为Bootloader了。在Android中启动的流程应该就是BootLoader->Linux kernel->Android系统。

关于刷机,目前刷机通常有两种方式:线刷和卡刷。线刷就是通过usb数据线来刷机,卡刷就是把rom包复制到手机或sd卡中,然后通过手机的recovery模式进行刷机。线刷到底是什么原理小弟没找到确定的答案,但大体猜测有两种方式吧(猜测3),一种是通过fastboot来刷机,一种是直接通过com口来刷机。ARM结构的手机启动后从默认地址0x0000000开始执行(),然后一般情况下bootloader的最后阶段进入U-Boot(这货类似于grab,可能还有别的选择,以U-Boot为例),这里可以选择进入什么模式,由于我青橙的刷机包中没有fastboot模式,就以小弟新买的红米s1为例吧,红米s1的bootloader提供三种模式:

1.Normal:就是正常开机

2.Fastboot:fastboot可以说是一种协议,在pc端和手机端分别有程序实现了这个协议。在手机端进入fastboot模式即相当于运行了手机端的对应程序,在pc端android sdk/platform-tool下面有此协议pc端的工具fastboot.exe。这货应该是基于usb协议实现的。所以手机开启了fastboot模式,pc端用fastboot.exe就可以连接上此手机设备,进行刷机。

3.Recovery:这个模式和normal模式一般用的都是同一个linux内核,此模式下也会加载文件系统,传说中的卡刷,就是在此模式下进行的。

Fastboot,recovery和normal(正常开机)是平级的,至于有没有fastboot得看手机支持了,在开机状态下(normal模式)通过adb reboot bootloader命令可以重启手机进入fastboot模式(前提是支持)。

如果进入了normal模式,则开始加载各种img,很多厂商的bootloader有个加锁功能,如htc,网上有帖子说刷机需要给bootloader解锁才可以,这种刷法指的应该是不刷bootloader,只是刷各种img,此时厂商的bootloader会对img进行校验,如果不过,则不能进入normal模式进行加载。

看网上很多人说把手机刷成砖头了,后来小弟就很好奇怎么才能把手机刷成砖头,于是对我的宝贝青橙n1进行了各种实验,后来发现,在不破坏手机的情况下。。青橙应该是无法被刷成砖头的。

这其中的原因就得从青橙使用的芯片说起了,青橙使用的是mtk的芯片(内部cpu是arm的,mtk芯片可以理解成主板)。Mtk官方提供的刷机工具叫sp_flash_tool,此工具是通过com口进行刷机的,这个工具在使用前需要安装一个驱动程序(我的理解是此驱动程序将usb转换为串口,之后通过串口就可以连接到手机了(猜测4)),sp_flash_tool里面有个选项,叫format whole flash,这个功能连bootloader都给format掉了。之前怀着忐忑的心情点击了这个选项,后来发现青橙还是没有成转。(猜测5)由于小弟对com口不太了解,这里猜测可能是mtk主板芯片支持com协议。所以只要是使用mtk芯片的手机,就可以放心大胆的刷机,刷机过程中各种拔usb线,各种中断都不会导致手机成砖(前面写了猜测5.。。要是真刷成砖了。。。不要来找我。。。。。)

总结之,刷机有三种方式,其中两种线刷(com,fastboot),一种卡刷(recovery模式下),只要不刷掉bootloader(fastboot,recovery模式进的去)就不会有刷机成砖的问题,对于支持com方式刷机的,无论怎么刷,手机都不会成砖。

整体流程:

powerON–〉BootROM—>x-loader—->Eboot—–>IPL—>OS

只要BootRom不挂,手机就不会成砖了,我之前的理解bootloader指的是bootRom到os启动前的这一段,看来厂商所谓的bootloader加锁应该是指在bootRom里面加锁了(bty:bootRom这货怎么刷啊,莫非bootRom代码里面就有一步逻辑是自己可以刷自己??)

还有就是Eboot->IPL这一块,Eboot,IPL,SPL的概念一般是在Wince下面的吧,如果是linux一般用的不是u-boot么,还有看网上说IPL挂了手机基本就成砖了,IPL阶段这么靠后么,那传说中的SPL到哪里去了呢。。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: