[笔记]ESP32修改分区表 -- 扩大可编程FLASH容量

本文介绍了如何在ESP32项目中通过修改分区表,删除factory分区,将空间分配给ota_0和ota_1,从而增大可用的OTA更新空间。教程详细阐述了从修改分区表、启用HTTP OTA、创建本地HTTP服务器到进行OTA测试的整个过程,并提供了相关资源链接。
摘要由CSDN通过智能技术生成

        起因:由于会用到蓝牙和WIFI以及HTTP OTA功能,导致需要的Flash会比较大。乐鑫原本的分区表是一个固件(factory)和两个OTA(ota_0,ota_1),而固件(factory)分区是用来兜底的,但是这部分可以用ota_0或ota_1来作为兜底的功能分区。那么固件(factory)分区我们是可以删除,把这部分的flash长度平均到ota_0和ota_1,来扩大可编程flash空间。

一、环境

1、ESP-IDF版本:V4.4

2、编译 :VSCode + IDF

3、开发板 : ESP32(其他模块一样同样 大概)

首先感谢Chinese Forum 中文社区@ESP_Yake 大佬的解答,不然估计要等很久才能有这篇笔记。

PDF资料和demo工程,我上传到了gitee上,有需要的可以下载测试

partitions_demo: [笔记]ESP32修改分区表 -- 扩大可编程FLASH容量

提前操作:

因为上传至gitee后不会有.vscode文件,遇到使用者自行添加---用vscode打开后按F1,然后点击下图的选项 

二、讲解过程

1、碍于需要简单操作性的问题,我添加了console。

指令有:

wifi connect [x] [y]        --x填写你的wifi名字   --y填写你的wifi密码,该指令用于连接wifi

ota updata [url]               --url填写你的http server的文件下载地址(要在连接wifi再使用该指令)

2、检查容量是否正确

我使用的是4MB,如果你们使用的是2MB,则要更改分区表ota_0和ota_1的长度和起始位置,注意ota_0的起始位置0x10000是不更改的

3、添加并选中自定义分区表

        在工程目录下添加partitions.csv文件,内容可以见红框内 

选中分区表,该作用为,编译阶段会使用你指向的CSV文件生成相应的partitions.bin文件

4、勾选启用http ota

注意一下,该功能选项是跳过证书验证,不过等下我们使用的server我记得是没有相关证书,所以这个选不选在测试阶段都是没啥问题,但是在产品测试阶段则不推荐使用

5、编译下载

下载分两种情况

1、如果出现这种,这可以不用看下面的操作

2、如果没有出现上述的LOG,则需要使用tools软件进行烧录

 然后我们添加bin文件和flash偏移地址

 

 

 

搞定之后,配置其他的设置项,我推荐这里的波特率低一点,保证它的成功率。之后先ERASE清除固件,然后再START下载刚才选中的bin固件。一般的开发板都自带自动下载,如果没有的话,要手动按住BOOT按键(一般板上有两个按键,一个是BOOT、一个是RST)再重新点击START或ERASE

下载完成后,我们就使用串口工具进行测试

6、连接WIFI

我们打开串口,使用指令连接WIFI

中间是一个空格隔开

 这样就连接成功了

7、使用powershell创建http server

我们来到工程下的build文件夹中

 然后,在空白处Shift+右键,可以看到“在此处打开Powershell窗口(S)”,点击之后你可以看到这个

然后输入python -m http.server 8070,这就创建了http server

这里需要注意,你需要在电脑上安装python才能进行这部操作。如果没有安装,个人推荐安装3.7版本的python

 我们使用浏览器打开登录服务器的ip,这里可以从串口的LOG看到服务器的IP

 因为我使用的是8070端口,所以浏览器登录的时候也要使用8070端口 

所以输入 192.168.137.1:8070

然后就能看到

8、进行OTA测试

前面的步骤已经连接上的WIFI,我的组件中是对WIFI进行了NVS的保存操作,所以等下OTA之后不用再输入WIFI的名字和密码了

我们在串口上输入

ota updata http://192.168.137.1:8070/partitions_demo.bin

 后面的http的地址,是这里复制过来的,这样比较快,且不会出错。

然后,我们修改一下main.c里面的代码,在里面添加printf打印函数,确保每次升级都是最新编译出来的固件

 记得要编译!!!!!!!!!!

然后串口发送OTA升级指令

看LOG

 翻译过来就是,正在OTA,从地址偏移的0x10000开始写入,这里的0x10000就是ota_0的起始地址

 

 升级完成后,可以看到printf出来的字符串了

我们再改字符串,编译,发送OTA升级指令

这里的0x170000就是ota_1的起始地址

 

 这就验证正确了。

需要注意一点,如果发送OTA升级指令的时候卡在这里

 这个有可能是服务器server没有相应,那么我们到PowerShell窗口界面敲几下回车就可以了

 如果有什么问题,请在下面评论或私信,看到会回的

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值