转载:http://blog.csdn.net/neiloid/article/details/7614574

关于mtd-utils的移植,在Ubuntu Server 10.04平台上交叉编译,移植到嵌入式Linux,经过实践,以下是交叉编译的正确步骤,不保证在其他环境中能正确运行,以下是编译环境:

build: Ubuntu Server 10.04

host: Linux version 2.6.32.15-15-sigma

cross compiler:mips-linux-gnu-gcc version:4.3.2

cpu: mips

交叉编译mtd-utils,依赖(zlib,lzo);

Download Open Sources:

mtd-utils-1.0.0.tar.gz (Address:ftp://ftp.infradead.org/pub/mtd-utils/)

zlib-1.2.3.tar.gz

lzo-2.03.tar.gz

Building zlib-1.2.3.tar.gz:

tar zxvf zlib-1.2.3.tar.gz

cd zlib-1.2.3/

CC="mips-linux-gnu-gcc -EL" ./configure --shared --prefix=/home/gzshun/zlib/ (动态库*.so)

CC="mips-linux-gnu-gcc -EL" ./configure --prefix=/home/gzshun/zlib/ (静态库*.a)

make

make install

Building lzo-2.03.tar.gz:

tar zxvf lzo-2.03.tar.gz

cd lzo-2.03/

./configure --host=mips-linux-gnu CC="mips-linux-gnu-gcc -EL" --prefix=/home/gzshun/lzo/

make

make install

将上述2个开源包的安装目录include里面的头文件拷贝到mips交叉编译器相应的include目录下。

本人的环境:cp -a /home/gzshun/zlib/include/* /home/gzshun/lzo/include/* /usr/local/src/mips-4.3/mips-linux-gnu/libc/usr/include/

Building mtd-utils-1.0.0.tar.gz:

tar zxvf mtd-utils-1.0.0.tar.gz

cd mtd-utils-1.0.0/

动态编译:

vi Makefile

修改内容如下:

9 CROSS=mips-linux-gnu-

10 CC := $(CROSS)gcc -EL

42 mkfs.jffs2: crc32.o compr_rtime.o mkfs.jffs2.o compr_zlib.o compr.o

43 $(CC) $(LDFLAGS) -o $@ $^ /home/gzshun/zlib/lib/libz.so #-lz

48 jffs2reader: jffs2reader.o

49 $(CC) $(LDFLAGS) -o $@ $^ /home/gzshun/zlib/lib/libz.so #-lz

57 INSTALL_DIR=/home/gzshun/mtd-utils

58

59 install: ${TARGETS}

60 mkdir -p ${INSTALL_DIR}/sbin

61 install -m0755 ${TARGETS} ${INSTALL_DIR}/sbin

62 mkdir -p ${INSTALL_DIR}/man/man1

63 gzip -c mkfs.jffs2.1 > ${INSTALL_DIR}/man/man1/mkfs.jffs2.1.gz

保存退出

静态编译:

vi Makefile

修改内容如下:

9 CROSS=mips-linux-gnu-

10 CC := $(CROSS)gcc -EL

12 LDFLAGS := -static

25 $(CC) $(LDFLAGS) -g -o $@ $^

43 mkfs.jffs2: crc32.o compr_rtime.o mkfs.jffs2.o compr_zlib.o compr.o

44 $(CC) $(LDFLAGS) -o $@ $^ /home/gzshun/zlib/lib/libz.a #-lz

45

46 flash_eraseall: crc32.o flash_eraseall.o

47 $(CC) $(LDFLAGS) -o $@ $^

48

49 jffs2reader: jffs2reader.o

50 $(CC) $(LDFLAGS) -o $@ $^ /home/gzshun/zlib/lib/libz.a #-lz

58 INSTALL_DIR=/home/gzshun/others/mtd-utils

59

60 install: ${TARGETS}

61 mkdir -p ${INSTALL_DIR}/sbin

62 install -m0755 ${TARGETS} ${INSTALL_DIR}/sbin

63 mkdir -p ${INSTALL_DIR}/man/man1

64 gzip -c mkfs.jffs2.1 > ${INSTALL_DIR}/man/man1/mkfs.jffs2.1.gz

保存退出

make

make install

mtd-utils命令安装到/home/gzshun/mtd-utils/sbin/目录下。

由于交叉编译开源软件包,不涉及到具体难题,没有逐一解释,只提供编译步骤。

=======================================

下面文章经过网上转载,如有侵犯版权问题,请通知。本人立即删除

mtd-utils工具包的使用(转载):

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/块

命令:flash_eraseall

作用:擦出整个分区的数据,同时也会作坏块检测

用法:

flash_eraseall [OPTION] MTD_DEVICE

-q, --quiet 不显示打印信息

-j, --jffs2 一jffs2 格式化分区

eg: ./flash_eraseall -j /dev/mtd0

命令:flashcp

作用:copy 数据到 flash 中

用法:

usage: flashcp [ -v | --verbose ]

flashcp -h | --help

filename:待写入的数据

device: 写入的分区,如/dev/mtd0

eg:

filename制作:mkfs.jffs2 -e 0x20000 -d cq8401 -o cq8401.img -n //这里的-e 0x20000 必须更你芯片的erasesize 相等

./flashcp cq8401.img /dev/mtd0 // copy cq8401.img文件系统到 /dev/mtd0分区中

当然这个命令的功能跟 dd if=/tmp/fs.img of=/dev/mtd0差不多

命令:nandwrite

作用:向nand flash中写数据

用法:

nandwrite [OPTION] MTD_DEVICE INPUTFILE

-a, --autoplace Use auto oob layout

-j, --jffs2 force jffs2 oob layout (legacy support)

-y, --yaffs force yaffs oob layout (legacy support)

-f, --forcelegacy force legacy support on autoplacement enabled mtd device

-n, --noecc write without ecc

-o, --oob image contains oob data

-s addr, --start=addr set start address (default is 0)

-p, --pad pad to page size

-b, --blockalign=1|2|4 set multiple of eraseblocks to align to

-q, --quiet don't display progress messages

--help display this help and exit

--version output version information and exit

eg: ./nandwrite /dev/mtd0 /tmp/rootfs.jffs2

命令:nanddump

作用:dump出nand flash一些信息,如:block size,erasesize,oobblock 大小,oob data ,page data等;同时也会作坏块检测

用法:

nanddump [OPTIONS] MTD-device

--help display this help and exit

--version output version information and exit

-f file --file=file dump to file

-i --ignoreerrors ignore errors

-l length --length=length length

-o --omitoob omit oob data

-b --omitbad omit bad blocks from the dump

-p --prettyprint print nice (hexdump)

-s addr --startaddress=addr start address

eg:./nanddump -p -f nandinfo.txt /dev/mtd0 //dump出nand flash /dev/mtd0数据并保存到 nandinfo.txt

命令:mtd_debug

作用: 对mtd 调试作用

用法:

usage: mtd_debug info

mtd_debug read

mtd_debug write

mtd_debug erase

eg:

#./mtd_debug info /dev/mtd0 // 输出/dev/mtd0上的一些信息,这里必须用mtdx

#./mtd_debug erase /dev/mtd0 0x0 0x40000 // 擦出/dev/mtd0 分区上 从0x0开始的 , 128K*2 大小的数据

#./mtd_debug write /dev/mtdblock0 ox0 0x360810 cq8401.img //向mtdblock0分区,写入 3.6M 大小的文件系统cq8401.img,这里最好用mtdblockx

#./mtd_debug read /dev/mtdblock0 ox0 0x360810 read.img //从mtdblock0中读出 3.6M 数据保存到read.img

# cmp -l cq8401.img read.img // 验证write to flash 和 read from flash 中的数据是否一致;也可以使用diff命令来比较

另外针对nand flash,mtd_debug这个工具来测试mtd驱动也不是很好,用nandwrite和nanddump这两个工具或许更好点。然后可以用cmp这个命令来比较一下nanddump出来的数据和nandwrite写入的数据是否一致。

命令:ftl_format

解释:In order to use one of conventional file systems (Ext2, ext3, XFS, JFS, FAT) over an MTD device, you need a software layer which emulates a block device over the MTD device. These layers are often called Flash Translation Layers (FTLs).

linux系统mtd移植,文件系统 之 移植mtd-utils工具包相关推荐

  1. 嵌入式Linux系统中打印机驱动的移植

    一.开发环境 硬件环境:DM365 打印机型号:HP P1007 虚拟机系统:Red Hat Enterprise Linux 5 交叉编译环境:Ti交叉编译环境安装包 二.详细步骤 1.下载Ghos ...

  2. 查看Linux系统上的文件系统磁盘使用情况 - df 命令

    1.Linux df 命令 df(disk free) 命令用于显示目前在 Linux 系统上的文件系统磁盘使用情况统计 2.语法 df [选项][参数] 3.查询系统磁盘整体使用情况 ①.df -l ...

  3. Linux系统中常见文件系统格式

    Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式. 在Linux操作系统里有Ext2.Ext3.Linux swap和VFAT四种格式. ...

  4. Linux系统中的文件系统格式区别及详解

    Linux系统中常见文件系统格式 Windows常用的分区格式有三种,分别是FAT16.FAT32.NTFS格式 在Linux操作系统里有Ext2.Ext3.Linux swap和VFAT 种格式. ...

  5. sock 文件方式控制宿主机_基于嵌入式Linux系统实现YAFFS2文件系统存储方案的设计...

    随着嵌入式技术的不断发展,嵌入式系统的应用越来越广泛,人们对于嵌入式系统功能的要求也越来越高,相应地其大容量数据存储和管理变得越来越重要.相对硬盘而言,FLASH等非易失性存储器具有体积小.功耗低.成 ...

  6. 嵌入式linux 分区挂载,嵌入式linux系统的开发——文件系统的分区和挂载

    前言 当我们新买的硬盘安装在电脑上后,必须要对硬盘分区和文件系统格式化后才能使操作系统能够在分区内正常读写和保存文件.所谓分区即是将硬盘划分为多个空间范围,我们可以在不同的分区内存放不同的文件以便于管 ...

  7. linux系统下创建文件系统

    任何硬盘和u盘等存储介质都需要建立文件系统之后,才能使用.我们u盘和硬盘之所以跟买的容量不一样,就是因为里面存储着文件系统.没有文件系统,那就是纯粹的硬件,是不能使用的.在windows中我们可以格式 ...

  8. Linux系统挂载NTFS文件系统

    http://hermesbox.blogbus.com/logs/47386987.html 今天尝试并成功的将一块500G的移动硬盘挂载到了RHEL5的系统上,甚感欣慰.想到也许以后自己或其他同学 ...

  9. 深入理解linux系统下proc文件系统内容

    另外,可以参考这个http://www.centos.org/docs/5/html/5.1/Deployment_Guide/ch-proc.html 内容摘要:Linux系统上的/proc目录是一 ...

  10. linux系统层次结构_Linux文件系统层次结构问题和解答

    linux系统层次结构 This section contains Aptitude Questions and Answers on Linux Filesystem Hierarchy. 本节包含 ...

最新文章

  1. $().html()对ie9无效,不注意这点,\9和\0就可能对hack IE11\IE9\IE8无效
  2. JavaScript中函数四种调用模式
  3. openfire单个插件编译
  4. 你好,这是微视AI还原的李焕英
  5. 2020-11-06 Python OpenCV给证件照换底色
  6. android 截屏指定区域,Android截图 截取ContentView 截取指定的View并且保存
  7. POJ 1459 -- Power Network(最大流, 建图)
  8. margin塌陷问题
  9. filesaver.js 导出文件路径_CourseMaker微课制作教程20:做好的微课,如何保存和导出为.mp4等视频格式?...
  10. 依赖注入有点_一文读懂Java控制反转(IOC)与依赖注入(DI)
  11. 一种数据结构的封装模式
  12. spring之依赖注入
  13. 陷阱房图纸_揭秘户型图 | 研究了100个户型图后,我发现了这4个重大陷阱
  14. Nagios_快速配置
  15. Linux下处理BOM头和^M的简单方法
  16. linux下keytool生成证书_keytool命令
  17. HTML5 Input 日期选择器
  18. 闲置资源整合创业大有可为
  19. 3D深度传感ToF技术的基本原理解析
  20. VS Code保存后自动格式化Vue代码---Vetur

热门文章

  1. 主板中的电池是怎样放电的?
  2. ACM/ICPC 2017 Nanning Regional 总结
  3. 七夕节其实是最古老的异地恋
  4. 园友们赶快行动起来,免费获得微软MCSD证书!
  5. SQL两张表筛选相同数据和不同数据
  6. 发现一个美女,在黑夜中独自YY.
  7. leetcode-t51 N皇后(回溯)
  8. Android 网星工具箱Beta版
  9. 快速启动软件之 Rolan ,你真的会用?
  10. COCOS-BCX|区块链项目介绍