这篇文章距离最后更新已过73 天,如果文章内容或图片资源失效,请留言反馈,我会及时处理,谢谢!
开启SPI FLASH支持
mtd-utils编译安装
参考链接
104790183
116712874
依赖库编译
ZLIB
#下载
wget http://www.zlib.net/zlib-1.3.1.tar.gz
#解压
tar -xvf zlib-1.3.1.tar.gz;cd zlib-1.3.1
#配置 CC指定编译器 --prefix指定安装目录
CC=arm-linux-gnueabihf-gcc ./configure --shared --prefix=/home/xuyongxian/V3S/mtd/depend_lib/zlib
#编译
make
#安装
make install
LZO
#下载
wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.03.tar.gz
#解压
tar -xvf lzo-2.03.tar.gz;cd lzo-2.03
#配置
CC=arm-linux-gnueabihf-gcc ./configure --host=arm-linux-gnueabihf --prefix=/home/xuyongxian/V3S/mtd/depend_lib/lzo
#编译
make
#安装
make install
UUID
#下载依赖的UUID库
wget https://sourceforge.net/projects/e2fsprogs/files/e2fsprogs/v1.45.3/e2fsprogs-1.45.3.tar.gz
#解压
tar -xvf e2fsprogs-1.45.3.tar.gz;cd e2fsprogs-1.45.3
#########不需要编译 下面的步骤可以省略 直接用下载下来的内容就可以#############
#配置
CC=arm-linux-gnueabihf-gcc ./configure --host=arm-linux-gnueabihf --prefix=/home/xuyongxian/V3S/mtd/depend_lib/e2fs
#编译
make
#安装
make install
mtd-utils编译
#配置 顶层Makefile文件 在Makefile文件最上方增加
export CROSS=arm-linux-gnueabihf-
CC := $(CROSS)gcc -EL
LDFLAGS := -static
DEPEND_LIB_PATH=/home/xuyongxian/V3S/mtd/depend_lib/
export ZLIBCPPFLAGS = -I${DEPEND_LIB_PATH}/zlib/include
export LZOCPPFLAGS = -I${DEPEND_LIB_PATH}/lzo/include/lzo
export UUIDCPPFLAGS = -I/home/xuyongxian/V3S/mtd/e2fsprogs-1.45.3/lib/
export ZLIBLDFLAGS = -L${DEPEND_LIB_PATH}/zlib/lib
export LZOLDFLAGS = -L${DEPEND_LIB_PATH}/lzo/lib
export UUIDLDFLAGS = -L/home/xuyongxian/V3S/mtd/e2fsprogs-1.45.3/lib/uuid
WITHOUT_XATTR = 1
#配置 mkfs.ubifs/Makefile文件
CPPFLAGS更改为 CPPFLAGS += $(ZLIBCPPFLAGS) $(LZOCPPFLAGS) ${UUIDCPPFLAGS}
LDLIBS_mkfs.ubifs更改为 LDLIBS_mkfs.ubifs += $(ZLIBLDFLAGS) $(LZOLDFLAGS) $(UUIDLDFLAGS)
#配置common.mk文件,修改安装路径
PREFIX 更改为 PREFIX=/home/xuyongxian/V3S/mtd/install
#编译
make
#安装
make install
#在安装目录下就能得到一系列的工具了,如果有的没有也可以去编译目录下找
#编译路径:/home/xuyongxian/V3S/mtd/mtd-utils-1.4.4/arm-linux-gnueabihf
成果物

错误解决
libmtd.c:442:10: error: called object ‘major’ is not a function or function pointer
打开libmtd.c文件,在文件头里面加上
#include <sys/sysmacros.h>
mtd-utils使用
#查看 MTD 的基本信息,如大小、擦写块大小、擦写次数等
mtdinfo /dev/mtd3
#擦除
./mtd_debug erase /dev/mtd0 0 1024000
#可以查看 flash 类型、块大小及 mtd 分区总大小,大小以10进制显示,分区大小就是 len
mtd_debug info
#查看 MTD 分区
cat /proc/mtd
#读取 MTD 分区
#dd 命令从 /dev/mtd3 中读取数据。例如,要读取 mtd3 分区的前 10KB 数据
dd if=/dev/mtd3 of=flash_data.bin bs=1024 count=10
#写入 MTD 分区
flashcp data.bin /dev/mtd3
#擦除 MTD 分区
#擦除 mtd3 分区的前 1MB 数据
flash_erase /dev/mtd3 0 16
#全部擦除
flash_erase all /dev/mtd0