FATFS *fs[_VOLUMES] fs[i]=(FATFS*)mymalloc(SRAMIN,sizeof(FATFS));f[i]中存放的是什么?

FATFS *fs[_VOLUMES] fs[i]=(FATFS*)mymalloc(SRAMIN,sizeof(FATFS));f[i]中存放的是什么?,第1张

fs[i]是个指向文件FAT表的指针

从你的题目来看,fs这个指针数圆颤顷组是一组在RAM建立橘陆的洞运镜像,指向FAT文件系统的,所以,如果你熟悉FAT文件系统的话,可以通过这个指针,找到文件的各个属性像,例如,大小,名字,扩展名,时间等等

返回码有很多,最主要的是 FR_OK

当打开一个文件时, *** 作完成后进行关闭,这个很简单

第一衡告个参数

看下面的调用函数

读的文件结构体是fsrc,将数据读入到buffer中,读出的数量为buffer数,而br用于累积已经完成了多少读出

下面的函数可以看出,写入结构体为fdst,将buffer中的内容进行写入,数量为刚刚计算的BR,BW用于累积写入的数量。

也就是是将尺寸压缩到现在的指针位置,也就是说,把后面的全部删除。

功能基本上同f_close ,但是还可以继续进行读写查询的 *** 作,用于那种用于需要长时间打开的 *** 作,用此函数可以避免出错。

f_forward函数从文件中读取数据并将数据转发到输出流,而不使用数据缓冲区。这适用于小存储系统,因为它在应用模块中不需要任何数据缓冲区。比如音频播放就可以用到此功能。

给文件分配一个连续空间,如下:其中malloc的用法为:

以特定格式写入到文件中,如下:

获取一下当前的读写指针

测试是不是文件的毁歼最尾端,如果是最尾端,则返回一个值。

获取一个文件的尺寸

测试是否有硬件错误发生,并不执行任何实际 *** 作。

在下面的这个函数纤拦冲中,用到了f_opendir和f_closedir和f_readdir

而f_findfirst为打开一个目录,然后读第一条。

而f_findnext为打开一个目录,读下一条匹配的标题。

上面关于目录管理的函数,在文件数量比较大一点的系统中可以用到,我们控制器的文件目录都比较简单,暂时不要考虑。

最重要的一个函数来了:

挂载一个磁盘或者释放一个磁盘:

比如:

比如在f_mkfs前先创建f_fdisk

fatfs文件系统支持4GB文件。

disk_initialize()等函数是FATFS底层的几个接口,移植实现后,FATFS的 *** 作跟WINDOWS上的文件 *** 作差不多一样,FATFS源代码里有说明文档自己看,不过设备要先挂载,如果原来的设备没有文件系统,还要格式化一下,才能用。

对于FAT16文件系统,可以保存的文件体积最大值是4 GB - 1 byte (2^32 bytes - 1 byte);卷的最大体积是4GB;每个卷上最多可以保存的文件数量是65,536个 (2^16);根目录下可以保存的文件和文件夹数量最大值是512个(如果使用了长文件名,该数字还会键清减小)。

FatFs 提供下面的函数:

f_mount - 注册/注销一个工戚铅作区域(Work Area)

f_open - 打开/创建一个文件

f_close - 关闭一个文件

f_read - 读文件

f_write - 写文件

f_lseek - 移动文件读/写指针

f_truncate - 截断文件稿仔前

f_sync - 冲洗缓冲数据 Flush Cached Data

f_opendir - 打开一个目录

f_readdir - 读取目录条目

f_getfree - 获取空闲簇 Get Free Clusters


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12255212.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存