首先,先从支持和不支持ota说起,我们可以从make menuconfig配置选择一个简单的预定义分区表: “Single factory app, no OTA” “Factory app, two OTA definitions” 系统默认的不支持 ota 的分区表: # Name, Type, SubType, Offset, Size, Flags nvs, data, nvs, 0x9000, 0x6000, phy_init, data, phy,...
分区表中的每个条目都包括以下几个部分:Name(标签)、Type(app、data 等)、SubType 以及在 flash 中的偏移量(分区的加载地址)。 Type 字段可以指定为 app (0x00) 或者 data (0x01),也可以直接使用数字 0-254(或者十六进制0x00-0xFE)。注意,0x00-0x3F 不得使用(预留给 esp-idf 的核心功能)。 SubType 字...
具体来说,ESP32 在 Flash 的 默认偏移地址 0x8000 处烧写一张分区表。该分区表的长度为 0xC00 字节(最多可以保存 95 条分区表条目)。分区表数据后还保存着该表的 MD5 校验和,用于验证分区表的完整性。此外,如果芯片使能了安全启动功能,则该分区表后还会保存签名信息。 分区表中的每个条目都包括以下几个部分:...
3.1 分区表的修改 按照上面的示例新建的工程,编译是没有问题的,但是烧录后运行会出现如下问题,一直重启: 在这里插入图片描述 可以看到图中的提示,esp_image太大了,默认的分区表用户分区 放不下 image。 在NVS 使用的博文中,我们简单介绍过分区表: ESP32-C3 学习测试(八、NVS — 非易失性存储库的使用) 但是...
本文主要主要的目的是基于官方的SDK,学会使用 NVS,相关的知识简单提一下,比如分区表等(后期需要应用到的时候再来详细说明)。 1.1 基本介绍 对于ESP32-C3 NVS的介绍,乐鑫的官网的说明链接如下: 乐鑫官方ESP32-C3 NVS部分说明 简单通过官方介绍了解一下,还是使用几张官方的图表示一下: ...
二级引导程序将首先从 Flash 中加载分区表,然后查询 OTA升级数据分区,并选择某个应用分区的固件进行加载。当处理完所有数据后,二级引导程序将校验固件的完整性,并从二进制固件文件的头部寻找入口地址,跳转到该地址处运行。应用分区的固件拥有一些状态,这些状态会影响固件的启动。这些状态保存在 OTA 升级数据分区,在乐鑫...
运行命令可以编译应用程序和所有 ESP-IDF 组件,接着生成 bootloader、分区表和应用程序二进制文件: idf.py build 1. 4.4. 烧录固件 使用命令,将刚刚生成的二进制文件 (bootloader.bin, partition-table.bin 和 hello-world.bin) 烧录到 ESP32-C3 开发板: ...
所以会出现上面的问题,那么我们就得自己修改一下分区表。 我们使用的是 VScode 插件开发,可以直接在 VScode 找到SDK的配置: 在第一个栏目里面选择使用用户的 Partition Tables: 然后,在示例工程中添加一个名为partitions.csv的分区表文件: 设置完成,刚开始编译有问题,问题如下: ...
1.2 分区表 1.3 NVS使用步骤 2、示例测试 2.1 基础示例测试 2.2 数据的删除 2.3 命名空间,键值对 2.4 字符串数据类型的保存 前言 接下来的 ESP32-C3 功能测试都是基于自己设计的开发板: 自己画一块ESP32-C3 的开发板(第一次使用立创EDA)(PCB到手) 开发环境是乐鑫官方的 ESP-IDF, 基于VScode插件搭建好的:...
在进行ESP32-C3功能测试时,我们基于自定义的开发板进行。NVS的使用涉及到分区表的概念,分区表包含了存储区域的名称、类型、子类型以及在Flash中的偏移量。默认分区表提供了ESP32-C3的系统信息,包括NVS的说明。对于NVS分区的生成,可以参考其他博文中的说明。NVS使用步骤包括导入必要的API文件和调用相应的...