Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1038531
  • 博文数量: 836
  • 博客积分: 43880
  • 博客等级: 大将
  • 技术积分: 5485
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-20 17:36
文章分类

全部博文(836)

文章存档

2011年(1)

2008年(835)

我的朋友

分类: LINUX

2008-08-20 18:22:34


本文主要介绍如何在AT91SAM9261EK板子上制作和使用jffs2文件系统,使用的是linux-2.6.21内核。 首先:配置MTD
$makemenuconfig
进入MemoryTechnologyDevices(MTD)--->
<*>MemoryTechnologyDevice(MTD)support
[*]Debugging
[*]MTDpartitioningsupport
[*]Commandlinepartitiontableparsing
[*]DirectchardeviceaccesstoMTDdevices
[*]CachingblockdeviceaccesstoMTDdevices
RAM/ROM/Flashchipdrivers----->
<*>Detectnon-CFIAMD/JEDEC-compatibleflashchips
<*>SupportforAMD/Fujitsuflashchips
Mappingdriversforchipaccess--->
[*]Supportnon-linearmappingsofflashchips
Self-containedMTDdevicedrivers--->
[*]SupportforAT45...DataFlash
NANDFlashDeviceDrivers---->
[*]NANDDeviceSupport
[*]SupportforNANDFlash/SmartMediaonAT91

Filesystems---->
<*>Secondextendedfssupport
[*]Inotifyfilechangenotificationsupport
[*]Inotifysupportforuserspace
<*>FilesysteminUserspacesupport
Miscellaneousfilesystems
<*>JournallingFlashFileSystemv2(JFFS2)support
[*]JFFS2write-bufferingsupport
<*>CompressedROMfilesystemsupport(cramfs)
以上配置中没有列出的,都没选;其配置仅做参考,可根据自己的需要自行配置。 $makeall 其次:制作mtd-util工具 从网上下载zlib-1.2.3.tar.gz 解压缩 $cdzlib-1.2.3 $./configure–prefix=/usr/local/arm/3.4.1/arm-linux--shared 修改Makefile如下: CC=arm-linux-gcc LDSHARED=arm-linux-ld-shared $makeall $makeinstall 注意:这里是安装在/usr/local/arm/3.4.1/arm-linux目录下 由于交叉编译mtd工具时需要zlib.h文件,所以在编译之前先安装zlib库文件。 从网上下载 mtd-snapshot-20050519.tar.bz2解压缩$cdmtd/util 修改该目录下的Makefile: CROSS=arm-linux- $makeall 然后将该目录下生成的flash_erase,flash_eraseall,mkfs.jffs2工具放在ramdisk文件系统中(我这里放在/bin目录下),另外在 ramdisk文件系统的dev目录下要保证有mtd0~mtd9,mtdblock0~mtdblock9这些设备,如果没有可参考ramdisk文件系统的制作,也可从pc机相同目录下拷贝,要加上文件属性。 另外,需要将/arm-linux/lib目录下的libz.so,libz.so.1,libz.so.1.2.3文件拷贝到ramdisk文件系统的/lib目录下,否则mkfs.jffs2工具不能使用。 最后将新生成的uImage和ramdisk文件下载到板子上,起动系统,使用命令cat/proc/mtd 可以看到 dev:sizeerasesizename mtd0:0004000000020000"Partition1" mtd1:0ffc000000020000"Partition2" mtd2:0042000000000210"spi0.0-AT45DB321x" 这里mtd0,mtd1是nandflash上的分区;mtd2是dataflsh上的分区,该分区上放有u-boot,uImage.img,ramdisk.img,所以我们这里可以使用空的nandflash上的两个分区。使用之前要先用工具flash_erase或者flash_eraseall擦除nandflash,具体使用的步骤如下: #flash_erase/dev/mtd1 制作jffs2映像 #cd/var/tmp #mkdirjffs2(jffs2下的目录可以任意建) #mkfs.jffs2–djffs2/-ojffs2.img #cp/var/tmp/jffs2/jffs2.img/dev/mtdblock1 最后#mount-tjffs2/dev/mtdblock1/mnt/mtd即可,使用结束可使用$umount/mnt/mtd 卸载. 如果只是当作普通的jffs2来使用dataflash或者nandflash,可不必制作jffs2映像,只需要最后一步 #mount-tjffs2/dev/mtdblock1/mnt/mtd即可。 (责任编辑:凌云通)


下载本文示例代码
阅读(661) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~