ESP32-IDF给FATFS添加长文件名支持,更改_USE_LFN以支持大于8.3格式的文件名
ESP-IDF
框架下的 FATFS
,默认使用的文件名格式是8.3短文件名
。
8.3格式,即文件名为8个字节,.后的后缀为3个字节。
所以一旦文件名称超出长度限制,就会造成如下显示。
配置IDF工程,以使FATFS支持长文件名
8个字节长度的文件名,用起来实在不够,起码命名起来不大方便。
IDF
框架的文件系统,内嵌了开源的FATFS
。FatFs
是面向小型嵌入式系统的一种通用的 FAT 文件系统。其程序和工作区的资源占用都非常小,可以轻松被整合到资源有限的小型微控制器中。
我们知道,FATFS
对长文件名
的支持,需要更改 _USE_LFN
为 2/3。其被定义在 ffconf.h
文件内。
而万能的IDF
框架早已考虑到了这些,其对 FATFS
的代码进行部分修改,以能够使用ESP32
的堆/栈
,来支持长文件名。
想要FF_USE_LFN
的值为2,只需要在工程中定义CONFIG_FATFS_LFN_STACK
即可。
IDF
工程中,CONFIG_
开头的宏定义,通常存在于sdkconfig
配置文件中,其可通过SDK Configuration Editor (menuconfig)
来进行图形化配置,而用不着拿手敲。
现在搜索整个工程,因为 CONFIG_FATFS_LFN_STACK
是未定义的,所以编译的时候会按照FF_USE_LFN
为0来处理,自然不支持长文件名。
下面配置IDF工程,使CONFIG_FATFS_LFN_STACK
在sdkconfig
中被定义。
- 点击Vscode左下角的图标,
SDK Configuration Editor (menuconfig)
。
- 搜索
CONFIG_FATFS_LFN_STACK
,将匹配到的设置项勾选,最后点击保存。
- 进行编译。等待编译完成。
- 编译完成后搜索
CONFIG_FATFS_LFN_STACK
,可以看到其已经存在。长文件名
已被支持。
- 下载、运行。现在看到的就是完整的
长文件名
。
测试代码
完整工程*:Easyio 开源库工程的 Demo - 37_JPG_LCD_DMA_SD_PHOTO_ALBUM
。
Demo 功能为:制作一个用SD卡存储照片的电子相册,它会读取SD卡/pic目录下的所有jpg图片,依次进行解码并显示在320x240
分辨率的液晶屏上。
因为使用了IDF
的虚拟文件系统 (VFS)
,所以其接口格式与标准c文件IO几乎一样,使用起来更为方便。
第三方IDF
工程如何使用 Easyio
:ESP32开源驱动库Easyio的使用
主要功能片段:
#include "easyio.h"// SD卡初始化、FATFS文件系统挂载。总线使用SPI模式,20MHz。sdmmc_card_t* card = sd_card_fatfs_spi_init();while (!card) { // 验证错误,如果返回值为0,则SD卡初始化及FATFS挂载失败,重试ESP_LOGE(TAG, "Failed !! %d Retry!!", false);vTaskDelay(200 / portTICK_PERIOD_MS);card = sd_card_fatfs_spi_init();}DIR *dir;struct dirent *ptr;// 列表显示 /pic目录下所有文件的文件名// 如需>8.3的长文件名,需要设置SDK Configuration中的CONFIG_FATFS_LFN_STACKdir = opendir(MOUNT_POINT"/pic");printf("file list:\n");while((ptr = readdir(dir)) != NULL) {printf("\t%s\n", ptr->d_name);}closedir(dir);
更多内容,在同专栏 ESP32
的 Easyio
使用教程:ESP32开源驱动库Easyio的使用
ESP32-IDF给FATFS添加长文件名支持,更改_USE_LFN以支持大于8.3格式的文件名相关推荐
- ESP32( IDF平台)+MAX30102 配合Pyqt上位机实现PPG波形显示与心率计算
0 引言 年前买了一个MAX30102模块,在家无聊做了这个demo对一些相关的知识进行学习. 主要学习的内容: 光体积变化描记图(Photoplethysmogram, PPG)测量原理学习. ES ...
- esp32系列(11):ESP32 IDF平台 mpu6050 DMP 驱动移植及测试上位机开发
目录 1 DMP 官方库介绍 1.1 DMP与MPL(Motion Processing Libraries)功能 1.2 运行MPL的硬件要求 1.3 Motion Driver 6.12 的架构 ...
- FATFS配置长文件名,为何跟编码转换有关
要打开FATFS的长文件名功能,必须添加OEMCP与Unicode的编码转换函数,同时也就要把OEMCP与Unicode的编码转换数组添加进来,这是为什么呢? OEMCP在936代码页下就是GBK,这 ...
- Hive表中修改列位置,更改类型、移动位置(impala支不支持更改位置)
Hive表中修改列位置,更改类型.移动位置 Hive 目标:在hive中实现在指定位置添加列 背景:hive中添加新列时会默认在最后一列依次添加,无法同mysql一样可以指定位置. 解决方法:首先在h ...
- ESP32 IDF LVGL8.0 flash 外部字库显示 中文显示
我从stm32一路学到esp32,发现这款芯片挺好玩的,主要是还是stm32太贵了,stm32主要是很多坑有人遇到了,并给出了解决方法,esp32这方面就少点,有时候找不到的,只能靠自己了. 本文使用 ...
- ESP32 IDF LVGL 1.47寸圆角屏幕测试
前言 基于ESP32 IDF框架移植的LVGL,IDF版本为4.3.1,LVGL版本为8.1.1.屏幕为中景园的1.47寸172x320分辨率的圆角IPS,驱动芯片为st7789v3. B站视频效果: ...
- linux上添加下载源的时候报错:无法添加 PPA:“‘此 PPA 不支持 bionic‘”,以及关于linuxPPA的介绍,如何查找软件包的PPA源,并添加PPA
1 介绍LInux PPA 在介绍问题之前,首先来说明一下什么是PPA,清楚问题的本质,追根溯源,这样才能更明确问题,然后针对性的去解决这个问题! 1.1 为什么需要PPA PPA:Personal ...
- 一般源码安装添加的GD库 是不支持 jpeg 格式的图片的
一般源码安装添加的GD库 是不支持 jpeg 格式的图片的,只支持如下格式 GD Support enabled GD Version bundled (2.0.34 compatible) GI ...
- Android11还能自定义相机吗,安卓用户又少了一项自由,Android 11不再支持更改默认相机程序...
原标题:安卓用户又少了一项自由,Android 11不再支持更改默认相机程序 来源:量子位 关注前沿科技 萧萧 发自 凹非寺 量子位 报道 | 公众号 QbitAI 萧萧 发自 凹非寺 量子位 报道 ...
最新文章
- hub-spock-ospf,nbma
- paramiko基础
- Linux安装mysql学习
- 强大的PHP防SQL注入类,可以过滤敏感参数
- 第一个jfinal的样例
- 俄罗斯方块之四 运动块的绘制实现
- propertychange方法
- Shell 快速入门
- 持久化的基于L2正则化和平均滑动模型的MNIST手写数字识别模型
- 【cocos2d-js官方文档】二十五、Cocos2d-JS v3.0中的单例对象
- 带着canvas去流浪系列之四 绘制散点图
- mvn linux,Linux安装Maven
- java hexits,[Java]浅谈Java的异常体系
- mysql实战数据.sql_Mysql实战(DML增删改+Select)
- linux 进程 inline hook,高级Linux Kernel Inline Hook技术分析与实现
- can test 接收报文_CAN总线
- 拓端tecdat|R语言混合效应逻辑回归(mixed effects logistic)模型分析肺癌数据
- 《阿里感悟》- 技术人员的职业规划
- iOS App Store 审核 other 处理、解决办法 The review of your app is taking longer than expected
- docker基础篇--有它就够了