做简单网站后端需要学什么,培训机构网站设计好吗,网站建设交流推广,网络平台推广案例ESP32-S3的分区表
什么是分区表#xff1f;#x1f914;
ESP32-S3的分区表是用来确定在ESP32-S3的闪存中数据和应用程序的布局。每个ESP32-S3的闪存可以包含多个应用程序#xff0c;以及多种不同类型的数据#xff08;例如校准数据、文件系统数据、参数存储数据等#x…ESP32-S3的分区表
什么是分区表
ESP32-S3的分区表是用来确定在ESP32-S3的闪存中数据和应用程序的布局。每个ESP32-S3的闪存可以包含多个应用程序以及多种不同类型的数据例如校准数据、文件系统数据、参数存储数据等。因此我们在闪存的默认偏移地址0x8000处烧写一张分区表。
分区表的结构
分区表的长度为0xC00字节最多可以保存95条分区表条目。分区表数据后还保存着该表的MD5校验和用于验证分区表的完整性。因此分区表占据了一个整个的闪存扇区大小为0x10004KB。结果是任何在其后的分区必须至少位于(默认偏移量)0x1000的位置。
分区表中的每个条目都有一个名称标签、类型应用、数据或其他内容、子类型和加载分区的闪存中的偏移量。
如何使用分区表
在使用分区表时最简单的方法就是打开项目配置菜单idf.py menuconfig搜索partition在partition Table 选择栏下选择一个预定义的分区表。
这些预定义的分区表在我们idf安装的以下路径上可以找到 D:\Espressif\frameworks\esp-idf-v5.2.1\components\partition_table 例如以下是“Single factory app, no OTA”选项的分区表信息摘要
# ESP-IDF Partition Table
# Name, Type, SubType, Offset, Size, Flags
nvs, data, nvs, 0x9000, 0x6000,
phy_init, data, phy, 0xf000, 0x1000,
factory, app, factory, 0x10000, 1M,在flash的0x10000 (64 KB)偏移地址处存放一个标记为“factory”的二进制应用程序且启动加载器将默认加载这个应用程序。分区表中还定义了两个数据区域分别用于存储NVS库专用分区和PHY初始化数据。
创建自定义表
如果在 menuconfig 中选择“自定义分区表 CSV”我们一般选用这个CSV文件作为我们的自定义分区表复制将这个文件粘贴到项目的根目录下。
✨我们来详细看一下当前分区表中的内容都有什么
分区名称类型子类型偏移量大小描述nvsdatanvs留空具体地址值未指定0x6000非易失性存储区用于保存设备重启后仍需保留的配置数据如Wi-Fi凭据等phy_initdataphy留空具体地址值未指定0x1000物理层初始化数据区通常存放与硬件初始化相关的固件或配置信息factoryappfactory留空具体地址值未指定1M (1MiB)出厂固件或用户可升级的应用程序固件存储区用于存储设备的主要应用程序代码
可见我还有很多的Flash没有使用毕竟我的核心板有16MB的Flash
✨接下来我们对分区进行修改
1️⃣添加一个分区起名myapp 2️⃣修改分区表文件名为我们自定义的名称
3️⃣在 menuconfig 中修改为“自定义分区表 CSV” 之后我们在上传程序会按照分区表的内容对ESP32进行分区
✨在编写程序时只需要稍微修改nvs_flash_init()和nvs_open()这两个函数即可如下其他操作和操作nvs相同 char* partition_namemyapp; //我们添加的分区名nvs_flash_init_partition(partition_name); //初始化分区char* name_space学习资料;nvs_handle_t learning_handle; nvs_open_from_partition(partition_name,name_space,NVS_READWRITE,learning_handle); //打开结论
参考资料 ESP-IDF Partition Tables