当前位置: 首页 > article >正文

ESP8266 OTA固件启动日志里分区解析【2M flash】

ESP8266 启动日志中分区表的内容及其解释

分区表日志:

I (136) boot: Partition Table:
I (147) boot: ## Label            Usage          Type ST Offset   Length
I (170) boot:  0 nvs              WiFi data        01 02 00009000 00004000
I (193) boot:  1 otadata          OTA data         01 00 0000d000 00002000
I (217) boot:  2 phy_init         RF data          01 01 0000f000 00001000
I (240) boot:  3 ota_0            OTA app          00 10 00010000 000f0000
I (263) boot:  4 ota_1            OTA app          00 11 00110000 000f0000
I (286) boot: End of partition table

分区表字段说明:

Label:分区的名称。

Usage:分区的用途。

Type:分区的类型(十六进制)。

ST:分区的子类型(十六进制)。

Offset:分区在 Flash 中的起始地址(十六进制)。

Length:分区的大小(十六进制)。

分区表内容解析:

1. nvs 分区:

Label: nvs

Usage: WiFi data

Type: 0x01(数据分区)

SubType: 0x02(NVS 数据)

Offset: 0x00009000

Length: 0x00004000(16 KB)

作用:用于存储 WiFi 配置和其他非易失性数据。

2. otadata 分区:


Label: otadata

Usage: OTA data

Type: 0x01(数据分区)

SubType: 0x00(OTA 数据)

Offset: 0x0000d000

Length: 0x00002000(8 KB)

作用:用于存储当前 OTA 分区的信息(例如当前运行的 OTA 分区是 ota_0 还是 ota_1)。

3. phy_init 分区:

Label: phy_init

Usage: RF data

Type: 0x01(数据分区)

SubType: 0x01(RF 数据)

Offset: 0x0000f000

Length: 0x00001000(4 KB)

作用:用于存储 RF 校准数据。

4. ota_0 分区:

Label: ota_0

Usage: OTA app

Type: 0x00(应用程序分区)

SubType: 0x10(OTA 分区 0)

Offset: 0x00010000

Length: 0x000f0000(960 KB)

作用:用于存储 OTA 固件的第一份副本。

5. ota_1 分区:

Label: ota_1

Usage: OTA app

Type: 0x00(应用程序分区)

SubType: 0x11(OTA 分区 1)

Offset: 0x00110000

Length: 0x000f0000(960 KB)

作用:用于存储 OTA 固件的第二份副本。

分区表总结:

nvs:存储 WiFi 配置和其他非易失性数据。

otadata:存储当前 OTA 分区的信息。

phy_init:存储 RF 校准数据。

ota_0 和 ota_1:两个 OTA 分区,用于存储固件。设备可以在两个分区之间切换以实现 OTA 升级。

OTA 升级流程:

设备启动时,检查 otadata 分区,确定当前运行的 OTA 分区(ota_0 或 ota_1)。

如果需要升级,将新固件写入另一个 OTA 分区。

更新 otadata 分区,指向新的 OTA 分区。

重启设备,运行新固件。

注意事项:

1. 分区大小:

确保 OTA 分区的大小足够存储固件。

如果固件过大,可能需要调整分区表。

2. 分区顺序:

分区表中的分区顺序必须与 Flash 的物理布局一致。

3. OTA 数据分区:

otadata 分区必须存在,否则 OTA 功能无法正常工作。

4. Flash 布局:

分区的起始地址和长度不能重叠,否则会导致数据损坏。

通过以上分区表配置,ESP8266 可以支持 OTA 升级功能,并在两个 OTA 分区之间切换以运行新固件


http://www.kler.cn/a/516681.html

相关文章:

  • .NET Framework
  • 【数据结构】树的基本:结点、度、高度与计算
  • Android SystemUI——最近任务应用列表(十七)
  • 2024 自主创业事业小结和2025展望
  • 抛弃node和vscode,如何用记事本开发出一个完整的vue前端项目
  • GS论文阅读--Hard Gaussian Splatting
  • 【Java实现 通过Easy Excel完成对excel文本数据的读写】
  • 递归的本质
  • Rman还原
  • Yii框架中的Cart组件:实现购物车功能
  • GC(垃圾回收)的分类
  • 使用 Elasticsearch 导航检索增强生成图表
  • linux-centosubuntu本地源配置
  • 蓝桥杯练习日常|c/c++竞赛常用库函数
  • 使用Python爬虫获取1688店铺所有商品信息的完整指南
  • C#高级:常用的扩展方法大全
  • ubuntu系统docker环境搭建
  • STM32调试手段:重定向printf串口
  • 重载C++运算符
  • salesforce FIELD_FILTER_VALIDATION_EXCEPTION
  • LVGL+FreeRTOS实战项目:智能健康助手(蓝牙模块篇)
  • 假期day1
  • NPM 与 Node.js 版本兼容问题:npm warn cli npm does not support Node.js
  • 文献阅读 250123-Accelerated dryland expansion under climate change
  • 从 TCP/IP 演进看按序流与性能
  • tortoiseSVN图标缺少绿色钩/tortoiseSVN图标不显示解决方案