ESP32学习--SPIFFS文件系统

server/2025/1/8 1:42:08/

文件系统SPIFFS学习

本次学习基于 storage/spiffsgen 例程

前言

在嵌入式系统的学习过程中,我们将越来越频繁的需要去和内存打交道,有的是外置存储,有的是内置的存储。当我们需要管理的内存越来越多的时候,再使用简单的地址读取操作就会显得比较麻烦,这个时候就需要文件系统来帮我们进行管理,本次学习也是基于这个需求展开。

基本介绍

SPIFFS 是一个用于 SPI NOR flash 设备的嵌入式文件系统,支持磨损均衡(嵌入式设备使用的大多数存储芯片都支持每个扇区有限的擦除集,如果没有均衡,则嵌入式设备的寿命可能会受到影响)、文件系统一致性检查等功能。该文件系统只需要少量的RAM就可以运行,这对于一些资源不是很充足的单片机来说非常有用。

配置步骤

方法一直接使用spiffsgen.py

生成文件系统的镜像

我们要使用文件系统首先来讲肯定是需要一个文件系统的镜像,这里我们可以使用 spiffsgen.py这个工具进行制作。这个文件可以在,esp32提供的idf中找到,路径是components/spiffs
在这里插入图片描述

  • image_size:你所设置分区的大小
  • base_dir:想要烧录文件的位置
  • output_file:输出文件的名称

使用示例
在这里插入图片描述
在这里插入图片描述

这样你就可以得到一个可以烧录的bin文件了
然后使用 esptool.py工具烧录进去
可以先擦除我们这个位置的内容 通过下面这个命令
在这里插入图片描述
esptool.py --chip esp32s3 --port /dev/ttyACM0 erase_region 0x110000 0x100000

esptool.py --chip esp32 --port /dev/ttyUSB0 erase_region <start_address>

在这里插入图片描述
打印发现检测不到 ,然后我们再把镜像下载进去
在这里插入图片描述
esptool.py --chip esp32 --port /dev/ttyUSB0 --baud 115200 write_flash <your.bin>

方法二在构建系统中使用(推荐)

第二种方法相对于第一种更加简单,只需要在我们的cmake构建工程中添加如下代码即可

spiffs_create_partition_image(my_spiffs_partition my_folder FLASH_IN_PROJECT)

在这里插入图片描述
老规矩先使用命令擦除flash上面的程序

在这里插入图片描述

esptool.py --chip esp32s3 --port /dev/ttyACM0 --baud 115200 erase_flash

使用idf.py build构建工程
在这里插入图片描述
构建完成之后我们可以在build目录下面发现这两个文件,一个是我们的主程序的文件,一个是spiffs镜像文件,这里我们直接使用idf.py flash esp32的脚本会帮我们自动全部烧进去

观察烧录日志 确实把我们的spiffs镜像给烧录进去了
在这里插入图片描述

尾声

新年的第一篇文章,祝各位新年快乐,天天进步!


http://www.ppmy.cn/server/156237.html

相关文章

Spring Boot 3 配置大全系列 —— 如何配置用户的登录与认证?

学会这款 &#x1f525;全新设计的 Java 脚手架 &#xff0c;从此面试不再怕&#xff01; 升级 Spring Boot 3 配置讲解 —— 如何配置用户的登录与认证&#xff1f; 随着 Spring Boot 3 的发布&#xff0c;开发者迎来了许多新特性和改进&#xff0c;尤其是在安全性和用户认证…

题目解析与代码实现:You‘re Given a String

引言 本文将详细解读一道字符串处理题目 “You’re Given a String”&#xff0c;并用 Python 实现该题的解决方案&#xff0c;同时解析其核心算法逻辑。本文适合有一定基础的程序员&#xff0c;希望通过字符串算法提升能力的读者。 1. 题目描述 问题背景 题目给出了一个字符…

安卓11 SysteUI添加按钮以及下拉状态栏的色温调节按钮

最近客户想要做一个台灯产品&#xff0c;需要实现 串口调节台灯功能 &#xff0c;其中包括 亮度调节 色温调节 开关 三个功能 话不多说&#xff0c;贴代码 diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml old mode 100644 new …

wireshark超简单简单抓取自己网站的https包解密

端口8007 ip.addr 222.125.231.1 &&tcp.srcport8007&&http 我这网站虽然是https加密协议但是是超文本协议还是http1 而不是http2有的则是http2 也可以输入&&tls过滤只看传输层 image.png image.png 解密办法 配置日志文件到环境变量&#xff0c;然后c…

联邦学习的 AI 大模型微调中,加性、选择性、重参数化和混合微调

联邦学习的 AI 大模型微调中,加性、选择性、重参数化和混合微调 在联邦学习的 AI 大模型微调中,加性、选择性、重参数化和混合微调是不同的操作方式,具体如下: 加性微调 定义与原理:加性微调是在原始模型的基础上添加额外的可训练参数来进行模型调整。这种方式不会改变原…

User Script Sandboxing作用 及 在iOS项目中获取GitCommitHash

User Script Sandboxing 设置为 NO 。这个设置控制了 Xcode 脚本的沙盒限制&#xff0c;默认情况下&#xff0c;Xcode 会将脚本放入沙盒环境中&#xff0c;限制其访问文件系统的权限&#xff0c;尤其是对某些目录&#xff08;例如项目文件夹之外的文件&#xff09;进行修改时&a…

数独游戏构建的关键技术分析

数独游戏的开发看似简单&#xff0c;但要构建一个优质的数独游戏系统&#xff0c;需要解决多个关键技术难点。本文将深入分析数独构建过程中的核心问题及其解决方案。通过回溯法、渐进式移除和推理策略等技术手段&#xff0c;本文实现了一个高可玩性的数独游戏系统。并且在推理…

Spark是什么?Flink和Spark区别

Spark是什么&#xff1f;Flink和Spark区别 一、Spark二、Spark和Flink区别三、总结 一、Spark Apache Spark 是一个开源的大数据处理框架&#xff0c;主要用于大规模数据处理和分析。它支持多种数据处理模式&#xff0c;包括批处理、流处理、SQL 查询、机器学习和图处理等。 核…