| |

iFix 爱修网

 找回密码
 注册

QQ登录

只需一步,快速开始

iFix爱修网知识星球,等待你的加入。。。
查看: 13687|回复: 36

以TCL828 838机芯为例详解量产软件制作方法

  [复制链接]
发表于: 2019-10-23 14:15:19
| 显示全部楼层 |阅读模式


量产软件一直是大家比较关心的问题,量产软件的制作原理并不难,而是在于验证成本,需要板卡多次验证,才能放出去给大家用,维修爱好者们对量产软件的制作一直非常感兴趣,以前没放出来是为了保证量产软件的可靠性,目前来说,爱修网经过两年多时间的大量量产软件制作,已经覆盖了绝大部分板卡,已经完全满足维修者使用。


既然如此,我们就把量产软件制作的流程公布出来,以便大家方便交流学习之用,这里以TCL828机芯为例,来了解量产制作的原理。


预抄写本质上是将EMMC上的数据原封不动地复制到U盘上。在我们用网线升级包、OTA升级包、强制升级包升级时,系统第一次运行起来后要优化一些应用数据,其实就是在data分区记录一些应用的信息,例如为每个预装的应用创建文件夹等。所以第一次启动要较长时间。预抄写程序是在机器运行起来以后才将EMMC克隆到U盘的,所有应用都优化好了,能使产线上的机器启动时间缩短。目前MS828制作过预抄写的产品有8g、16g的产品。

MS828预抄写需要提供两个文件:从母片dump出来的emmc.bin和rom_emmc_boot.bin

一、主程序预抄写制作1.清除环境,升级到对应版本

1.1清除boot ENV

先进入mboot输入命令

<<MStar >>#cleanallenv       清除环境变量

<<Mstar>>#mmc erase.boot 2    //清除boot2分区数据

1.2升级主程序

进入mboot命令行,执行mstar命令升级,控制台下输入cu。

1.3确认EMMC分区是否正确

在Mboot命令行,输入如下命令:

<<MStar >># mmc part

在16G机器能看到如下信息:

QQ截图20191023141130.png

确认MBOOT/MPOOL/MBOOTBAK分区是否正确,正确分区如图所示,分别为3M/10M/3M,前期出现过由于硬件空片烧录EMMC时mooot版本不对,导致这三个分区大小有误。

2.确认状态2.1确认projectID

图像设置菜单“对比度”选项-遥控器输入1950-Service menu-Project ID

如果屏ID不对,需要先切换到正确的屏ID。

2.2清除HDCP Key2.2数据目录下的内容

   需要清除电视机中HDCP Key2.2数据目录下的数据,输入命令:

