嵌入式操作系统VxWorks中TFFS文件系统的构建
们的flash相关MTD驱动加入到makefile中。即:
MACH_EXTRA=mx29lvMtd.o
为了方便我们调试MTD驱动,应该在重新编译VxWorks映象前将诸如格式化flash、创建TrueFFS块设备、绑定此块设备到dosFs所必要的功能包含到VxWorks映像中。比如如下定义:
#defineINCLUDE_TFFS
#ifdefINCLUDE_TFFS
#defineINCLUDE_TFFS_DOSFS
#defineINCLUDE_TFFS_SHOW
#defineINCLUDE_DOSFS/*dosFsfilesystem*/
#defineINCLUDE_SHOW_ROUTINES/*showroutinesforsystemfacilities*/
#defineINCLUDE_TL_FTL
#defineINCLUDE_IO_SYSTEM
#defineINCLUDE_DISK_UTIL
#endif/*INCLUDE_DOSFS*/
2、MTD驱动简介
做了上述配置后,进入VxWorks操作系统后,我们在shell上利用tffsShow工具来显示flash的信息。TffsShow函数最终会调用MTD驱动中的mx29lvMtdIdentiy()函数,在mx29lvMtdIdentiy()函数主要是通过读取MX29LV160BT芯片的设备和厂商ID来识别它,然后对FLFlash结构成员进行初始化,最主要的几个参数是:
type
Flash内存的JEDECID号。
erasableBlockSize
Flash内存的擦除块大小(字节)。设置这个值时应考虑到interleaving。因此,通常通过如下方法来设置它的大小。
Vol.erasableBlockSize=MX29LV_MTD_SECTOR_SIZE*vol.interleaving;
对于MX29LV160BT,MX29LV_MTD_SECTOR_SIZE为64K字节。
chipSize
使用来构建TrueFFS文件系统的flash实际大小(字节)。
noOfChips
使用来构建TrueFFS文件系统的flash实际片数。
interleaving
Flash内存交叉因子(interleavingfactor)。即扩展数据总线的设备数。比如,一个32位数据总线上,我们可以使用4片8位或2片16位的设备。
map
指向flash内存映射(map)函数。该函数将flash映射到内存区。
read
指向flash内存的读函数。在MTD驱动识别函数中,这个成员函数已经被初始化为缺省的读函数。通常情况下,我们不需要再初始化它,否则还需要修改很多相关的函数。
write
指向flash内存的写函数。这个成员必须初始化,这是我们要做的一个重要工作。
erase
指向flash内存的擦除函数。这个成员必须初始化,这也是我们要做的一个重要工作。
针对FLFlash结构成员,我们所关心的两个函数就是写和擦除函数。在mx29lvMtdIdentiy()函数中必须有如下定义:
vol 《嵌入式操作系统VxWorks中TFFS文件系统的构建(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/141644.html
MACH_EXTRA=mx29lvMtd.o
为了方便我们调试MTD驱动,应该在重新编译VxWorks映象前将诸如格式化flash、创建TrueFFS块设备、绑定此块设备到dosFs所必要的功能包含到VxWorks映像中。比如如下定义:
#defineINCLUDE_TFFS
#ifdefINCLUDE_TFFS
#defineINCLUDE_TFFS_DOSFS
#defineINCLUDE_TFFS_SHOW
#defineINCLUDE_DOSFS/*dosFsfilesystem*/
#defineINCLUDE_SHOW_ROUTINES/*showroutinesforsystemfacilities*/
#defineINCLUDE_TL_FTL
#defineINCLUDE_IO_SYSTEM
#defineINCLUDE_DISK_UTIL
#endif/*INCLUDE_DOSFS*/
2、MTD驱动简介
做了上述配置后,进入VxWorks操作系统后,我们在shell上利用tffsShow工具来显示flash的信息。TffsShow函数最终会调用MTD驱动中的mx29lvMtdIdentiy()函数,在mx29lvMtdIdentiy()函数主要是通过读取MX29LV160BT芯片的设备和厂商ID来识别它,然后对FLFlash结构成员进行初始化,最主要的几个参数是:
type
Flash内存的JEDECID号。
erasableBlockSize
Flash内存的擦除块大小(字节)。设置这个值时应考虑到interleaving。因此,通常通过如下方法来设置它的大小。
Vol.erasableBlockSize=MX29LV_MTD_SECTOR_SIZE*vol.interleaving;
对于MX29LV160BT,MX29LV_MTD_SECTOR_SIZE为64K字节。
chipSize
使用来构建TrueFFS文件系统的flash实际大小(字节)。
noOfChips
使用来构建TrueFFS文件系统的flash实际片数。
interleaving
Flash内存交叉因子(interleavingfactor)。即扩展数据总线的设备数。比如,一个32位数据总线上,我们可以使用4片8位或2片16位的设备。
map
指向flash内存映射(map)函数。该函数将flash映射到内存区。
read
指向flash内存的读函数。在MTD驱动识别函数中,这个成员函数已经被初始化为缺省的读函数。通常情况下,我们不需要再初始化它,否则还需要修改很多相关的函数。
write
指向flash内存的写函数。这个成员必须初始化,这是我们要做的一个重要工作。
erase
指向flash内存的擦除函数。这个成员必须初始化,这也是我们要做的一个重要工作。
针对FLFlash结构成员,我们所关心的两个函数就是写和擦除函数。在mx29lvMtdIdentiy()函数中必须有如下定义:
vol 《嵌入式操作系统VxWorks中TFFS文件系统的构建(第3页)》