yanghuios的笔记 https://bbs.21ic.com/?255279 [收藏] [复制] [RSS]

日志

FFS文件系统的制作及使用

已有 519 次阅读2006-8-16 19:02 |系统分类:单片机

SOM5307A初始化完成后Flash地址空间范围为0xf00000000xf01fffff,长度为0x00200000 (2M)字节。为满足某些用户的特殊需要,可以通过修改flash.c和erase.c文件,将多余的Flash空间用来创建JFFS文件系统,以满足某些应用的特殊需求。


l     制作erase应用命令


erase是flash擦除命令,必须将它配置进系统应用中。在配置之前要确保有/home/uClinux-coldfire/user/ erase子目录,且含有erase.c及相应的Makefile文件。否则,应按本章第3节的步骤制作erase应用程序。另外要确保flash设备已经包含在/home/uClinux-coldfire/romfs_cvs.mk文件,若没有,则加入:


FLASH_DEVICES = \


                flash0,b,60,16 \


                flash1,b,60,17 \


            flash2,b,60,18 \


在进行内核配置时,将erase编译配置进系统应用中。


l     更改JFFS文件系统大小


      不同的用户对JFFS文件系统大小的需求可能不同,默认的JFFS文件系统大小为1M,从FLASH1的0xf00e0000地址开始,我们可修改FLASH1的起始地址和使用空间来达到更改JFFS文件系统大小的目的,作法如下:


1.修改FLASH1的起始地址:


    /home/uClinux-coldfire/linux/drives/block/flash.c中找到flash_probe()这个函数,修改此函数中的如下一句:


chips[0].start=(unsigned char)(0xf00e0000) /*(擦除的起始点)*/



default:


 chip->isVaild =0;


改为:


default:


 chip->isVaild=1;/* 是否对FLASH1进行初始化,1代表是 */


chip->size=0x00100000;/* FLASH1的总空间 */


     chip->sectorsize=0x1000;/* 每次擦除的大小 */


     chip->bootsector=(unsigned char*)MEM_DRAM_START;


2.  修改可使用的FLASH1的大小:


/home/uClinux-coldfire/linux/drives/block/flash.c修改如下一句:


#define  DEF_FLASH2_SIZE  0x000000 /* 此项值可改变FLASH1的实际大小*/


修改完后重新编译即可。


l     配置、编译LINUX内核及应用程序


1.        内核配置


为了使系统识别flash设备并支持JFFS文件系统,应该改变如下一些内核配置:


选择是否全部使用缺省设置:


Default all settings (lose changes) (CONFIG_DEFAULTS_OVERRIDE) [N/y/?]  N


选择是否改变内核设置:


  Customize Kernel Settings (CONFIG_DEFAULTS_KERNEL) [N/y/?]  Y


选择是否改变用户程序的设置:


  Customize Vendor/User Settings (CONFIG_DEFAULTS_VENDOR) [N/y/?]  N


Additional Block/FLASH Devices中设置支持Flash块设备:


  FLASH device support (CONFIG_DEV_FLASH) [N/y/?]  Y


FLASH Block device (CONFIG_BLK_DEV_FLASH) [N/y/?]  Y


FLASH Character device (CONFIG_CHR_DEV_FLASH) [N/y/?]  N


Filesystems中设置支持JFFS文件系统:


     Journaling FLASH filesystem support (CONFIG_JFFS_FS) [N/y/?]  Y


2.        应用程序配置


  把编写的erase应用程序配置到内核中,采用以下步骤:


在内核配置中,选择是否改变用户程序的设置:


  Customize Vendor/User Settings (CONFIG_DEFAULTS_VENDOR) [N/y/?]  Y


Filesystems Aplications中配置erase应用程序:


    erase (CONFIG_USER_ERASE_ERASE ) [N/y/?]  Y


3.        编译内核及应用程序


配置完成之后,在/home/uCLinux-coldfire/romfs/dev下增加一个设备文件,文件名称为 @flash1,b,60,17。使用如下命令:


touch @flash1, b, 60, 17


其中flash1是设备名,b代表块设备,60是主设备号(major)16是次设备号(minor)


进行编译,首先键入make clean


其作用是将过去编译时生成的一些目标文件清除。然后键入make dep


最后键入make


所有内核和应用程序源代码将被编译,编译结束后会通过以太网接口将imagez.bin二进制影像文件和clv4文件传入。


l     JFFS文件系统的使用


1.擦除JFFS文件系统的扇区


目标系统启动以后,进入目标系统,用erase命令擦除所要mount JFFS的扇区,在这里使用flash1设备:


     />erase /dev/flash1


     Erase flash device now,please wait…


     Erase OK! You can mount jffs now!


2.挂接JFFS文件系统


    执行如下命令,将JFFS文件系统挂接到目标系统:


     />mount –t jffs /dev/flash1 /mnt


     JFFS: Trying to mount device 3c:11.


     JFFS: Successfully mounted device 3c:11.


这时,就可以使用JFFS了,可以使用/bin下的有关文件操作的命令进行操作。


如果想自动挂接JFFS文件系统,可以将以上命令放在目标系统的rc文件里。


3.卸载JFFS文件系统


如果不再想使用JFFS,可以使用下面的命令将其卸载:


     />umount /mnt


     JFFS: Sucessfully unmounted device 3c:11.


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)