目录
1.mtd工具的作用
mtd-utils是一组用于管理和维护Linux系统中Memory Technology Devices (MTD)的工具集合。mtd-utils为嵌入式Linux系统提供了强大的存储设备管理功能,特别是在处理闪存设备如NAND flash和NOR flash时,这些工具不仅提供了基本的操作功能,还支持高级的分区管理和文件系统格式化操作。
通常在嵌入式系统中,如果我们选用的存储器是nor flash,那么使用busybox自带的dd命令工具可以很方便地dump出flash各个分区的二进制数据进行分析;但如果我们选用的是nand flash,那么使用dd命令工具就比较有局限性了,因为其不可以读写nand flash上oob区域。
2.源码获取方式
发布包版本:https://infraroot.at/pub/mtd
Gitee版本:Gitee 极速下载/mtd-utilssource
3.编译方法
先配置个性化的环境变量
export CFLAGS="-muclibc"
export LDFLAGS="-muclibc"
再执行configure,生成编译参数,这里因为不想依赖lzo,zlib等工具,所以--without-crypto --without-zstd --without-ubifs --without-jffs,具体情况可以执行./configure --help看看帮助信息。
./configure --host=mips-linux --disable-tests --without-crypto --without-zstd --without-ubifs --without-jffs CC=mips-linux-gnu-gcc
再执行编译命令
make CROSS=mips-linux-gnu- WITHOUT_XATTR=1
4.nandwrite命令用法
使用dd命令去写mtd分区,其不具备标记坏块和跳过坏块的功能。nandwrite命令就具备标记坏块和跳过坏块的功能,如下所示:
# ./nandwrite -m -p /dev/mtd8 uImage_206.lzo-signed
Writing data to block 0 at offset 0x0
Writing data to block 1 at offset 0x20000
Writing data to block 2 at offset 0x40000
Writing data to block 3 at offset 0x60000
Writing data to block 4 at offset 0x80000
Writing data to block 5 at offset 0xa0000
Writing data to block 6 at offset 0xc0000
Writing data to block 7 at offset 0xe0000
Writing data to block 8 at offset 0x100000
Writing data to block 9 at offset 0x120000
Writing data to block 10 at offset 0x140000
Writing data to block 11 at offset 0x160000
Writing data to block 12 at offset