rtems 文件系统(15)-jffs2 研究(8)总结

1:解决了之前的问题后,有发现读写大文件有问题。因此查看了底层驱动,是底层驱动的问题,首先读的时候底层驱动只设置了32个 4byte的阈值,所以读取大块的时候分开读取。写的时候不能一次超过256,不能写到一个页上面。这些都是底层驱动和文件系统联系的问题。因为文件系统是很灵活的。所以底层驱动要和上层操作系统紧密结合。

2: 经过验证,现在建立文件夹,删除文件,读写文件,删除文件,建立大的文件,进入文件夹 都没有问题,基本操作都有了。那么后面的问题是如果我通过ftp拖进去文件后,怎么通过代码读出来的问题。可能后续还需要封装一些shell命令出来。

3:其实对于文件系统来说,根文件系统是一种框架,其它文件系统安装在上面,那么操作系统会维护文件系统,找到其中的文件,那么就是打开文件,读写文件,关闭文件的问题。所以找到路径就好了。

4:增加了summary函数,从linux github得到的源码,进行了一点修改。因为是要适用于rtems。有些定义原来linux有的,rtems不一定有。

5:增加了summary以后,有些文件夹在打开summary宏的时候不显示,但是关闭这个宏的时候是可以扫描出来的,很奇怪,查找下原因

当超过一个block的时候会有问题。感觉这和summary没有什么关系,summary是在每次上电的时候可以scan出各个的summary,如果当前块用完了,那么就会将summary写入到flash,下一次就直接读取这些summary就好了,但是没有使用完的块每次上电还是会scan 各个的summary。因此这个问题并不是summary导致的,而是跨越block的时候之前就有bug没有测出来。

但是如果不用summary是可以scan出来的,所以说明是summary的scan部分有问题,实际的数据已经存在flash中了,但是因为拷贝一个文件夹的时候里面有很多文件,要拷贝某个文件的时候遇到了block的边界,可能导致该文件夹在scan的时候一部分内容在第一个block。另一个部分在另一个block,可能导致scan该文件夹时没有成功。这只是猜想,我试验了一下,只有第一个块的可以被summary scan出来。没时间去查找这个问题了。


你可能感兴趣的:(rtems,filesystem)