This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TM4C1294NCPDT:RTOS/TM4C1294:长文件名

Guru**** 2609955 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1136970/tm4c1294ncpdt-rtos-tm4c1294-long-file-name

器件型号:TM4C1294NCPDT

大家好、

我想使用  TM4C1294读取 USB 闪存驱动器的长文件名。

示例代码如下所示。

    DIR dirs;
    FILINFO finfo;
    char path[255] ;
    TCHAR lfname[_MAX_LFN];
    
    if (f_opendir(&dirs, path) == FR_OK)
    {

        finfo.lfname = lfname;
        finfo.lfsize = _MAX_LFN - 1;

         if(f_readdir(&dirs, &finfo) == FR_OK)
        {
            if(!finfo.fname[0])
            {
                    UartPrintf("No Data\n");
                    return;
            }
                UartPrintf("File fn: %s\n",finfo.fname);
                UartPrintf("File lfn: %s\n",finfo.lfname);
        }
        else
        {
            UartPrintf("EOF\n");
        }
    }

我可以读取正确的 fname、但 lfname 始终显示"???????? "。

在 ffconf.h 设置中、我修改了一些定义值。

#define _USE_LFN 2.

我是否应该设置任何其他定义值以使 lfname 正常工作?

感谢你的帮助

此致

Arthur

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Arthur:

    我在 TivaWare 中使用的 FatFs 库的随附文档中看到、不支持 LFN:

    FatFs 模块的特性

    1. 用于 FAT 结构和每个文件的独立缓冲区、适合快速多文件访问。
    2. 支持多个驱动器/分区。
    3. 支持 FAT12、FAT16 (+FAT64)和 FAT32。  (FAT64:64KB/群集中的 FAT16)
    4. 支持8.3格式的文件名和 NT 小写标志。 (不支持 LFN)
    5. 支持两个分区规则:fdisk 和 Super-floppy。
    6. 针对8/16位微控制器进行了优化。

    可能可以通过更新版本的 FatFs 获得此支持、但 TivaWare 附带的功能似乎无法支持该功能。

    您可以在[Install Path]\TivaWare_C_Series-2.2.0.295\third_party\fatfs\doc\00index_e.html 上找到此文档

    此致、

    Ralph Jacobi