工具与软件:
你(们)好
这个问题是这个问题的延续,在某种意义上,需要在我可以尝试长文件名之前修复其他事情
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1374459/mcu-plus-sdk-am263x-freertos-fat-driver-is-not-working-from-freertos-buggy/
长度超过12个字符的文件名似乎无法正常工作。
我不确定这是否来自 8.3短文件名格式、因为"cust_config.h"我可以创建它、即10.1
我做了什么:
- 打印文件名以确保其正常:[%s]生成[longfilename.testing]
-用 ff_fopen(文件名,"w")创建文件+在其中写入一些东西,而不是关闭
-使用 FreeRTOS CLI dir 命令检查 Windows 上的文件
重现的最简单方法是使用示例 mmcsd_file_io_am263x-lp_r5fss0-0_freertos_ti-arm-clang (以及我们先前为 FreeRTOS 修改的 SDK)并替换以下行:
char filename[]="/sd0/file.dat";
或者会与
char filename[]="/sd0/longfilename.testing";
所有短于或等于8.3格式的文件名都是可以看到的、如果长了、则不会显示错误、但文件名 中都是 japanase/chinese 字符、如下所示:
CLI:
窗口:
您可以看到、创建的文件是正常的(代码是相同的、只是文件名不同)、并且对 longfilename.testing 进行了 trashed。
还有其他文件我甚至不能删除他们甚至在 Windows 下-可能我将不得不格式化 SD
尝试使用 ffconfigINCLUDE_SHORT_NAME 0和1 -没有区别。
只是为了测试我在 Windows 上复制了 一个名为"longfilename.coped"的文件, 它 在 CLI dir 命令中可见,也在 Windows 屏幕截图上可见,所以这个问题可能是仅与 ff_fopen 有关。
C:\ti\mcu_plus_sdk_am263x_09_02_00_56\source\fs\freertos_fat\config\FreeRTOSFATConfig.h:
#define ffconfigBYTE_ORDER (pdFREERTOS_LITT_ENDIAN)
#define ffconfigHAS_CWD (1U)/* 0 =仅使用绝对路径*/
#define ffconfigCWD_thread_local_index (4U)
#define ffconfigLFN_support (1U)
#define ffconfigINCLUDE_SHORT_NAME (0U)
#define ffconfigSHORTNAME_CASE (0U)
#define ffconfigUNICODE_UTF8_SUPPORT (1U)
#define ffconfigFAT12_support (0U)
#define ffconfigOPTIMIZE_UNALIGN_ACCESS (1U)
#define ffconfigCACHE_WRITE_Through (0U)
#define ffconfigWRITE_Both_FATS (1U)
#define ffconfigWRITE_FREE_COUNT (1U)
#define ffconfigTIME_support (0U)
#define ffconfigREMOVABLE_media (1U)/*假设媒体始终可移除*/
#define ffconfigMOUNT_find_free (1U)
#define ffconfigFSINFO_trusted (1U)
#define ffconfigPATH_cache (0U)
#define ffconfigPATH_cache_depth (0U)/*仅在 ffconfigPATH_cache 为1时才使用*/
#define ffconfigHASH_cache (0U)
#define ffconfigHASH_function (0U)/*仅在 ffconfigHASH_cache 为1时使用*/
#define ffconfig64_NUM_SUPPORT (1U)
#define ffconfigDRIVER_BUSY_SLEEP_MS (40)
此致、