|
|
@@ -26,21 +26,23 @@ FatFs 与 VFS 配合使用
|
|
|
|
|
|
2. 调用 :cpp:func:`ff_diskio_register`,为步骤 1 中的驱动编号注册磁盘 I/O 驱动;
|
|
|
|
|
|
-3. 调用 FatFs 函数 ``f_mount``,随后调用 ``f_fdisk`` 或 ``f_mkfs``,并使用与传递到 :cpp:func:`esp_vfs_fat_register` 相同的驱动编号挂载文件系统。请参考 `FatFs 文档 <http://elm-chan.org/fsw/ff/doc/mount.html>`_,查看更多信息;
|
|
|
+3. 调用 FatFs 函数 :cpp:func:`f_mount`,随后调用 :cpp:func:`f_fdisk` 或 :cpp:func:`f_mkfs`,并使用与传递到 :cpp:func:`esp_vfs_fat_register` 相同的驱动编号挂载文件系统。请参考 `FatFs 文档 <http://elm-chan.org/fsw/ff/doc/mount.html>`_,查看更多信息;
|
|
|
|
|
|
4. 调用 C 标准库和 POSIX API 对路径中带有步骤 1 中所述前缀的文件(例如,``"/sdcard/hello.txt"``)执行打开、读取、写入、擦除、复制等操作。文件系统默认使用 `8.3 文件名 <https://en.wikipedia.org/wiki/8.3_filename>`_ 格式 (SFN)。如需使用长文件名 (LFN),启用 :ref:`CONFIG_FATFS_LONG_FILENAMES` 选项。请参考 `here <http://elm-chan.org/fsw/ff/doc/filename.html>`_,查看更多信息;
|
|
|
|
|
|
-5. 选择启用 :ref:`CONFIG_FATFS_USE_FASTSEEK` 选项,可以使用 POSIX lseek 实现快速执行。快速查找不适用于编辑模式下的文件,所以,使用快速查找时,应在只读模式下打开(或者关闭然后重新打开)文件;
|
|
|
+5. 可以启用 :ref:`CONFIG_FATFS_USE_FASTSEEK` 选项,可以使用 POSIX lseek 实现快速执行。快速查找不适用于编辑模式下的文件,所以,使用快速查找时,应在只读模式下打开(或者关闭然后重新打开)文件;
|
|
|
|
|
|
-6. 也可选择直接调用 FatFs 库函数,但需要使用没有 VFS 前缀的路径(例如,``"/hello.txt"``);
|
|
|
+6. 可以启用 :ref:`CONFIG_FATFS_IMMEDIATE_FSYNC` 选项,在每次调用 :cpp:func:`vfs_fat_write`、:cpp:func:`vfs_fat_pwrite`、:cpp:func:`vfs_fat_link`、:cpp:func:`vfs_fat_truncate` 和 :cpp:func:`vfs_fat_ftruncate` 函数之后,自动调用 :cpp:func:`f_sync` 以同步最近的文件改动。该功能可提高文件系统中文件的一致性和文件大小报告的准确性,但是由于需要频繁进行磁盘操作,性能将会受到影响;
|
|
|
|
|
|
-7. 关闭所有打开的文件;
|
|
|
+7. 可以直接调用 FatFs 库函数,但需要使用没有 VFS 前缀的路径,如 ``"/hello.txt"``;
|
|
|
|
|
|
-8. 调用 FatFs 函数 ``f_mount`` 并使用 NULL ``FATFS*`` 参数,为与上述编号相同的驱动卸载文件系统;
|
|
|
+8. 关闭所有打开的文件;
|
|
|
|
|
|
-9. 调用 FatFs 函数 :cpp:func:`ff_diskio_register` 并使用 NULL ``ff_diskio_impl_t*`` 参数和相同的驱动编号,来释放注册的磁盘 I/O 驱动;
|
|
|
+9. 调用 FatFs 函数 :cpp:func:`f_mount` 并使用 NULL ``FATFS*`` 参数,为与上述编号相同的驱动卸载文件系统;
|
|
|
|
|
|
-10. 调用 :cpp:func:`esp_vfs_fat_unregister_path` 并使用文件系统挂载的路径将 FatFs 从 VFS 中移除,并释放步骤 1 中分配的 ``FATFS`` 结构。
|
|
|
+10. 调用 FatFs 函数 :cpp:func:`ff_diskio_register` 并使用 NULL ``ff_diskio_impl_t*`` 参数和相同的驱动编号,来释放注册的磁盘 I/O 驱动;
|
|
|
+
|
|
|
+11. 调用 :cpp:func:`esp_vfs_fat_unregister_path` 并使用文件系统挂载的路径将 FatFs 从 VFS 中移除,并释放步骤 1 中分配的 ``FATFS`` 结构。
|
|
|
|
|
|
便捷函数 :cpp:func:`esp_vfs_fat_sdmmc_mount`、:cpp:func:`esp_vfs_fat_sdspi_mount` 和 :cpp:func:`esp_vfs_fat_sdcard_unmount` 对上述步骤进行了封装,并加入了对 SD 卡初始化的处理。我们将在下一章节详细介绍以上函数。
|
|
|
|