文件系统有多种DosFs、Tffs等等,我们以 Tffs系统为例子。
1、描述
搭建Tffs文件系统主要核心层、翻译层、MTD层、socket层组成。
2、修改、编译
使用到相信文件:tffsconfig.c、systffs.c、config.h、XXmtd.c、syslib.c。
(1) tffsconfig.c(此文件可以移到BSP源码中个,不过要修改路径,否则内核编译获取的还是tornado中的文件)
这个C文件是MTD驱动的入口文件,如果要调用mtd的初始化函数必须在MTDidentifyRoutine mtdTable[]表中加入如下语句:
#ifdef INCLUDE_MTD_MX29LV mx29lvMTDIdentify, #endif /* INCLUDE_MTD_MX29LV */ 并在该文件开头声明。 #ifdef INCLUDE_MTD_MX29LV FLStatus mx29lvMTDIdentify (FLFlash vol); #endif /* INCLUDE_MTD_MX29LV */ 最后就是将我们的flash相关MTD驱动加入到makefile(BSP源码)中。即:
FLASH_DRV = mx29lvMtd.o
(2) systffs.c
把一些申明和地址定义添加这个文件开头
#define INCLUDE_MTD_MX29LV /* MX29LV160BT MTD driver */ #define INCLUDE_TL_FTL /* FTL translation layer */ #define FLASH_BASE_ADRS 0xfe000000 /* Flash memory base address */ #undef FLASH_SIZE #define FLASH_SIZE 0x00700000 /*Flash memory size,2M(parameter block) */
(3) config.h
在config.h包含一些宏定义
#define INCLUDE_TFFS #ifdef INCLUDE_TFFS #define INCLUDE_TFFS_DOSFS #define INCLUDE_TFFS_SHOW #define INCLUDE_DOSFS /* dosFs file system */ #define INCLUDE_SHOW_ROUTINES /* show routines for system facilities*/ #define INCLUDE_TL_FTL #define INCLUDE_IO_SYSTEM #define INCLUDE_DISK_UTIL #endif /* INCLUDE_DOSFS */
(4) XXmtd.c
修改基本参数信息,擦除函数和写函数的编写
(5) Syslib.c
添加内存映射
{
/*flash tffs*/
(VIRT_ADDR) FLASH_BASE_ADRS,
(PHYS_ADDR) FLASH_BASE_ADRS,
FLASH_SIZE,
VM_STATE_MASK_VALID | VM_STATE_MASK_WRITABLE | VM_STATE_MASK_CACHEABLE |
VM_STATE_MASK_GUARDED,
VM_STATE_VALID | VM_STATE_WRITABLE | VM_STATE_CACHEABLE_NOT |
VM_STATE_GUARDED
}
3、调试
把内核编译出来了,通过网络启动系统加载。然后通过一下命令一次调试:(1)tffsShow
socket=RFA_tongwei: type=0x1c4, unitSize=0x10000, mediaSize=0x100000
说明已正确识别到S29GL064设备,设备号为0x1c4。 tffsShow调用的是tffsconfig.c中的TFFSHOW函数,从此函数开始运行,此函数会调用Flash读寄存器函数读到一个mancode=0x01,devcode=0x227e,这两个数据是每个flash自带的用于唯一表示。然后通过这两个标识来找到设备号。
(2)sysTffsFormat
Value=0
当我们可以Show到flash设备号说明我们的程序已经读到了Flash设备,接下来就是对次设备格式化。在Vxworks系统中对Flash格式化其实就是对设备的擦除和写操作,系统通过我们给的sysTffsFormat命令找到systffs.c中的sysTffsFormat函数执行,然后跳转到s29gl064Mtd.c进行擦除和写操作。
(3)usrTffsConfig
usrTffsConfig 0,0,”/tffs”
这个命令用于挂在文件系统,挂在完成用devs命令来查看。
-> devs
drv name
0 /null
1 /tyCo/0
5 host:
3 /tffs
value = 25 = 0x19
此时文件系统挂在成功。我们可以用Shell命令对其进行操作。
本文来源:https://www.2haoxitong.net/k/doc/6dd786ecf8c75fbfc77db2cb.html
文档为doc格式