OTA
OTA是什么?
不做介绍。
esp32端
分区表(Partition Table)是什么?
图中所知,0x9000之前的结构固定,分别放了Boot Loader和Partition Table。
而分区表(Partition Table
)位置:在如图偏移地址0x8000
(默认偏移地址)开始,长度为0x1000(4kB)
。
而分区表(Partition Table
)作用:就是管理0x9000以后的数据。
如何创建分区表?
esp32的分区表是partitions.csv表格
如图讲解参数
Size:分区表大小,图中ota_0、ota_1存放了我们待升级的固件分区(app),大小不能超过1600kB.
如何配置OTA Flash分区?
创建分区表文件partitions.csv
之后
menuconfig 命令中Partition Table
–>Custom partition table CSV
同时选定csv文件
空中升级过程
一句话总结:如图首先0区激活使用,然后先对1区erase,然后将要升级的内容写入1区,然后激活1区使用。
应用程序回滚
目的:确保升级后的程序可以使用。当新的程序出现严重问题
时,回滚到之前正常运行
的版本。
升级后的情况。
参考:
1.OTA升级介绍:www.bilibili.com
2.空中升级 (OTA):www.espressif.com
3.partition-tables:www.espressif.com
服务端(本地调试)
确定服务器地址
menuconfig -> Example Configuration -> firmware upgrade url endpoint
CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL
与下面这段代码有关
esp_http_client_config_t config = {
.url = CONFIG_EXAMPLE_FIRMWARE_UPGRADE_URL,
.cert_pem = (char *)server_cert_pem_start,
.event_handler = _http_event_handler,
.keep_alive_enable = true,
};
确定服务器文件
启动本地服务器
在 PC 机 ota_service_doc
目录下开启命令行窗口,通过 执行如下命令建立本地 HTTP 服务器(服务器建立后,命令行窗口不要关闭)
查询 python 版本,执行如下命令:
Python --version
如果上述指令返回的 Python 版本是 3.X ,通过如下命令建立服务器
python -m http.server 8070
如果上述指令返回的 Python 版本是 2.X ,通过如下命令建立服务器
python -m SimpleHTTPServer 8070
注:服务器建立好后,可通过网址 localhost:8070 在网页端查询本地服务器
服务器后台信息: