■郑重声明:『罗波波』这个账号仅在znds开户,未来也是如此 ■概述: 精简强刷包的通常做法-原厂强刷包(tb上5元不贵)解包后修改img镜像再打包。使用时,先刷原厂强刷包,再刷自制精简强刷包。可是,要是没有原厂强刷包,或者对于版本有要求(同一机型厂家会升级多次 固件,具体哪一个固件版本好用需要自己亲身体验才知道,你搞到的强刷包到底是哪一个版本,卖家即便知道也不一定是自己心仪的版本)那该怎么办呢? 本文介绍的自制强刷包方法,镜像文件来源有两个:a-串口备份出来的,b-官方OTA 刷机包提取出来的。 看了一下5S58_K5C的官方OTA固件包,里面只升级MBOOT、boot、recovery、dtb、factory、RTPM、system、tvconfig、tvservice几个分区,若设备当前的某分区版本和你心仪的固件版本一致,那么理论上该分区就无需再刷一次。而总计22个分区呢,剩下的分区OTA不升级也就说明其分区数据没有变化或是由其它分区自动生成的(如MPOOL、misc),所以制作强刷包时可不必加入或不能加入。 那么是否有必要刷MBOOT呢,经验证,刷不同版本的MBOOT,Uboot和安卓系统均可正常启动。所以也可以不刷。不刷的考虑是:万一在刷入MBOOT的过程中突然断电,那么就会导致Uboot无法进入! 在一台安卓9.0Mstar机顶盒实测,强刷包必须包含boot、recovery、system、vendor分区,否则只有system分区的话-会出现启动黑屏无法进入系统的现象。在本人5S58_K5C安卓6.0设备上,强刷包可以单独刷入system分区。论坛里下了几个创酷精简强刷包安卓6.0&5.0,都是只刷system分区。若是uboot下刷机,上面两个设备都可以单独刷入某个分区。若要单独刷入非system分区,不建议用强刷包的方式,大概率会出问题,建议uboot或系统shell刷。 5S58_K5C191223版固件,单独刷入180524版system镜像(已精简),系统可正常运行。 ■工具MStarBinTool-GUI(这个应该是俄罗斯大神制作的,它和MStarBinToolMaster命令行工具肯定不是Mstar官方工具) ■所有路径为英文路径 ■强刷的本质:自动进入uboot模式执行包内自动化脚本来完成刷机,不会验证是否匹配本机型。 ■实测32位WIN7会打包出错 ■配置文件Config.xml 不限品牌机型,任意下载一个MstarUpgrade.bin强刷包,仅解包「脚本+配置」: 工具Notepad++打开MStarBinTool-GUI所在目录...\work\xxxx\下的Config.xml文件。 <Configuration>: 各字段的默认值通常如图所示,基本无需更改。里面的TypeCRC设置为0是不起作用的,MStarBinTool-GUI会自动设置为1(可以是2、3)。也就是说,MStarBinTool-GUI打包生成的MstarUpgrade.bin刷机包是有CRC校验的,用WinHex替换里面的分区文件是不行的,刷机时CRC校验失败会报错导致无法刷入。 16进制RamAddress:刷机包内img文件的Ram存放起始地址,单位字节。 下载了非5S58_K5C的6个创酷强刷包(安卓5.0、6.0、8.0),还有 TCL(安卓6.0)、烽火(安卓9.0)、移动(安卓4.x)各1个,总计9个包,只有1个创酷安卓8.0的RamAddress是28A00000,其它8个都是20200000。 对于5S58_K5C,自测了一下,20200000、20220000、20200200都可以成功刷入,22200000刷到50%失败。其它数值没有试验,具体有什么讲究不清楚。 <UserPartTable>: 这一部分配置了-重新分区,通常情况下自己的设备分区是完好的,所以没有必要,把配置区域删掉即可: 若要重新分区,务必要按照原厂修改,Size单位字节。 <ImageList>: 该部分配置了如何刷入img文件。Image Name是准确的分区名,Compress-压缩,Sparse-稀疏(可以减少体积),Split-分割。Compress和Sparse若同时设置为Yes,试了一下,只能满足Compress。通常体积较大的分区需要设置Compress或Sparse,个人习惯设置Compress-Yes,体积减少会更多。体积大的分区务必要Split-Yes,否则:例如system分区超过了1G,这样Ram无法完整存放,会导致system分区无法刷入。EmptySkip没搞明白啥意思,Yes、No都试了一下,似乎没啥影响。Path="img文件名"一定要和实际的文件名一致。 <Environments>: 看到这一部分,很多人都一头雾水而被劝退,不怕,有简单方法配置该部分。 该部分是用来配置uboot环境变量的,那么对于自己机型该如何设置呢? 找到了这个文件/system/etc/set_env: 将其内容复制出来,将最后两行替换为下面两行即可: setenv MstarUpgrade_complete 1 saveenv 而后添加到Config.xml文件里的<Environments>-<PostEnv>部分。里面没用的环境变量可以去掉,例如BootVideo... 查看设备uboot的环境变量命令:printenv 删除某一变量:setevn [变量名] ■<Environments>补充说明 事实上,只要你的设备一切正常,uboot里的环境变量必是保存设置好的,制作强刷包时无需特别配置环境变量,只需配置几行就可以啦: setenv MstarUpgrade_complete 1 setenv sync_mmap 1 setenv db_table 0 saveenv 前面提到的<Environments>配置方法,(除非是环境变量丢失),起到的作用完全是-「心里踏实」,哈哈....^_^ ■一直没搞明白uboot环境变量到底存放在什么地方,求高手指点。 ■制作强刷包 Config.xml文件已配置好,再将img镜像文件放入Config.xml所在目录,MStarBinTool-GUI打开配置文件: 「打包模式」选择-下载。若是Config.xml里有重新分区,会自动选择「格式+下载」,点击「分区」,可查看重新分区的详情。 查看需要刷机的镜像: 红色代表危险,蓝色代表该分区文件丢失,需确认文件是否存在(检查文件名)。给需要刷机的分区打上勾。MStarBinTool-GUI「配置」、「环境」是由Config.xml决定的,可以在此检查修改。「脚本」此时为空,打包过程中会自动生成并添加到刷机包里。确认无误后,就可以点击「打包固件」按钮了。 新的刷机包在.../work目录下,将其改名为MstarUpgrade.bin即可。 ■注意: U盘强刷过程中,任何一个环节(例如刷某个镜像、设置某个环境变量)出错,都会导致刷机过程报错而中断!即便后面的各环节是完全没有问题的!所以建议强刷时连好串口PuTTY跑个码,这样才知道哪一环节报错! ■设置串口为开启状态 在uboot里执行或者在自制强刷包配置文件<Environments>里添加: setenv bootdelay 0 saveenv 数值0代表设备启动时键盘敲键进入uboot的窗口时间,单位秒,如果>0,则会增加系统启动时间。若要禁止进入uboot,可设为-1。有些设备MBOOT里是写死的,只能是0。 或者: setenv UARTOnOff on saveenv 有些设备的MBOOT里写死了是on,无法设置为off。
◆下期预告:(五)固件发布◆
|