|
在SOM5307A初始化完成后Flash地址空间范围为0xf0000000—0xf01fffff,长度为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.