这是描述信息

分布式光伏无线传输模块物esp32 8266联网无线通信模块固件OTA升级

分布式光伏无线传输模块物esp32 8266联网无线通信模块固件OTA升级

分布式光伏无线传输模块物esp32 8266联网无线通信模块固件OTA升级

分布式光伏无线传输模块物esp32 8266联网无线通信模块固件OTA升级

分布式光伏无线传输模块物esp32

分布式光伏无线传输模块物esp32 8266联网无线通信模块固件OTA升级,物联网设备固件的更新往往是通过 OTA (Over-the-Air) 升级实现的。通过 OTA 升级可以安会可靠地修复固件漏洞、推送新功能、优化产品体验,这些都将有助于更好地服务终端客户目前,OTA 升级已经成为产品量产的标配功能。


将不同功能的固件标记为不同的版本是实现固件管理的可靠、有效手段。一个规范的版本标记方法有助于版本管理,便于排查问题,方便后期追溯,可以更加高效地通过 OTA 升级完成固件更新。


分布式光伏无线传输模块物esp32 8266联网无线通信模块ESP-IDF 提供了OTA 升级示例,以及多种用于版本管理的固件标记方法,本文将讲述这些内容,并借助 ESP RainMaker 实现智能灯的远程OTA 升级。


固件更新

分布式光伏无线传输模块物esp32 8266联网无线通信模块OTA 升级机制允许设备在正常运行时接收新固件,并将新固件写入当前未运行的应用程序分区,在校验固件有效后,切换至新固件运行。


OTA 升级的基本步骤如下:

(1)云服务器向设备推送 OTA 升级信息。
(2)设备对云服务器身份进行验证,从受信任的云服务器下载固件。
(3)根据下载固件中的版本信息,设备决定是否进行升级。如果决定升级,则请求固件,并将固件写入 Flash 后对其进行校验,校验成功后切换至新的固件运行。
从基本步骤可以看出,分布式光伏无线传输模块物esp32 8266联网无线通信模块OTA 升级的过程就是固件获取、写入、校验、切换的过程。在进一步了解 OTA 升级的原理之前,本节先对分区表、固件启动流程进行介绍。


分区表概述

ESP-IDF 的分区表是指在用户层面将 Flash 不同位置、范围划分为特定功能的描述文件。本文以分布式光伏无线传输模块物esp32 8266联网无线通信模块ESP-IDF的advanced_https_ota(esp-idf/examples/system/ota/ advancedhttps_ota)为例(简称 OTA 升级示例)。在该示例中默认使用了 ESP-IDF 中 partitiontable组件下的partitions two ota.csv(esp-idf/components/partition_tablepartitions_two ota.csv)文件,以下是 partitions_two_ota.csv分区表的概要。

1.1# Name,Type,SubType, Offset, Size, Flags
2.# Note: if you have increased the bootloader size, make sure to update the offsetsto avoid overlap
3.nvs,data, nvs,,0x4000,
4.otadata,4 .data, ota,,0x2000,
5.phy_init,data,phy,,0x1000,
6.factory,app,factoryr,,1M,
7.ota 0,app,ota_0,,1M,
8.ota_1,app,ota_1,,1M


从上面的概要可以看到,分区表每个条目都是由 Name、Type、SubType、offset、size.
Flags 构成的。
(1) Name 字段用于标识名称,不应超过 16 B。
(2) Type 字段既可以指定为 app 或者 data,也可以直接使用 0~254 (或对应的十六进制数 0x00~0xFE),主要用于标记存储的内容是应用固件还是数据。
(3)SubType 字段的长度为 8 bit,具体标记内容与 Type 字段有关。
1)当Type定义为app时,SubType字段可以指定为factory(0x00)、ota 0(0x10)、...、ota 15(0x1F)或test(0x20)。
2)当 Type 定义为 data 时,SubType 字段可以指定为 ota(0x00)、phy(0x01)、nvs(0x02)、nvs _keys(0x04)或者他组件特定的子类型
(4) offset 与 size 字段用于划分一个特定的区域。
(5) Elags 字段用于标记是否加密。


该示例分区表中的 offset 未填写任何数值,但依旧是有效的分区表,这是因为分区表首个条目的位置是确定的,所以可以通过前一个条目的 size 字段计算出后续条目的地址。如果分区表划分的每个条目地址不是连续的,此时就需要通过 offset 来标记每个条目的起始地址。可以看出,分布式光伏无线传输模块物esp32 8266联网无线通信模块分区表首个条目的起始地址为 0x9000,即 partitions two ota.csv中name为nvs条目的 Offset 字段是0x9000,该条目的大小为0x4000根据之前介绍的计算规则,下一个条目的 Offset 为0x9000+0x4000=xd000。依次计算,后一个ota_1目的offset为0x210000。


Partitions_two_ota.csv分区表划分了6个区域:3 个数据分区nvs、otadata、phy_init分别用于存储NVS 数据、OTA 升级数据、PHY 初始化数据:3个应用分区分别存储了3个不部的应用固件。分布式光伏无线传输模块物esp32 8266联网无线通信模块从OTA 升级的基本步骤可知,要进行 OTA升级,至少需要包括两个 OTA 升级应用分区[Type (app),SubType (ota_0/ota_1)]和一个OTA 升级数据分区[Type(data),SubType (ota)],同时也可包含一个可选的应用分区——出厂应用分区 [Type(app),SubType (factory)]。


(1)OTA 升级数据分区用于存储当前所选的 OTA 升级应用分区的信息,第一次 OTA 升级后OTA 升级数据分区将被更新,指定下一次启动哪个 OTA 升级应用分区。OTA 升级数据分区的大小需要设定为 0x2000,用于防止写入时电源故障引发问题。两个扇区单独擦除、写入匹配数据,若存在不一致,则用计数器字段将判定哪个扇区为新数据。
(2)应用分区用于存储固件,出厂应用分区是默认的应用分区,如果不存在 OTA 升级数据分区或 OTA 升级数据分区无效,则优先使用出厂应用分区的固件(如果存在),其次使用 OTA升级数据分区的固件。分布式光伏无线传输模块物esp32 8266联网无线通信模块OTA 升级永远都不会更新出厂应用分区中的内容。

地址:深圳市宝安区西乡街道麻布社区宝安互联网产业基地A区6栋7栋7706

邮箱:Sales@ferry-semi.com

版权所有©2020  深圳市飞睿科技有限公司  粤ICP备2020098907号    飞睿科技微波雷达wifi模块网站地图