Sp flash tool(全称smart phone flashtool)是联发科(MTK)开发的,针对其研发的智能手机(androidOS)的刷机工具.同时,该工具可作为生产时的软件下载工具.该工具除了具备软件下载功能,还可以对手机的存储芯片进行读取(readback)操作.类似高通手机的Qpst工具.
题外话不多说,直入主题.
准备工作:电脑一台,并安装window操作系统(推荐windowxp).MTK智能手机一台.官方手机驱动一份,可从官网下载.MTK平台sp flashtool刷机驱动一份.普通USB数据线一根.sp flash tool刷机工具.
MTK平台sp flashtool刷机驱动可从百度网盘分享下载,其中附带解决驱动inf无效的方法: http://pan.baidu.com/share/link?shareid=501465831&uk=2536832031&third=15
sp flashtool工具v3.1222.00(英文版,网上还有中文件版): http://pan.baidu.com/share/link?shareid=3008619228&uk=2536832031
几点需要掌握:scatter文件及获得.刷机工具使用方法.回读地址及长度计算.从回读的preloader.bin与DSP_BL文件中得到正解的preloader与DSP_BL
手机状态:不管是刷机还是回读,都要将手机关机,将电池取出.
一:
scatter文件及获得:
scatter(一种刷机文件分散加载的方法)文件是刷机工具对手机磁盘读取与刷写的依据.不同手机,该文件是不同的,不可在不同手机间通用.
scatter文件可以从官方刷机包(没包?)或者是官方ota补丁升级小包中解压得到,也可以使用工具生成.
下载补丁包,不升级,文件管理器进入内置(或外置)sd卡一个个文件夹找,可以找到.该补丁包在升级结束就自动删掉的.下面先说怎么使用工具获得对应手机的scatter文件.
首先下载安装官方手机驱动,并安装.
使用MTKandroidtool工具可以生成对应手机的scatter文件.
下载地址: http://pan.baidu.com/share/link?shareid=526659&uk=2536832031&third=15
下载解压压缩包,进入解压目录.
打开手机usb调试.连接电脑,这时候你应该早就准备好驱动!如果电脑识别不到手机,请检查驱动.
双击运行主程序MTKandroidtool:打开如下界面:
找到"模块详细地址 程度",并点击它.
然后弹出如下界面:
然后在左下角点击"创建一个秒速文件"
在弹出的窗口选择你的保存路径即可:
该工具的使用本人并没有太多测试,对于生成scatter文件以外的功能,不推荐尝试.同时,为避免不必要麻烦.请小心使用本工具.
二:
刷机工具的使用:
下载安装官方手机驱动,再下载解压并安装sp flashtool刷机驱动(以下简称刷机驱动).如提示inf段落无效.则进入刷机驱动解压目录,找到"解决inf无效"文件夹.把对应文件拷贝到需要的地方。
WIN7的,和上述方法一样,但是如果还是找不到驱动,那么你需要手动将驱动指向到“MT6575刷机驱动_自动安装Win7”里面去!
在安装刷机驱动之后,下载并解压sp flashtool工具.该工具大多是绿色版,解压即可使用.如果不小心下载了别的厂商定制的版本,可能需要安装.
进入刷机工具目录,双击主程序Flash_tool.exe即可打开工具.如下图所示:
读取ROM与刷机操作在前部分是相似的.只是要切换工具到回读模式(read back).
1) 在切换readback模式之前,先选择scatter文件。也就是之前MTKdroidtool生成的scatter文件.也可以从官方升级包中找到。
单击scatter-loading,见下图。该scatter文件仅作为示例文件。
2)如图,将工具从Download切换到read back:
注意到工具窗口上的add(添加)按扭,该按钮可以设置读取的"分区",要获得一份完整原厂ROM线刷包,那么,add(添加)的分区个数是要与scatter中一样的.
要特别说明的是,FAT分区是内置sd卡,可以不回读.另外,有些手机最后一个分区的长度是难以计算的(该分区大多是fat分区).即使根据分区表来算,有时我们也只能知道剩下的磁盘空间全部给最后一个分区.这部分一般不重要,也不回读(在特殊情况需要知道其分区大小,可以借助adb工具辅以busybox用命令fdisk-l /dev/block/mmcblk0察看,或者cat/proc/dumchar_info试试).对于一台手机来说,重要的是几个img文件,及preloader.bin,DSP_BL.bin,MBR.bin,EBR.bin,secro.bin等bin文件.
当然,我们可以只读取某个分区的文件.
如图所示:
重要的部分是回读(read back)的开始地址与长度设置.
三:
回读开始地址与长度计算:
双击ROM_0条目.弹出对话框,选择保存路径.可以在工具目录创建一个"回读文件"文件夹。如图,
在保存的时候可以命名为其它名字,也可以使用ROM_表示.但文件名字终究只是名字,不代表文件类型与内容.
如果是回读完整线刷包,ROM_0一般是preloader.bin文件,它的开始地址(一般是0x0)与长度需要打开scatter文件察看并计算:
使用支持文本高亮显示的编辑器。比如SciTe,notepat++等打开,不推荐window自带计事本打开.
(notepa++安装程序: http://pan.baidu.com/share/link?shareid=2071424291&uk=2536832031)
你将看到,每一个刷机文件后面的大括号后是一个形如0x4000的字符。这个就是刷机文件的开始地址。两个开始地址之间的差,就是前一个线刷文件的长度或者说大小。是十六进制数:
如下:
preloader开始地址0x0
DSP_BL开始地址0x40000,该地址也是preloader的结束地址(其它回读文件的开始地址也是这个道理的).
等等.
1)某个分区的开始地址,就是上一个分区的结束地址(十六进制数表示,单位为字节).忽略1M的分区间隔.有三处间隔.
2)回读的长度,设置为分区的长度(或者说是大小.为十六进制数表示).两个起始地址之差,就是前一个线刷文件的长度或者说大小。是十六进制数.
计算方法:
打开window自带计算器,切换到科学型(win7系统则是切换到程度员模式).这样,我们就可以计算十六进制数.
用相应分区的结束地址减去它的开始地址就是该分区的长度/大小.相应分区的结束地址并没有在scatter文件中明确标出,但该结束地址就是下一个分区的开始地址---(注意).
所有分区的开始地址与长度设置都要经过察看scatter文件并计算得出,我们不能套用某个分区的开始地址与长度到另一个分区上,这是不正确的(即使回读进度条走动,但这不意味着所得到的文件是正确的)
开始回读:
在设置好所有分区的开始地址与长度后,点击工具上的"Readback"按钮(是指第三行的按钮,而不是第二行的.第二二行是切换工具的工作模式).这时将准备好的手机连接电脑.如果设置正确,并且驱动安装无误,回读进度条应该走动.弹出OK绿色框表示回读全部结束.
四:
从回读的preloader.bin与DSP_BL文件中得到正解的preloader与DSP_BL
最后,需要对回读出的preloader.bin与DSP_BL.bin修改,方能得到正确的preloader.bin与DSP_BL.bin文件(这两个文件就是MTK开机引导程序).
这一步一定要做,因为,原始preloader与DSP_BL文件刷入手机后,其在磁盘中的位置发生变化,但它们的全部仍包含在以上所述回读所得的两个文件中.只是需要选择出来而已.如果这两个文件不正解,在刷进手机后将导致无法开机.除非在刷机的时候选择Download模式,并将两者前的勾去掉.即不更新这两个文件.
需要使用winhex工具选择出preloader与DSP_BL
回读错误分析:
回读文件测试:
文件修改:后续.
本人首先是在vivo智能手机给出相同方法.但本文是现在才编辑的.更多可以访问http://bbs.vivo.com.cn/thread-877612-1-1.html
更多关于ROM备份及修改的方法可以在以下链接找http://bbs.vivo.com.cn/home.php?mod=space&uid=5671652&do=thread&view=me&from=space