在线时间4071 小时
UID3441752
注册时间2017-11-21
NXP金币752113
TA的每日心情 | 开心 2024-3-26 15:16 |
---|
签到天数: 266 天 [LV.8]以坛为家I
管理员
- 积分
- 32066
- 最后登录
- 2024-4-30
|
在 i.MX RT上进行 AWS OTA 更新 1 引言
本应用笔记将介绍在 i.MX RT1xxx 系列平台上利用 AWS 进行远程 OTA 更新的过程。
AWS OTA 更新基于 Secure Bootloader (SBL)和 Secure Firmware(SFW)两个工程实现。SBL 是 OTA 的安全引导加载程序,它可以通过恩智浦 Soc 安全引擎确保设备进行安全的 OTA。SFW 基于 FreeRTOS、恩智浦 SDK 等功能模块设计,与 SBL 协同工作以提供一套完整且安全的 OTA 解决方案。SFW支持基于 SD 卡或 U 盘的本地 OTA 以及基于 AWS 或阿里云的远程 OTA。本应用笔记将介绍基于 AWS 的 OTA 更新过程。
2 AWS OTA 概述
本章主要介绍 AWS OTA 更新的整体流程,如 图 1 所示。当需要更新固件时,首先将新版本的固件上传到 AWS 的 S3 bucket。然后创建 OTA 更新任务。 此任务将通知 RT1170 设备有可用的固件更新。最后,设备下载新的固件,验证固件后更新自身的应用程序代码。届时,设备更新完毕并运行新的应用程序代码,直到有新的更新为止。同时,设备也会向 AWS 上报任务的状态。
3 AWS OTA 的基础配置
本章将简单介绍一下进行 AWS OTA 更新所必须的一些基础配置,主要有如下配置流程:
1. 创建 OTA 更新服务角色,S3 bucket,OTA 用户策略等。
2. 利用 OpenSSL 和 AWS CLI 创建代码签名证书。
3. 创建 AWS IoT thing。
由于具体配置过程篇幅较长,在这里不做赘述。详细配置过程,请参考文档 MCU-OTA SBL and SFW User Guide (document
MCUOTASBLSFWUG)的 7.3.1.1 AWS OTA Prerequisites。
4 AWS OTA 更新
SFW 工程支持 i.MX RT1020, RT1050, RT1060, RT1064 和 RT1170 平台上的 AWS OTA 更新。SFW 与 SBL 协同工作,提供一套完整安全的 OTA 解决方案。SFW 通过以太网连接到 AWS。本章将演示一下如何使用 SBL 和 SFW 在 RT1170-EVK 板上实现AWS OTA 更新。
SBL 和 SFW 工程可以从以下链接下载:
• SBL: https://github.com/NXPmicro/sbl
• SFW: https://github.com/NXPmicro/sfw
4.1 SBL 准备
要实现 AWS OTA,首先要将 SBL 工程下载到目标板上,步骤如下:
1. 进入 sbl/target/evkmimxrt1170 目录,双击 env.bat。
2. 在 env.bat 中,运行 scons --menuconfig 命令,然后会出现 图 2 显示的 SBL 配置界面。
3. 在配置界面中,取消勾选 Enable single image function 和 Enable mcu isp support 两个选项。保存并退出。
4. 然后运行 scons --ide=iar 命令生成 IAR 工程 sbl.eww,该工程位于 sbl/target/evkmimxrt1170/iar 目录下。生成 Keil 或者 gcc 工程,请参照 MCU-OTA SBL and SFW User Guide (文档 MCUOTASBLSFWUG) 中的Chapter 2 Quick start。
5. 编译 sbl.eww 工程并下载到 RT1170-EVK 板卡中。
4.2 配置 SFW
下载完 SBL 工程后,第二步要将 SFW 工程下载到目标板卡。在此之前,首先需要对 SFW 工程进行相关配置以支持 AWS OTA,步骤如下:
1. 生成 aws_clientcredential_keys.h 文件。
a. 进入 sfw/firmware/aws_ota/tool 目录。
b. 使用浏览器打开 CertificateConfigurator.html。
c. 在页面中导入证书和密钥文件(该文件在 MCU-OTA SBL and SFW User Guide (文档 MCUOTASBLSFWUG 中的Chapter 7.3.1.1 AWS OTA Prerequisites 部分里生成)。然后点击 Generate and save aws_clientcredential_keys.h按钮生成并下载 aws_clientcredential_keys.h。
d. 用 Step c 生成的文件替换掉 sfw/firmware/aws_ota/demos/include 目录下的 aws_clientcredential_keys.h
文件。
2. 修改 aws_ota_codesigner_certificate.h 文件。
a. 利用文本编辑器打开 ecdsaigner.crt 文件(该文件在 MCU-OTA SBL and SFW User Guide (文档
MCUOTASBLSFWUG 中的 Chapter 7.3.1.1 AWS OTA Prerequisites 部分里生成)。
b. 打开 sfw/firmware/aws_ota/demos/include/aws_ota_codesigner_certificate.h 文件。
c. 复制 ecdsaigner.crt 文件中的所有内容并粘贴到 signingcredentialSIGNING_CERTIFICATE_PEM 文件的
aws_ota_codesigner_certificate.h。
注
确保在每行开头添加 "并在每行末尾添加 \n",如 图 4 所示。
3. 进入 sfw/target/evkmimxrt1170 目录。双击 env.bat 文件。
4. 在 env.bat 中,运行 scons --menuconfig 命令来配置 evkmimxrt1170 工程。
5. 在配置界面中,选择 MCU SFW core,然后禁用 Enable sfw standalone xip 选项,勾选 enable OTA 选项并选择 AWS
OTA。
6. 然后选择 AWS Config 进入 图 6 所示界面。
7. 需要设置两个 AWS 相关的选项,一是 MQTT DNS name。
a. 打开 AWS IoT 网站。
b. 在左边的导航窗口,选择 Manage → Things。然后选择之前创建的 Thing(创建过程详见 MCU-OTA SBL and
SFW User Guide (文档 MCUOTASBLSFWUG 文档 Chapter 7.3.1.1 AWS OTA Prerequisites)。
c. 选择 Interact。
d. 在 AWS Configuration 界面,选择 Set MQTT broker DNS name 选项,将 图 7 黄色框里的内容输入到下面的界
面中,然后选择 <ok>。
8. 二是设置 IoT Thing name。
在 AWS Config 配置界面,选择 Set IoT Thing name,将 图 7 绿色框里的内容输入到 图 9 的界面中,然后选择<ok>。
9. 在配置界面中,选择 MCU SFW Component -> secure 选项,然后勾选 enable mbedtls 选项并将 mbedtls 配置文件设置
成 aws_mbedtls_config.h。
10. 退出并保存上述的所有设置。
4.3 image 准备
为了演示 AWS OTA,需要准备两个 SFW image,一个用于运行在目标版卡上,另一个上传到 AWS 的 S3 bucket 用于后续的
OTA 更新。根据配置 SFW 配置完 SFW 工程后即可生成 SFW image,步骤如下:
1. 进入 sfw/target/evkmimxrt1170 目录,双击 env.bat。
2. 输入 scons --ide=iar 命令来生成 IAR 工程。
生成 keil 或者 gcc 工程,参见 MCU-OTA SBL and SFW User Guide (手册 MCUOTASBLSFWUG)中 Chapter
2 Quick start 内容。
注
3. 进入 sfw/target/evkmimxrt1170/iar 目录,打开 sfw.eww 工程。
4. 进入 Options 界面,按 图 11 进行选择以输出 bin 文件。
。
。
。
。
未更新完!查看完整版请回复:
|
|