这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 嵌入式开发 » MCU » 大神们,谁有TFFS的资料呢?

共8条 1/1 1 跳转至

大神们,谁有TFFS的资料呢?

菜鸟
2011-08-31 20:38:03     打赏
论坛的各位大神们,你们谁有关于TFFS的基础资料呢?给我发一份吧,小弟在此提前感谢了!谢谢,谢谢!我的邮箱是:greatlevi@163.com



关键词: 大神     谁有     资料    

高工
2011-09-02 11:34:44     打赏
2楼

帮忙顶一下,哪位朋友有,帮忙分享一下啦


高工
2011-09-05 15:43:58     打赏
3楼
TFFS,True Flash File System的简写,在Vxworks中,在系统flash设备上构造的一个基于DOS的文件系统,用于存放交换及应用程序,BootROM程序等很少需要修改的信息,便于程序的更新和升级。     Tornado的TFFS是和VxWorks兼容的一种M-Systems Flite实现方式,版本为2.0。它为种类繁多的flash存储设备提供了统一的块设备接口,并且具有可重入、线程安全的特点,支持大多数流行的CPU构架。有了Tornado的TFFS,应用程序对flash存储设备的读写就好象它们对拥有MS-DOS文件系统的磁碟设备的操作一样。     TFFS由核心层(core layer)和三个功能层,翻译层(translation layer),MTD层(MTD layer),socket层(socket layer)组成。     核心层(Core layer):核心层主要起相互连接其他几层的功能。同时它也可以进行碎片回收、定时器和其他系统资源的维护。通常WindRiver公司将这部分内容以二进制文件提供。     翻译层主要实现TFFS和dosFs之间的高级交互功能。它也包含了控制flash映射到块、wear-leveling、碎片回收和数据完整性所需的智能化处理功能。目前有三种不同的翻译层模块可供选择。选择哪一种层要看你所用的flash介质是采用NOR-based, 还是NAND-based, 或者SSFDC-based技术而定。     Socket层则是提供TFFS和板卡硬件(如flash卡)的接口服务。其名字来源于用户可以插入flash卡的物理插槽。用来向系统注册socket设备,检测设备拔插,硬件写保护等。后面将详细讲解它的功能。     MTD层(Memory Technology Drivers)功能主要是实现对具体的flash进行读、写、擦、ID识别等驱动,并设置与flash密切相关的一些参数。TrueFFS已经包含了支持Intel,AMD以及samsung部分flash芯片的MTD层驱动。新的芯片需要新的MTD支持,你可以使用一个标准的接口来加入这些驱动。     以上四部分,我们通常要的工作就是后两层。     当在VxWorks下配置TrueFFS时,你必须为每一层至少包含一个软件模块。

菜鸟
2011-09-05 19:16:00     打赏
4楼
您能给讲一下FTL的过程吗?(映射,mapCache)

高工
2011-09-06 13:53:20     打赏
5楼
我用的FLASH型号是一个AMD兼容的NOR FLASH, 2M的,划入TFFS的是高1.5M,也就是FORMAT参数为:
tffsDevFormatParams myDefaultParams =
{
{
0x80000L,
99,
1,
0x10000l,
NULL,
{0,0,0,0},
NULL,
2,
0,
NULL
},
FTL_FORMAT
};


MTD实际上我只挂了三个函数:
MAP,WRITE,ERASE
MAP就是计算地址了,WRITE的时候当参数REWRITE==1的时候先读出64k到BUFFER然后改写最后从新写回,如果不是rewrite就直接编程。

结果跑起来以后发现速度实在是慢的可以,下一个512K不到的文件,写到FLASH里需要将近30秒,自己在WRITE/ERASE的MTD函数中打印发现经常就些没几个BYTE但是整个一块64K的FLASH也要从写这样,速度超慢。remove一个文件也是如此。

我这还是修改过DOSFS里的sector_bit呢,原来dosfs的每个sector=512的时候下一个512K的东西反正10分钟我看还没有结束的迹象,SECTOR数目到300多了。。。。。。

我现在修改的sector大小为0x2000,也就是sector bit 13,还是感觉很慢。想问一下各位使用TFFS的状况。还有文件系统操作里比较耗时的还有哪些地方呢?

目前的速度是下一个472K的文件写到文件系统中需要大约37秒。



最后附上,当打开TFFS DEBUG和我自己的FLASHWRITE ERASE DEBUG 后的打印消息和部分代码



#define FTP_ADDR "192.168.1.181"
#define FILE_NAME "little.z"
#define USER_NAME "uboot"
#define PASS_WORD "uboot"

#define IMAGE_NAME "image.z"

void flashTest()
{
/*.......
变量声明啥的略
登陆FTP打开文件,DATAsocke为 DATA_SOCK
........这段没啥关系就略了
*/
sprintf(fullname,"%s/%s",MY_TFFS_NAME,IMAGE_NAME);

fd= creat(fullname,O_RDWR);
/*创建文件~~之前做过format或者remove*/
if(ERROR==fd)
{
printf("tffs create file error, exit\n");
return;
}
totalLen=0;

bufferLen=64*1024;
bufferleft=bufferLen;
readLen=0;
offset=0;
while(1)
{
do
{
readLen=read(DATA_SOCK,tempbuf+offset,bufferleft);
totalLen+=readLen;
offset+=readLen;
bufferleft-=readLen;

}while((0!=bufferleft)&&(0!=readLen)&&(ERROR!=readLen));
printf("now read 0x%x\n",offset);
written=write(fd,tempbuf,offset);
if(written!=offset)
{
printf("write error, 0x%x should write to tffs but in fact 0x%x written\n",offset,written);
goto error_out;
}
else
{
printf("write 0x%x bytes to tffs\n",written);
}

bufferleft=bufferLen;
offset=0;
if(0==readLen)
{
break;
}
}

printf("ftp read totalLen= 0x%x\n",totalLen);
error_out:
/*
登出FTP,FREE掉BUFFER也略了~
*/

}

高工
2011-09-07 15:43:01     打赏
6楼
楼主,请查收邮箱,有三份参考资料已经发送到,不知能否帮到你.

菜鸟
2011-09-07 19:16:38     打赏
7楼
谢谢了啊,第2份对我很有帮助,谢谢大神了!

菜鸟
2011-09-13 13:19:17     打赏
8楼

我想问问就是判断UnitHeader的合法性有啥用呢(就是比对那两个数组),及时头部不合法,似乎也不影响什么吧?


共8条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]