rm –rf /data/tee/*

删除后,重启,进入mboot命令行查看是否已删除干净,输入命令:ext4ls mmc 0:17 /tee

(以上命令视每个机型的分区不同而不同,mmc 0:17中的17是程序中userdata分区序号,在mboot命令行中,输入mmc part可以查询userdata分区的序号)

查询结果如下是已删除数据的

QQ截图20191023141202.png

查询结果类似如下是未删除数据的

QQ截图20191023141223.png

2.3恢复出厂设置

在设置菜单中找到恢复出厂设置选项,执行

Shop init一遍

2.4 power on mode修改为on

图像设置菜单“对比度”选项-输入1950-Factory menu-power on mode 打为on

2.5打开P模式

制作预抄写时要进入工厂将P模式打开,打开P模式后在电视机屏幕的左下角有信息显示,第一行是一个P 字母。

打开P模式具体方法:

图像设置菜单“对比度”选项-输入1950-Factory menu-0-Factory hotkey 打为on

2.6UART修改为ON

串口信息(如果机器不能看串口信息时才要操作该项)

图像设置菜单“对比度”选项à输入1950-Other-Uart Enable (如果本来是on,最好切成off再切换成on,确保是正确的状态)

2.7频道预置

图像设置菜单“对比度”选项-输入1950-Factory menu-9-Preset Factory Channel

Factory Area 选择HZ,焦点切换到Channel Preset ,左键或者右键进行频道预制,下方会有提示。

2.8自动音量为关

声音设置菜单“自动音量”选项 设为关(设置-声音-高级设置-自动音量)

2.9清除应用残留注册信息

系统菜单-应用-全部应用-微信互联-清除数据

2.10设置选项循环一遍初始化数据

AV界面下,按Option键,进入设置,从上到下进入系统,从上到下焦点过一遍,然后再进入通用,从上到下过一遍

2.11进行待机,看指示灯闪烁是否正常

正常情况为家庭模式:即 待机状态开始频繁闪烁后变为常亮状态。

3预抄写之前注意事项3.1保证机器状态稳定

确保机器不要中途被移动、操作设置等动作,保证机器状态稳定。

3.2确保软件环境干净

确保软件环境不被污染,机器在升级中和升级后不要连接外网。

3.3保证机器运行正常

预抄写过程中不要待机断电。

4制作预抄写4.1 U盘大小和格式确认  15269880

将U盘格式化为FAT32格式,并保证你的U盘的容量>EMMC的总大小。

确定EMMC大小办法:

在Mboot命令行,输入如下命令:

<< MStar >># mmc size

在16G的版本中能看到如下信息:(Totalsize为当前板上EMMC的总大小,单位字节)

此处设置Blocknum变量大小为下图信息获取的值。(在后面用到)

QQ截图20191023141246.png

4.2确定USB接口

将格式化后的U盘插到USB2.0的口上或扩展板的USB口上,MS828开发板使用端口0-3

4.3抄写程序从EMMC到U盘

进入到Mboot命令行,输入以下命令,数据流向是从Flash到U盘:

mmc dd mmc2usb 3 注释:MS828开发板使用端口3,如不对请试试其他端口0-3

上面命令的意思是从Flash上复制数据到U盘上,使用默认USB口 3。如果U盘所插的USB口正确,就会开始复制数据,等到复制100%后就会完成。

此过程大约十五分钟左右,并且在抄写过程中千万别手贱不小心点击回车键啊,因为点击回车他会在做完一次预抄写之后会重复再做一次的啊。。。。

系统这些命令可以在Mboot状态下,直接输入mmc命令查看帮助。在MS828的Mboot中敲入mmc后可以看见如下帮助信息:  

4.4将U盘数据保存在电脑本地

在Flash数据克隆到U盘完成后,将U盘插到电脑上,这个时候是不能打开的,电脑通常会提示格式化,特别是Win 7或装了360的系统会自动弹出格式化界面,但千万不要格式化,系统克隆后的数据就在U盘里,格式化后将要重新制作预抄写。

打开Winhex工具,用以下A/B两种方法均可

QQ截图20191023141309.png

A. Tools -> Disk Tools -> Clone Disk

需要输入如下信息:

Source:medium  :需要克隆的U盘盘符

Destination:raw image file:保存Img文件的磁盘位置和名字,如V026.img。

Start sector:clone开始地址,为0

Number of sectors to copy: 复制的sectors数,计算方式如下:

1 sector为512byte,如计算16G Flash,从之前mmc size命令可以得到  Totalsize=15757996032bytes

考虑到以后生产某些新Flash容量会比这个小的问题,一般要留出200M多的空间兼容,实质用到的空间取为

15757996032bytes -200*1024*1024=15548284928bytes

15548284928bytes/512=30367744 blocks

所以Number of sectors to copy填写Blocknum小的值

QQ截图20191023141329.png


B. Tools->Open Disk


        当中选择我们插到PC上的U盘。选择打开出现各种十六进制数据。

然后进行FileàCreate Disk Image,会弹出如下对话框,同方法A



QQ截图20191023141346.png

名字最好命名为emmc.bin。Scope sectors的范围改为如下图的Blocknum小一点的值。比如此时可以写成15269800

QQ截图20191023141412.png

当提示这个的时候

QQ截图20191023141430.png

恭喜你,完成了。

4.5替换mboot

注意:MS828项目使用了高安芯片需要做此步骤,替换emmc.bin里的MBOOT分区数据(must do it!)

从母片dump出来的emmc.bin里MBOOT分区数据,实质是mboot.bin。但是mboot.bin里的CustomerKeyBank被母片对应的efuse里unique key加密了,所以需要把emmc.bin里MBOOT分区的数据还原为原始的mboot.bin。

在linux 下用程序mbootnize处理即可:

#./mbootnize mboot.bin emmc.bin new_emmc.bin

工具在见下面的附件(替换mboot和mboot-bak分区)

QQ截图20191023141450.png

参数说明:

mboot.bin: 原始的mboot.bin。

emmc.bin: 从母片里dump出来的数据。

new_emmc.bin: 替换MBOOT分区数据后的emmc.bin。

替换后的new_emmc.bin即是我们需要的预抄写软件,至此,预抄写制作已经完成。


5预抄写验证

验证预抄写是为了判别在上面制作出的img的数据是否正确。要将上面制作出来的img 通过WinHex 工具克隆回到U盘里,然后再插到电视机USB2.0口上复制回到EMMC,看机器能否正常开机。

5.1将做好的img数据克隆到U盘

插U盘到电脑,选择Tools->Disk Tools->Clone Disk

QQ截图20191023141509.png

Source:raw image file ,选择你需要验证的预抄写软件img。

Destination: medium,这里选择你要克隆的U盘的物理位置,通过磁盘标志选择,如上图红色标记。

Copy entire raw image file :将前面的勾选上

Start sector(destination):填 0

点OK后会开始克隆到U盘,等待一段时间后就克隆完毕,克隆完毕后U盘是打不开的,请不要格式化数据。

5.2将克隆好的U盘数据复制回到电视机的EMMC

将在上一步做好的U盘插到电视机的USB2.0的口上,上电,进入MBOOT命令行,执行命令mmc  erase ,将EMMC上的系统擦掉。在这样的状态下,执行命令mmc  dd usb2mmc 3

如下图:

mmc  erase

mmc dd usb2mmc 3

QQ截图20191023141534.png

当数据写到100%以后,电视机会自动进入MBOOT状态,此时reset即可启动,检查电视机是否是在P模式、串口是否有打印信息、其他各个功能是否正常。如果都正常,证明预抄写是OK的,可以发给工厂使用。

★反抄回去后,查看HDCP Key是否已清除掉,需要在mboot命令行输入命令:ext4ls mmc 0:17 /tee

(以上命令视每个机型的分区不同而不同,mmc 0:17中的17是程序中userdata分区序号,在mboot命令行中,输入mmc part可以查询userdata分区的序号)

如果查询里面有数据,则原本机器里面的HDCP Key没有擦除干净

查询结果如下是已删除数据的

QQ截图20191023141556.png

查询结果类似如下是未删除数据的

QQ截图20191023141621.png


好了!量产软件的制作流程就聊到这里,有兴趣的维修爱好者可以自行学习研究,更多爱修独有的课程尽在爱修学院比如说高手面临高安加密的时候只需要输入一个命令就可以3秒解密,心动吗?心动不如行动!“智能电视维修 百人精英计划”正式启动![url]http://www.ifix.net.cn/thread-93765-1-1.html[/url]


回复

使用道具 举报

发表于: 2019-10-23 17:21:02
| 显示全部楼层
Thank you indeed for your post.
回复 支持 反对

使用道具 举报

发表于: 2019-10-24 13:32:22
| 显示全部楼层
工具在见下面的附件(替换mboot和mboot-bak分区) 版主附件在哪里
回复 支持 反对

使用道具 举报

发表于: 2019-10-25 08:36:49
| 显示全部楼层
太深奥了  理解不了
回复 支持 反对

使用道具 举报

 楼主| 发表于: 2019-10-25 09:19:36
| 显示全部楼层
逆水寒 2019-10-25 08:36
太深奥了  理解不了

所以需要更多的学习
回复 支持 反对

使用道具 举报

发表于: 2019-10-25 09:33:27
| 显示全部楼层

Thank you indeed for your post.
回复 支持 反对

使用道具 举报

发表于: 2019-10-25 23:53:49
| 显示全部楼层
太高深了,看了N次理解不了
回复 支持 反对

使用道具 举报

 楼主| 发表于: 2019-10-26 08:48:08
| 显示全部楼层
五彩缤纷 2019-10-25 23:53
太高深了,看了N次理解不了

欢迎来实地交流学习
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|||iFix 爱修网 ( 粤ICP备2021135374号 )

粤公网安备 44060602002064号

GMT+8, 2024-3-29 19:27 , Processed in 0.062124 sec., 12 queries .

Powered by Discuz! X3.4

Release 20191201, © 2001-2024 Comsenz Inc.

MultiLingual version, Rev. 850, © 2009-2024 codersclub.org

快速回复 返回顶部 返回列表