ESP32-FAT文件系统使用磨损均衡存储文件笔记
基于ESP-IDF4.1
1 /*
2 FAT文件系统存储文件,使用磨损均衡库wear-leveling
3 */
4
5 #include <stdlib.h>
6 #include <stdio.h>
7 #include <string.h>
8 #include "esp_vfs.h"
9 #include "esp_vfs_fat.h"
10 #include "esp_system.h"
11
12 static const char *TAG = "example";
13
14 // 磨损均衡处理实例
15 static wl_handle_t s_wl_handle = WL_INVALID_HANDLE;
16
17 // 分区挂在路径
18 const char *base_path = "/spiflash";
19
20 void app_main(void)
21 {
22 ESP_LOGI(TAG, "Mounting FAT filesystem");
23
24 // 命名设备分区,定义base_path。如果是新分区并且没有格式化过则允许格式化分区
25 const esp_vfs_fat_mount_config_t mount_config = {
26 .max_files = 4,
27 .format_if_mount_failed = true,
28 .allocation_unit_size = CONFIG_WL_SECTOR_SIZE
29 };
30 esp_err_t err = esp_vfs_fat_spiflash_mount(base_path, "storage", &mount_config, &s_wl_handle);
31 if (err != ESP_OK) {
32 ESP_LOGE(TAG, "Failed to mount FATFS (%s)", esp_err_to_name(err));
33 return;
34 }
35 ESP_LOGI(TAG, "Opening file");
36 FILE *f = fopen("/spiflash/hello.txt", "wb"); // 读写或建立一个二进制文件
37 if (f == NULL) {
38 ESP_LOGE(TAG, "Failed to open file for writing");
39 return;
40 }
41 fprintf(f, "written using ESP-IDF %s\n", esp_get_idf_version());
42 fclose(f);
43 ESP_LOGI(TAG, "File written");
44
45 // 打开
46 ESP_LOGI(TAG, "Reading file");
47 f = fopen("/spiflash/hello.txt", "rb"); // 读写打开一个二进制文件
48 if (f == NULL) {
49 ESP_LOGE(TAG, "Failed to open file for reading");
50 return;
51 }
52 char line[128];
53 // 从指定的流 f 读取一行,并把它存储在 line 所指向的字符串内
54 fgets(line, sizeof(line), f);
55 fclose(f);
56 // 查找换行符
57 char *pos = strchr(line, '\n');
58 if (pos) {
59 *pos = '\0'; //放置一个空字符串
60 }
61 ESP_LOGI(TAG, "Read from file: '%s'", line);
62
63 // 卸载FAT文件系统
64 ESP_LOGI(TAG, "Unmounting FAT filesystem");
65 ESP_ERROR_CHECK( esp_vfs_fat_spiflash_unmount(base_path, s_wl_handle));
66
67 ESP_LOGI(TAG, "Done");
68 }
原文:https://gitee.com/EspressifSystems/esp-idf
ESP32-FAT文件系统使用磨损均衡存储文件笔记的更多相关文章
- FAT文件系统规范v1.03学习笔记---4.文件和目录数据区之长目录项
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---3.根目录区之FAT目录项结构
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---1.保留区之 Fat32 FSInfo扇区结构和备份启动扇区
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---2.FAT区之FAT数据结构(Fat Data Structure)
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统规范v1.03学习笔记---1.保留区之启动扇区与BPB
1.前言 本文主要是对Microsoft Extensible Firmware Initiative FAT32 File System Specification中文翻译版的学习笔记. 每个FAT ...
- FAT文件系统学习和思考
FAT(File Allocation Table)文件系统 前两天面试,导师说我基础差,要赶紧补起来了.今天晚上看了FAT32文件系统,基本的信息都是百度百科中"FAT文件系统" ...
- <FAT文件系统> -- DBR
FAT16是比较简单的文件系统,相比NFTS等文件系统,该系统的学习比较easy,容易上手,同时对于数据存储的机理以及数据的恢复有一定的帮助.FAT文件系统有一定的弊端,不能支持太大的数据存储. FA ...
- RTT下spi flash+elm fat文件系统移植小记
背景: MCU:STM32F207 SPI flash: Winbond W25Q16BV OS: RTT V1.1.1 bsp: STM32F20x 1 将spi_core.c,spi_dev.c及 ...
- 在XC2440的uboot中挂载U盘,利用FAT文件系统读写U盘文件
转:http://blog.chinaunix.net/uid-22030783-id-3347608.html 在XC2440的uboot_V1.3版本中已经支持USB HOST驱动和FAT文件系统 ...
随机推荐
- GO语言异常处理02---返回错误
package main import ( "errors" "fmt" "math" ) /*计算圆面积,同时返回[结果-错误对]*/ f ...
- GO语言常用标准库03---time包
package main import ( "fmt" "time" ) func main021() { nowTime := time.Now() fmt. ...
- Python+Selenium学习笔记12 - 窗口大小和滚动条
涉及到的三个方法 set_window_size() 用于设置浏览器窗口的大小 e.gset_window_size(600,600) window.scrollTo() 用于设置浏览器窗口滚动条的 ...
- Vue中的三种Watcher
Vue中的三种Watcher Vue可以说存在三种watcher,第一种是在定义data函数时定义数据的render watcher:第二种是computed watcher,是computed函数在 ...
- YOLOvi(i=1,2,3,4)系列
YOLOvi(i=1,2,3,4)系列 YOLOv4论文链接:https://arxiv.org/pdf/2004.10934.pdf YOLOv4源码链接:https://github.com/Al ...
- MindSpore技术理解(上)
MindSpore技术理解(上) 引言 深度学习研究和应用在近几十年得到了爆炸式的发展,掀起了人工智能的第三次浪潮,并且在图像识别.语音识别与合成.无人驾驶.机器视觉等方面取得了巨大的成功.这也对算法 ...
- 适用于AMD ROC GPU的Numba概述
适用于AMD ROC GPU的Numba概述 Numba通过按照HSA执行模型将Python代码的受限子集直接编译到HSA内核和设备功能中,从而支持AMD ROC GPU编程.用Numba编写的内核似 ...
- 构建可扩展的GPU加速应用程序(NVIDIA HPC)
构建可扩展的GPU加速应用程序(NVIDIA HPC) 研究人员.科学家和开发人员正在通过加速NVIDIA GPU上的高性能计算(HPC)应用来推进科学发展,NVIDIA GPU具有处理当今最具挑战性 ...
- VB 老旧版本维护系列---迷之集合- dataTable
迷之集合- dataTable '定义一个datatable,并声明一个空对象 Dim data As DataTable = New DataTable() '获取行数 Dim rows As In ...
- C语言编译器开发之旅(二):解析器
本节是我们这个编译器系列的第二节,进入语法分析与语义分析的部分解.在本节我们会编写一个简单的解析器. 解析器的主要功能分为两个部分: 识别输入的语法元素生成AST(Abstract Syntax Tr ...