微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > MT6572用NAND编译出来的system.img怎么解包?

MT6572用NAND编译出来的system.img怎么解包?

时间:10-02 整理:3721RD 点击:
我现在用./unyaffs system.img解不了。
如果是MT6515平台上的system.img ,则可以用此方式解包。
NAND的PAGE是2K的。我用4K的unyaffs也解不了。
有谁搞过?
谢谢!

NAND的PAGE是4K的可以解?

以前MT6515时可以解的,现在MT6572不知道为何都不行了。

解的时候报什么错误么?

broken image file

试下这个:
[DESCRIPTION]
MTK codebase编译出来的image必须使用MTK codebase里的工具才能解开或打包,网络上的打包/解包工具不能在MTK的image里使用

[KEYWORD]
打包
解包
diff.pyc
pack.pyc

[SOLUTION]
解包/打包工具放在:mediatek/build/tools/images/

请先确认是否有打过patch:ALPS00393168,如果没有请打上再解包/打包
解包方法:使用diff.pyc工具
使用方法: python ./diff.pyc <image file>
<image file> 只能为 boot.img, system.img, userdata.img, or recovery.img
例子:
python ./diff.pyc boot.img
output ramdisk folder:  /tmp/xxxx
output kernel file: /tmp/xxxx-kernel
打包方法:使用pack.pyc工具
使用方法:
python ./pack.pyc [-2|-4|-eMMC size] <folder>
Option:
-2:  NAND 2K block
-4:  NAND 4K block
-eMMC size: eMMC image size, ex. -512 for 512MB
<folder> 只能是system, data, 或cache,否则制作出来的image权限不对,会开不了机
例子:
python ./pack.pyc -512 data
将data目录的文件打包生成EXT4格式的userdata.img

用这个方法试了。
解包还是报错,可能还需要patch.

解压system.img
用file命令查看文件格式:
    system.img: HIT archive data
解压缩步骤如下:
查看system.img文件长度,这里举例文件大小为190MB,所以使用虚拟NAND容量为256MB,以下命令载入nandsim:
    modprobe nandsim first_id_byte=0xec second_id_byte=0xd5 third_id_byte=0x51 fourth_id_byte=0xa6
dmesg可以看到系统模拟出一个2048MiB的NAND flash。
复制system.img数据到虚拟nand:
    dd if=system.img of=/dev/mtd0 bs=4096
载入ubi文件系统:
    modprobe ubi
把mtd设备attach到ubi系统中:
    ubiattach -m 0
如果系统提示以下错误信息:
ubiattach: error!: cannot attach mtd0
           error 22 (Invalid argument)
使用dmesg可以发现类似错误:
UBI error: validate_ec_hdr: bad VID header offset 4096, expected 1024
UBI error: validate_ec_hdr: bad EC header
那么使用offset参数载入:
    ubiattach -m 0 -O 4096
正确调用的话,系统返回信息:
    UBI device number 0, total 8192 LEBs (2080374784 bytes, 1.9 GiB), available 0 LEBs (0 bytes), LEB size 253952 bytes (248.0 KiB)
最后用mount命令载入文件系统:
    mount -t ubifs /dev/ubi0_0 /mnt/system/

成功载入的关键是选择正确的nandsim类型。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top