交叉编译mtd-utils工具(linux下flash工具)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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/块

相关文档
最新文档