vxWorks文件系统(包括TFFS、dosFS等)的FAQ 1、TFFS的Flash容量限制 答:vxWorks5.4以前的版本限制Flash容量为40M,5.5版本限制容量为2048M。 2、TFFS能否像硬盘一样动态扩容 答:不可以,TFFS在每个block的管理头上都写了Flash总的容量,多于的空间会mount失败。 3、TFFS在操作过程中掉电会引起TFFS系统崩溃,是否有办法避免 答:可以修改sysTffs.c里面的函数sysTffsFormat的第4个参数vmAddressingLimit为0来避免绝大多数安全问题。 4、同一个片flash是否支持多个TFFS文件系统 答:风河不建议这样操作,要想支持也可以实现,但访问两个文件系统的任务必须同样优先级,否则会有冲突。 5、创建TFFS时,Flash大小对齐是否有限制 答:大小必须以2的正数次幂对齐。可以修改flsocket.c文件里面的flmap函数来取消此限制。 6、经常发现TFFS文件系统读写失败,失败后只有格式化才能继续使用。请问到底怎样读写文件才可将文件系统崩溃可能性降到最低? 答:对于TFFS的确存在很多问题,但90%以上都是由于掉电引起,例如复位以后mount失败等,很少有用着用着就不能用的情况。我也正在整理一个掉电安全的补丁。从操作上有一些建议,但是还是不能从根本上解决问题: - 使用8.3格式的文件名,全部大写;
- 掉电之前使用ioctl(fd, FIOSYNC, 0)把cbio中的内容全部同步到flash中,并关闭所有文件;
- 格式化参数的第4个参数使用0,不用缺省的0x10000;
- 一片flash上只用一个TFFS;
- 驱动中不能有任何引起任务挂起的操作,如信号量或者taskDelay等。
|