前言
OTA(Over-the-AirTechnology)即空中下载技术,是通过移动通信的空中接口实现对移动终端设备及SIM卡数据进行远程管理的技术。OTA升级是物联网(IOT)产品设计的一个非常重要的部分,能够实现智能设备系统漏洞修复、系统升级,通过固件和软件的升级,提供更好的服务。OTA固件升级功能不仅能够更新固件,而且还能重新配置芯片上硬件资源。同时,设备固件可通过OTA固件升级流程获得更新的补丁和更多安全算法防范病毒攻击。
以 Espressif Systems 的 ESP32 支持蓝牙和Wi-Fi的微控制器以及相关模块、套件和ESP物联网开发框架(ESP-IDF)为例,展示如何打造一个OTA分区,并利用otatool.py脚本在应用仍在运行时执行固件更新。
PART01
如何实现OTA更新?
物联网产品需要在设备的整个生命周期内进行部署、配置和维护。一个重要但容易被忽视的功能是引导程序或固件OTA(FOTA)更新(有时只称为OTA)。这项技术让企业不需要派维护人员到现场或让终端客户主动对设备做更新。相反,所有这些成本都可以通过让设备在后台或在空闲时间内升级固件的方式来消除。
OTA架构可以有许多不同的形式和配置,从定制的解决方案一直到云提供商提供的标准实现方案。
接下来,以乐鑫科技ESP32的微控制器以及相关模块、套件和ESP物联网开发框架(ESP-IDF)为例,展示如何打造一个OTA分区,并利用otatool.py脚本在应用仍在运行时执行固件更新。
PART02
以ESP32模块进行OTA升级测试
有几种不同的ESP32模块和开发板可供用户购买,以 Adafruit 3405 ESP32HuzzahFeather板为例(图2)。这是一块低成本的开发板,包括对ESP32进行编程的所有电路,并通过一个USB连接器为其供电。
图2:3405HuzzahFeather板包含一个ESP32WROOM-32D认证型Wi-Fi/蓝牙模块,带4Mb闪存。该板包括所有必要的硬件,可通过USB编程和与模块通信。
3405的核心是一个 ESP32-WROOM-32D 模块,它配备了4Mb闪存、Wi-Fi、蓝牙和一套完整的外设,几乎适用于任何应用。
另一块可以使用的开发板是Espressif Systems的 ESP32-LYRATD-SYNA 音频板(图3)。该开发板包括 ESP32-WROVER-B 模块。
ESP32-LYRATD-SYNA模块也有4Mb闪存,以及用于音频应用的所有电路。该板包括一个音频编解码器、一个音频放大器以及耳机和扬声器插孔,以全面测试音频应用。
最后一块可用于OTA测试的开发板是Espressif的 ESP32-S2-SAOLA-1RI 开发板(图4)。说到开发板,这款最不昂贵的。该板包含一个ESP32Wrover模块,以及对该芯片进行编程的电路。除了它所包含的引脚可以很容易地放到试验板上进行测试外,没有任何其他的装饰。
图4:基于Wrover模块的ESP32-S2-SAOLA-1RI是一块裸开发板,成本低,但包括足够的电路来对板载模块编程。
以上三块开发板都可选择,因为每个ESP32模块都利用了ESP-IDF。此框架旨在通过包括驱动程序、中间件、RTOS以及对本文而言很重要的引导程序和OTA库,从而为开发者简化软件开发工作。
引导程序允许开发者利用OTA更新,并在主要应用仍在运行时对内存进行分区以更新固件,有助于最大限度地减少停机时间。
PART03
ESP32 OTA开发流程
1、配置ESP32分区表
2、下载支持OTA的固件
3、开发一个工具,充当服务器,推送新的固件
4、将最新的固件下载到ESP32上
5、调换到新应用
以上是简化的方法,开发人员应再次查看图1以了解整个固件更新过程。这个过程可能相当复杂,所以建议利用位于 GitHub 上的现有ESP32OTA实例。如:
1、HTTPSOTA
2、本地OTA
3、简单OTA
4、OTA工具(python脚本示例)
图5显示了部署和更新过程的步骤。开发者需要先执行红色的步骤,将OTA解决方案部署到ESP32模块上,接下来橙色步骤的作用是推进OTA更新。
PART04
为OTA配置ESP32应用程序
ESP32包含一个分区表,描述数据位于微控制器上以及它的位置。例如,一个标准的ESP32分区表看起来像表1。
例如,有一个工厂应用,包含NVS库和物理层(PHY)初始化(init)数据部分。为了使用OTA功能,该表需要更新,以便除了主要(工厂)应用外,还要为OTA更新固件指定存储器位置。对于OTA,通常有两个分区被分配用于更新。一个是正在更新的固件,一个是正在下载的固件。这使工厂应用能够保持不变。表2为更新后的OTA分区表。
如表所示,现在有一个ota_0和一个ota_1应用部分,其大小为1Mb,此外还有一个数据部分(otadata),是为更新过程分配的RAM。这个表可以由开发者修改和更新,以适应应用。
为了运行OTA例子,有一套简单的说明,列在GitHub的如何使用实例部分。该部分描述了如何构建应用并对其进行编程。
还有otatool,可以用来更新固件。这个脚本通常用于读取、写入和擦除OTA分区、切换引导分区、切换到工厂分区
该示例脚本可以通过使用命令在终端运行该示例来执行。
./otatool_example.sh
或者使用Python。
pythonotatool_example.py
PART05
EPS32 OTA开发技巧
PART05
EPS32OTA解决方案可以加速和简化开发者的固件更新方案。为了防止解决方案成为开发负担,有以下几个技巧和诀窍:
1.如果可能的话,利用该公司的云供应商所包含的现有OTA框架。这可以极大地简化开发和集成。
2.使用低成本的开发板来测试OTA功能和引导程序。ESP32有几个选项,可能需要一些实验来确定哪一个是最适合手头的应用。
3.对于定制解决方案,可利用GitHub上的ESP32OTA实例。
4.对于产品作为Wi-Fi路由器或集线器的应用,考虑将固件镜像下载到外部存储器,并从大容量存储设备执行更新。
6.出于安全考虑,最好禁用应用回滚。如果应用可以回滚到以前的版本,潜在的攻击者就有可能推送一个带有已知漏洞的版本,并破坏系统。
遵循这些技巧和诀窍的开发者会发现,当他们试图利用ESP32或任何其他OTA解决方案时,他们可以节省大量的时间并免受煎熬。
ESP32无线微控制器已经广泛用于各种类型的设备,如上所述,它有一个现成的OTA解决方案。通过利用ESP-IDF和相关的模块和平台,开发者可以大大减轻设计时间,并完成OTA解决方案并使之可靠运行。
基于国产芯片解决方案推荐
1、RK3588高性能视觉处理主板
应用场景:广泛应用于 VR、工控,电力,通讯,医疗,媒体,安 防,车载,金融,消费电子,手持设备,游戏机,显示控制,教学仪器、POS机、游戏机,教学实验平台、多媒体终端、PDA、点菜机、广告机等。
价格:1469
2、RK3566 8K高清显示视觉处理开发板
应用场景:广泛应用于 ARMPC、高端平板电脑、边缘计算服务器、虚拟 现实、NVR、8K 电视等方向。
价格:299
3、RV1126高性能人脸识别核心板
应用场景:广泛应用于智能门锁、智能门铃、网络摄像头、行车记录仪、游戏互动、网络直播,会议投屏等行业。
价格:340
应用场景:是收银机、广告机、自助终端等行业的最佳选择。
价格:340
眉山pos机办理热线:18127011016