esp32s3分区表配置及读写

news/2024/9/19 6:55:37 标签: android

一、分区表介绍

每片 ESP32-S3 的 flash 可以包含多个应用程序,以及多种不同类型的数据(例如校准数据、文件系统数据、参数存储数据等)。因此,在 flash 的 默认偏移地址 0x8000 处烧写一张分区表。

分区表中的每个条目都包括以下几个部分:Name(标签)、Type(app、data 等)、SubType 以及在 flash 中的偏移量(分区的加载地址)。

demo分区表路径:
在这里插入图片描述
打开“partitions_singleapp.csv” 如下图所示:在这里插入图片描述

类型:
Name:分区名称
Type:类型,app、data、0x40-0xFE(自定义)
SubType:子类型,Tpye=app,可选factory、ota_0-ota15
Offset:偏移地址,分区在flash中的起始地址
Flags:可选encrypted(加密)和readonly(只读)
指定为app的类型,会在flags中强制加密成encrypted
分区表中如果Offset为空,IDF系统将会自动计算起始地址。

详细参考 官网介绍

二、分区表配置

1、建立分区表,使用idy.py menuconfig进入如下地址,选择目标分区配置。在这里插入图片描述

2、分区表中的信息如下,在分区表中添加一个“user”分区,类型为“0x40”,子类型定义为“0x01”,大小“0x1000”,如下图所示:

在这里插入图片描述

3、配置分区表文件名称,如下图所示“partitions.csv”

在这里插入图片描述

4、程序编译过程中可以看到如下信息,说明配置表已完成配置。其中显示的user项的配置

在这里插入图片描述

三、向用户分区中进行读写操作

按照如上配置完毕后,编译如下程序。
程序中执行了2个操作,一个是想目标类型(USER_PARTITION_TYPE)首地址写入字符串“this is flash write test!”。
然后申请一个字符串空间,将写入的文件读出到目标空间中。

#include <stdio.h>
#include <esp_log.h>
#include <esp_partition.h>
#include "string.h"

static const char*TAG = "partition";

/*定义分区类型*/
#define USER_PARTITION_TYPE 0x40
/*定义分许子类型*/
#define USER_PARTITION_SUBTYPE 0x01
/*定义目标分区指针*/
static const esp_partition_t* partition_ptr = NULL;

void app_main(void)
{
    /*获取目标分区指针*/
    partition_ptr = esp_partition_find_first(USER_PARTITION_TYPE, USER_PARTITION_SUBTYPE, NULL);

    if(partition_ptr == NULL)
    {
        ESP_LOGE(TAG,"CAN'T FIND partition");
        return;
    }

    /*1-擦除操作*/
    esp_partition_erase_range(partition_ptr,0,0x1000);

    /*2-准备目标字符串*/
    const char *test_str = "this is flash write test!";

    /*3-写入目标地址*/
    esp_partition_write(partition_ptr,0,test_str,strlen(test_str));

    /*4-读出目标地址*/
    char read_buf[64];
    memset(read_buf,0,sizeof(read_buf));
    esp_partition_read(partition_ptr,0,read_buf,strlen(test_str));
    ESP_LOGI(TAG, "read partition data:%s" ,read_buf);
    return;
}

运行结果如下图所示。
在这里插入图片描述


http://www.niftyadmin.cn/n/5665184.html

相关文章

71、哪吒开发板试用结合oak深度相机进行评测

基本思想:收到intel的开发板-小挪吒,正好手中也有oak相机,反正都是openvino一套玩意,进行评测一下,竟然默认是个window系统,哈哈

【专题】2024中国生物医药出海现状与趋势蓝皮书报告合集PDF分享(附原数据表)

原文链接&#xff1a;https://tecdat.cn/?p37719 出海已成为中国医药产业实现提速扩容的重要途径。目前&#xff0c;中国医药产业发展态势良好&#xff0c;创新能力不断增强&#xff0c;然而也面临着医保政策改革和带量集采带来的压力。政府积极出台多项政策支持医药企业出海…

九章云极DataCanvas公司荣获2024年服贸会“科技创新服务示范案例”

9月15日&#xff0c;2024年中国国际服务贸易交易会&#xff08;服贸会&#xff09;示范案例交流会暨颁奖典礼在北京国家会议中心举行&#xff0c;九章云极DataCanvas 公司自研的DataCanvas Alaya NeW智算操作系统凭借卓越的AI创新实力、前瞻性的市场布局以及突破性的技术革新成…

运行容器应用

kubernetes通过各种controller来管理pod的生命周期&#xff0c;为了满足不同的业务场景&#xff0c;kubernetes开发了Deployment&#xff0c;ReplicaSet&#xff0c;DaemonSet&#xff0c;StatefulSet&#xff0c;Job等多种ControllerDeployment&#xff1a; kubectl run nginx…

基于Java的居家办公OA(Office Automation)系统的设计步骤

基于Java的居家办公OA&#xff08;Office Automation&#xff09;系统是一种可以帮助员工在远程位置高效完成工作的软件解决方案。这种系统通常包括但不限于文档管理、任务分配、日程安排、会议安排等功能模块。下面是一个简单的架构概述&#xff0c;以及一些关键组件和技术选型…

Python 之数据库操作(Python Database Operations)

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…

Linux--守护进程与会话

进程组 概念 进程组就是一个或多个进程的集合。 一个进程组可以包含多个进程。 下面我们通过一句简单的命令行来展示&#xff1a; 为什么会有进程组&#xff1f; 批量操作&#xff1a;进程组允许将多个进程组织在一起&#xff0c;形成一个逻辑上的整体。当需要对多个进程…

02 ETH

以太坊与比特币有什么不同&#xff1f; 以太坊立足比特币创新之上&#xff0c;于 2015 年启动&#xff0c;两者之间有一些显著不同。 比特币就仅仅是比特币&#xff1b;以太坊包括以太币&#xff0c;以太币才是和比特币对等的存在。以太坊是可编程的&#xff0c;所以你可以在…