
我没太看懂xiaohua的步骤. 我觉得只要在config.h里定义了:
#define INCLUDE_TFFS
#define INCLUDE_DOSFS
的话,象tffsDrv,dosFsInit这些函数在系统引导过程中都会自动被调到的,重复调用
没准儿会出问题. tffsDevCreate和dosFsDevInit加起来就相当于usrTffsConfig,也
没必要反复调用,我建议用usrTffsConfig就行了, 而在此之前必须先format. 也就是
说,需要在shell里敲的函数只有两个:
tffsDevFormat 0,0
usrTffsConfig 0,0,"/tffs/"
次序不能错.

ryansheng说得对, 如果定义拉INCLUDE_TFFS和INCLUDE_DOSFS
usrRoot中会自动调用dosFsInit, dosFsLibInit等dos初始化相关函数
shell中出现的dosFsLibInit出现的失败, 也许就是不允许重复初始化
usrRoot中也会调用tffsDrv(), tffsDrv也只能调用一次
就剩下:
tffsDevFormat(?,0)
pBootDev=tffsDevCreate(?,0)
dosFsDevInit("tffs",pBootDev,0)
关键就是如何设tffsDriveNo(?), 你上面
tffsDevFormat和tffsDevCreate所用的drive号不一致
也许可以用tffsShow找到这个号
也就是sysTffsInit中调用xxxRegister的顺序号
如果你只注册了一种socket, 用0就行
你应该使用rfaRegister, rfa代表“resident flash array”
在rfaRegister应该可以注册多个Flash芯片或多个地址空间, 对应不同的drive号
你应该参考sockets/下ARM PID-7T的sysTffs.c

I am Sorry!
我一开始就是向您二位说的一样,但没成功。
1.修改Config.h
#define INCLUDE_TFFS
#define INCLUDE_DOSFS
2.修改sysTffs.c
defien INCLUDE_TL_FTL
#define INCLUDE_MTD_AMD
3.修改makefile
MACH_EXTRA=sysTffs.o
4.在修改过的BSP上新建一个Bootable工程,里面已经加了TFFS和DOSFS组件,重新Build。
然后通过网络重启。
5.Shell Command:
tffsDevFormat 0,0
usrTffsConfig 0,0,"/tffs/"
两个命令都返回-1
tffsShow
显示communication error
根据我的理解driver应该是0或者1,我都试过,不行,才改用8(随机取得),也不可以。

void tffsShow
(
int driveNo /* TFFS drive number */
)
{
PhysicalInfo info;
FLStatus status;
if (tffsSocket[driveNo] == NULL)
{
printf ("%d: ---- no socket interface installed ----\n", driveNo);
return;
}
status = tffsRawio (driveNo, TFFS_GET_PHYSICAL_INFO, (int)&info, 0, 0);
if (status != OK)
{
printf ("%d: **** communication failed with error %d ****\n",
driveNo, status);
>应该是这一步出错拉
return;
}
printf ("%d: socket=%s: ", driveNo, tffsSocket[driveNo]);
printf ("type=0x%x, unitSize=0x%x, mediaSize=0x%x\n", info.type,
(UINT)info.unitSize, (UINT)info.mediaSize);
}