电脑技术学习

三星 E878(基于USB的agere系统通用)刷机失败后的补救

admin

    大家可能会问:在上一回中我们讲到我的小雅不是送给妹妹了吗?怎么又来骗花了-_-b

    故事就要从送给妹妹开始了,我的立场在坛子里说过:亚太版的手机只要支持中文显示和输入是不主张刷机的。

    原因在于闪存里面有一个block会专门用来存放基带的偏移量,这些参数是在出厂时微调的,所以这个数据每台手机都是独一无二的。但随着数字基带的发展,这些偏移量的个体差异没有早年的大。不过如果你发现自己的水机信号不好,就要考虑这方面的问题了,所以我买水机尽量不买刷过软件的机器,尽量找原版本就能支持中文的,其实这样的型号还是很多的。

    扯远了,回过头来说我妹妹。。。她不知道从哪里听来的行货软件比水货要好,打电话不会掉话(在中国打移动电话,从没掉过话的站出来!),还有这样那样的好处。。。(此处省去1000字)。没办法,谁让是我妹妹呢,要刷就刷吧,其实水的是D6行的是C6还是水的版本高呢,不过反正也不是我用,说不定真的不会掉话呢(-_-b说不定我买张彩票还中500万了呢。。。)

    她叫我把电脑带过去帮她刷(为什么不是她带个手机过来。。。)。。。我懒啊。。。就远程控制她电脑刷了。用了OptiFlash 4.16T1,设置好跳过IMEI信息的地址,导入s3文件,按下flash。OptiFlash开始慢慢的load这个将近200M的S3文件。。。我去剥了个橙子,突然想到最好先备份一下她原来的rom。

    于是看了她的屏幕,显示的是loading flash。。。(在这里要874 OptiFlash的作者10000次或者tjjtds),想够慢的还在读那个文件,就先abort了当前的操作,打算备份她的软件先。

    叫她关机后重新按住*开机好让我备份,她说关不掉,我说你拔掉USB线试试看,她试了下也不行,那我说你重新装电板吧。重装电板开机,这时候,最最神奇的事情发生鸟:手机给了个大大的白屏。我这才意识到刚才loading flash其实是指在写入。。。难怪那么慢。我郁闷啊,用writing,用flashing,用burning,用updating都可以,干吗用loading。。。看来老外也有英文不怎么样的

    毕竟我是见过大场面的,让她把数据线接上,按住*开机。设备里面出现了COM7我知道没彻底刷坏,至少bootrom区还在工作,只要把新的bin填进去就可以了。于是决定直接刷E878软件。OptiFlash开始load S3文件,我开始吃橙子。。。吃好橙子洗好手去看看刷了多少,却看到一句话,好像是ERR_PROTOCOL。我知道有点麻烦了,问我妹妹怎么回事,她说刚才load到86%的时候手机白屏了。。。

    白屏的时候不像正常情况下系统认出COM5进入USB模式,而是直接不见了端口,说明和USB相关的代码被我的误刷新影响到了。

    我发扬锲而不舍的精神,重新来~~~86%又白屏了。。。我开始有点寒了,当下就做了一个重大而英明的决定:再去吃一个橙子!

    吃完回来再试一次,3x%就白屏了。但站在巨人肩膀上的我永远能看到常人所观察不到的问题:既然白屏并不是固定在86%,说明OptiFlash在load S3文件的时候其实不对手机进行操作,这就好办多了,什么时候白屏只是一个和时间相关的问题,这就解释了为什么我吃了个橙子就3x%的地方白屏了。

    本着严谨科学态度的我决定仔细看看刚才刷新的log,又经过几次DOE(design of experiment),发现OptiFlash工作的流程是:

    1。先发送一个指令到COM7,确定手机存在(不存在就报错)

    2。载入S3文件,所谓的载入其实是在分析文件,确认哪些地址是需要刷新

    3。载入完成发送刷新的初始化指令到COM7,之后应该是以串模式开始写这个端口

    另一个经验是手机接在USB上按住*开机后一段时间会白屏(退出刷新模式),而经过OptiFlash的步骤1后白屏会来的相当快

    同时做了一个大胆的假设:在手机白屏之前所有的于刷新有关的功能是正常的

那相应的突破口如下:

    1。让伪指令骗过OptiFlash使他不检测手机是否存在(推迟白屏的到来)

    这在我之前的S208(也是agere系统)上很简单,因为是串口的数据线,COM1或者COM2是事实存在的,而E870是USB的数据线,不插上手机是不会出现COM7

结论:无突破口

    2。跳过S3文件分析的过程或者缩短所需的时间

    跳过:我尝试找了OptiFlash所有的菜单没有找到相关的选项,换用3.7(希望低版本不作这样的检测)和4.51(高版本都不行)

    我又google了一下,找不到其他能写agere系统的工具

    缩短:结束掉所有不用的进程,关闭防火墙,结束所有非必要的CPU占用。。。结果在94%白屏。。。崩溃阿。。。妹妹当时我就让你买频率高一点的Pentium-M嘛

    3。在分析结束时能让手机standby在等待刷新的状态

    尝试在白屏后迅速重新开机,希望COM7能出现。。。但似乎COM7总在OptiFlash报错后才出现。怀疑是系统轮寻USB太慢所致,故意降低OptiFlash优先级,使之在手机白屏后处于停止状态(不给CPU时间)。。。不过好像OptiFlash此时锁住了系统不让他识别新的设备

    几乎要崩溃了,告诉妹妹我要睡觉了,明天继续刷新。。。

    第二天一早打个电话给三星,说明是国外带来的手机,刷新中文软件失败。。。。对方给的报价是300RMB。。。想想即使能修也是要开机取码片的。。。郁闷阿郁闷

    开始制定新的方案,然后打电话告诉我妹妹上网,我要继续昨天的刷新-_-b

    A。继续google其他的agere工具(可以不去检测S3文件完整性)

    B。先用OptiFlash尝试读取ROM,此时OptiFlash会给一次重启机器的机会,把这次机会放在刷新的步骤3(原谅我表达不清,实际操作太复杂了,相当于利用OptiFlash设计上的bug)

    C。尝试把原来E870的S3文件弄小点,加速分析过程,因为只有开头部分被覆盖成E878的,所以理论上只要能在白屏前写入到上次中止刷新的地方,就胜利了

    D。找台快点的电脑来刷

    最后实施到方案C就成功了

    先从blueshow下载了E870的D6版软件,用UltraEdit打开看了下

    发现每一行都有对应的地址,好办多了。听别人说完全刷一遍需要30分钟,通过吃橙子需要的5分钟估算了一下大概多少被覆盖了。把文件留了大概1/6其余全部删掉,重新保存为一个S3。

    之后在OptiFlash里设置difference only,这点很重要,跳过一样的block能加快刷新速度,因为我是在和会定时出现的白屏赛跑

    之后由于S3文件很小,OptiFlash分析的过程一闪而过直接进入了刷新状态,观察log,大概70%之后所有的flash都一样了,大概刷到90%白屏,但因为程序实质已经修复,手机重新开机正常。

    略过又刷成E878不表。。。反正我妹妹没发现永不掉话-_-b