esp32s3分区表配置及读写

一、分区表介绍

每片 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;
}

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值