进入内核配置目录
make menuconfig
Memory Technology Devices (MTD) --->
<*> Memory Technology Device (MTD) support
[*] Debugging
[*] MTD partitioning support
[*] Command line partition table parsing
[*] Direct char device access to MTD devices
[*] Caching block device access to MTD devices
File systems --->
Miscellaneous filesystems --->
<*>Journalling Flash File System v2 (JFFS2) support
[*]JFFS2 write-buffering support
[*]Advanced compression options for JFFS2
[*]JFFS2 ZLIB compression support
[*]JFFS2 RTIME compression support
[*] JFFS2 RUBIN compression support
1.从网上下载zlib-1.2.3.tar.gz 解压缩 $ cd zlib-1.2.3
$ ./configure –prefix=/tftpboot/my_jffs2 --shared (具体目录根据自己情况自己修改)
修改Makefile如下:
CC=arm-none-linux-gnueabi-gcc
LDSHARED=arm-none-linux-gnueabi-ld -shared
CPP=arm-none-linux-gnueabi-gcc -E
$ make all
$ make install
注意:这里是安装在/tftpboot/my_jffs2目录下,在=/tftpboot/my_jffs2/lib目录下就生成libz.so, libz.so.1, libz.so.1.2.3
由于交叉编译mtd工具时需要zlib.h文件,所以在编译之前先安装zlib库文件。
2.从网上下载 mtd-snapshot-20050519.tar.bz2 解压缩 $ cd mtd/util
修改该目录下的Makefile:
CROSS=arm-none-linux-gnueabi-
LDFLAGS := -L/tftpboot/my_jffs2/lib 【主要就是要添加这句】 (这个目录就是上边zlib库文件所在的lib目录)
$ make all
$ make install 就生成 flash_erase,flash_eraseall, mkfs.jffs2工具
3.将mkfs.jffs2,flash_erase下载到开发板上,将libz.so, libz.so.1, libz.so.1.2.3下载开发板的lib目录下,这样mkfs.jffs2才能使用
cat /proc/mtd
dev: size erasesize name
mtd0: 00020000 00020000 "u-boot env"
mtd1: 00020000 00020000 "UBL"
mtd2: 00080000 00020000 "u-boot"
mtd3: 00400000 00020000 "kernel"
mtd4: 1fa00000 00020000 "filesystem"
mtd5: 08000000 00004000 "NAND simulator partition 0"
这里mtd5是nandflash上的分区; 其余分区上放有u-boot,UBL,kernel等,所以我们这里可以使用空的nandflash上的mtd5分区。使用之前要先用工具flash_erase或者flash_eraseall擦除nandflash,具体使用的步骤如下:
3.1 擦除nandflash
# flash_erase /dev/mtd5
3.2 制作jffs2映像
#cd /home/root
#mkdir jffs2 (在jffs2下的目录可以任意建,可以包括etc、bin、lib等目录,会将jiffs目录下的文件显示在nand挂载这个jffs2文件系统下)
# mkfs.jffs2 -r /home/root/jiffs2 -o rootfs.jffs2 -e 0x4000 --pad=0x600000 -n
将生成的映像rootfs.jffs2复制到第五分区
# cp /home/root/jffs2/jffs2.img /dev/mtd5
将对应的块设备mount到linux目录下,这样在、mnt/mtd下就能看到etc、bin、lib等刚才建的目录。
最后# mount -t jffs2 /dev/mtdblock5 /mnt/mtd即可,使用结束可使用$ umount /mnt/mtd 卸载.
如果只是当作普通的jffs2 来使用dataflash或者nandflash,可不必制作 jffs2映像,只需要最后一步
# mount -t jffs2 /dev/mtdblock5 /mnt/mtd即可。