交叉编译mtd-utils工具(linux下flash工具)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一、下载源码包并解压
wget ftp:///pub/mtd‐utils/mtd‐utils‐1.5.1.tar.bz2
wget /zlib‐1.2.8.tar.gz
wget /opensource/lzo/download/lzo‐2.03.tar.gz
wget https:///pub/linux/utils/util‐linux/v2.21/util‐linux‐2.21.1.tar.gz
tar zxvf zlib‐1.2.8.tar.gz
tar zxvf lzo‐2.03.tar.gz
tar jxvf mtd‐utils‐1.5.1.tar.bz2
tar zxvf util‐linux‐2.21.1.tar.gz
二、编译安装zlib
1)
cd zlib‐1.2.8
CC=arm‐none‐linux‐gnueabi‐gcc ./configure ‐‐prefix= /usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi ‐‐shared
(注意:这里的/usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi是交叉编译工具默认目录。)
2)
make
make install
cd ..
3)
安装完成后会在/usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi /目录下生成三个目录:include、lib、share。
安装完后检查一下目录/usr/local/arm‐2007q1/zlib/
假如 include 中没有 zlib.h 之类的头文件,lib 中没有 libz.so.1.2.3 ,那就自己手动拷到这些目录下去,记着拷的时候把所有的 *.h 都需要拷过去,在拷库的时候用 cp ‐Ca libz.* /…./lib 就行,要用上 ‐Ca 选项。
三、编译安装lzo
1)
cd lzo‐2.03/
CC=arm‐none‐linux‐gnueabi‐gcc ./configure ‐‐host=arm‐none‐linux‐gnueabi ‐‐prefix=/usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi
2)
make
make install
cd ..
3)
同上
四、编译安装uuid
1)
cd util‐linux‐2.21.1/
./configure ‐‐prefix=/usr/local/arm‐2007q1/arm‐none‐linux‐gnueabi ‐‐host=arm‐none‐linux‐gnueabi ‐‐disable‐mount ‐‐disable‐makeinstall‐setuid ‐‐disable‐makeinstall‐chown ‐‐disable‐use‐tty‐group ‐‐disable‐chsh‐only‐listed ‐‐disable‐schedutils ‐‐disable‐wall ‐‐disable‐kill ‐‐disable‐pivot_root ‐‐disable‐switch_root ‐‐disable‐cramfs ‐‐disable‐agetty ‐‐disable‐unshare ‐‐disable‐fallocate ‐‐disable‐mountpoint ‐‐disable‐uuidd ‐‐disable‐partx ‐‐disable‐fsck ‐‐disable‐losetup ‐‐disable‐mount ‐‐disable‐libmount ‐‐disable‐tls ‐‐without‐ncurses
2)
make
make install
cd ..
3)
同上
五、交叉编译mtd‐utils
1)
cd mtd‐utils‐1.5.1/
2)
make CROSS=arm‐none‐linux‐gnueabi‐ WITHOUT_XATTR=1
查看下mtd‐utils‐1.0.0目录下是否生成了咱们所需要大工具(flashcp,nandwrite......等)。
有工具生成了,OK,交叉编译成功。
4)
将生成大工具拷贝到文件系统开发板的根文件系统,放在/bin 或/sbin 都行。再编译内核就OK拉。
五、补充
如果交叉编译器为 4.3.x以上 ,编译不通过,请参考
http://www.mail‐/ptxdist@pengutronix.de/msg01067.html
/patch/12689/
打补丁
六、mtd‐utils工具命令的使用
1)
使用命令前用cat /proc/mtd 查看一下mtdchar字符设备;或者用ls ‐l /dev/mtd*
#cat /proc/mtd
dev: size erasesize name
mtd0: 00c00000 00020000 "ROOTFS"
mtd1: 00200000 00020000 "BOOTLOADER"
mtd2: 00200000 00020000 "KERNEL"
mtd3: 03200000 00020000 "NAND ROOTFS partition"
mtd4: 04b00000 00020000 "NAND DATAFS partition"
为了更详细了解分区信息用mtd_debug命令
#mtd_debug info /dev/mtdX (不能使用mtdblockX, mtdblockX 只是提供用來 mount 而已) mtd.type = MTD_NORFLASH
mtd.flags =
mtd.size = 12582912 (12M)
mtd.erasesize = 131072 (128K)
mtd.oobblock = 1
mtd.oobsize = 0
mtd.ecctype = (unknown ECC type ‐ new MTD API maybe?)
regions = 0
2)
命令:flash_erase
作用:擦出指定范围内flash的内容,如果不指定,默认擦出起始位置的第一块,使相应flash 变为全1
用法:
flash_erase MTD‐device [start] [cnt (# erase blocks)] [lock]
MTD-device:待擦出的分区,如/dev/mtd0
start:起始位置设置,这里必须设置为0x20000(128K)的整数倍
cnt: 从start开始计算,要擦出的块数
lock: 写保护
eg: ./flash_erase /dev/mtd0 0x40000 5 //擦出mtd0分区上从0x40000开始的5块数据 ,128K/块