1.1. 简介

母片复制,即把母片emmc flash 里的数据dump出来,再用烧录器把dump出来的数据烧到空的emmc flash里。 从而实现emmc flash的复制。

GTV使用了emmc flash里的boot1区和user区。所以烧录emmc flash的时候,需要分别烧录这2个区。

烧写时,需要设置烧录器的extended CSD register:
1 烧写boot1区时,需要设置 ECSD 179=0x49, ECSD 177=0x0a
2 烧写user区时 ,需要设置 ECSD 179 = 0x48

1.2. 烧录boot1区

boot1区里存放的是rom_emmc_boot.bin。由于rom_emmc_boot.bin里的hash0可能会被efuse里的unique key加密,所以需要直接烧录原始的rom_emmc_boot.bin到boot1区。

1.3. 烧录user区

1.3.1.  从母片dump user区数据

 烧录user区,需要在mboot 命令行里把母片 emmc flash里的数据dump到U盘里。由于FAT 4G文件大小的限制,所以这里分2种情况介绍emmc.bin的生成。

1. 总容量小于4G 的emmc flash 步骤

1)   确定U盘的利用的port number

插上U盘(格式化为FAT32格式,容量应不小于EMMC总容量)后,用命令确定USB port

#usb start [port number]

比如确认是否插在port 1, 输入

#usb start 1

如果打印发现设备,则当前确用port 1。

2)  使用emmcbin命令将EMMC中数据复制到U盘文件中。

#emmcbin [port number]

比如上面使用port 1, 输入

#emmcbin 1

等待进度条完成并提示dump完成后,会在U盘下生成一个名为emmc.bin, 大小跟EMMC容量一致的文件(emmc容量可通过mmc size命令查询)。

2. 总容量大于4G 的emmc flash 步骤

1) 插上U盘(格式化为FAT32格式,容量应不小于EMMC总容量)后,如果不确定插

哪个usb port,可以先用

#usb start [port number]

命令确认,比如确认是否插在port 1, 输入

#usb start 1

如果打印发现设备则当前确用port 1。

2) 使用 mmc dd 命令将EMMC数据复制到U盘中。

#mmc dd mmc2usb [port number]

比如上面使用port 1, 输入

#mmc dd mmc2usb 1

等待复制完成(提示100%)后,记住dump下来的总大小(block数),其实也就是EMMC总容量,会在打印的最后一行给出来:

Dump Block: XXX

3)  在PC上使用winhex将u盘中刚dump的数据复制到文件中。选择Tools->Disk tools->Clone disk。

Souce选U盘,Destination选择新创建目标文件目录。Start sector填0,即从U盘开始处读数据,注意这里的Number of sectors to copy需要填2)中“Dump Block:”后跟的大小,然后点OK等待制作完成。

注:参考rui.wang写的《Emmc_MLC_bin制作方法.doc》

1.3.2.  替换emmc.bin里的MBOOT分区数据

从母片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.bin: 原始的mboot.bin。

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

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

1.3.3.  用烧录器烧写user区

用烧录器把生成的new_emmc.bin烧到user区即可。

 

发表评论

您的电子邮箱地址不会被公开。