在ZLG/FS下面我只想快速的读出SD里面的文件。
用卡块方式写进SD,再根据写的位置读出来还是比较快速的,但和实际用起来有悖; 但是ZLG/FS文件系统在读文件的时候接口函数只提供字节方式,这样速度很慢,我想修改成卡块方式,目前思路如下: 计算得到文件的扇区,把扇区转化成卡块位置,直接调用读卡块函数,并且用文件大小计算卡块数量。 我的思路应该可以实现吧。 1、 遇到问题如下: ZLG/FS如此定义: #ifndef DISK_CACHE_SIZE #define DISK_CACHE_SIZE 512 //文件系统Cache大小(字节),应当是最大的扇区所占字节数 而在SD里面一个扇区包含128卡块,一个卡块512字节,而上面的宏定义 扇区大小就是卡块大小。注释说“最大扇区”,扇区不是统一大小的吗?
2、我已经根据文件名计算出文件所在逻辑盘的扇区,读扇区数据到cache(ReadSec(uint8 drive ,uint32 Index)),没看太懂的是这个函数读取的好像不是整个扇区数据,而是一个字节,是这样吗?如果是这样,我改成把逻辑盘数据到cache按照块(512)搬运速度就快了。
3、把cache中的数据读出来,目前是字节方式,我按照卡块就可以了。关键我难题是我如何获取已知文件的卡块位置?
请大家分析指教。 |