在 Microchip Curiosity PIC32MZEF 上下载、构建、刷写并运行 FreeRTOS OTA 演示 - FreeRTOS
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

在 Microchip Curiosity PIC32MZEF 上下载、构建、刷写并运行 FreeRTOS OTA 演示

注意

根据与 Microchip 的协议,我们将从 FreeRTOS 参考集成存储库主分支中删除好奇心 PIC32MZEF (DM320104),并将不再在新版本中携带它。Microchip 已经发布了官方通知不再推荐用于新设计的 PIC32MZEF (DM320104)。PIC32MZEF 项目和源代码仍然可以通过以前的版本标签访问。Microchip 建议客户使用好奇心PIC32MZ-EF-2.0 开发板 (DM320209)对于新设计。pic32mzv1 平台仍然可以在v202012.00的 FreeRTOS 参考集成存储库。但是,不再支持该平台v202107.00的 FreeRTOS 参考资料。

下载 FreeRTOS OTA 演示代码

  1. 浏览至 Amazon IoT 控制台,从导航窗格中选择 Software (软件)

  2. UNDERFreeRTOS 设备软件,选择配置下载.

  3. 从软件配置列表中,选择连接到Amazon IoT-Microchip. 选择配置名称,而不是 Download (下载) 链接。

  4. Libraries (库) 下,选择 Add another library (添加另一个库),然后选择 OTA Updates (OTA 更新)

  5. Demo projects (演示项目) 下,选择 OTA Update (OTA 更新)

  6. UNDER需要姓名称中,为自定义 FreeRTOS 软件配置输入名称。

  7. 选择 Create and download (创建并下载)

构建 OTA 更新演示应用程序

  1. 将刚下载的 .zip 文件解压缩。

  2. 按照 入门中的说明进行操作,将 aws_demos 项目导入 MPLAB X IDE,为主板配置 Amazon IoT 终端节点、Wi-Fi SSID 和密码,以及私有密钥和证书。

  3. 打开vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h文件,然后输入您的证书。

    [] = "your-certificate-key";
  4. 将代码签名证书的内容粘贴到此处:

    #define otapalconfigCODE_SIGNING_CERTIFICATE [] = "your-certificate-key";

    遵循与相同的格式aws_clientcredential_keys.h— 每行必须以新行符 ('\ n') 结束,并用引号括起来。

    例如,证书看起来应当如下所示:

    "-----BEGIN CERTIFICATE-----\n" "MIIBXTCCAQOgAwIBAgIJAM4DeybZcTwKMAoGCCqGSM49BAMCMCExHzAdBgNVBAMM\n" "FnRlc3Rf62lnbmVyQGFtYXpvbi5jb20wHhcNMTcxMTAzMTkxODM1WhcNMTgxMTAz\n" "MTkxODM2WjAhMR8wHQYDVQBBZZZ0ZXN0X3NpZ25lckBhbWF6b24uY29tMFkwEwYH\n" "KoZIzj0CAQYIKoZIzj0DAQcDQgAERavZfvwL1X+E4dIF7dbkVMUn4IrJ1CAsFkc8\n" "gZxPzn683H40XMKltDZPEwr9ng78w9+QYQg7ygnr2stz8yhh06MkMCIwCwYDVR0P\n" "BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMAoGCCqGSM49BAMCA0gAMEUCIF0R\n" "r5cb7rEUNtWOvGd05MacrgOABfSoVYvBOK9fP63WAqt5h3BaS123coKSGg84twlq\n" "TkO/pV/xEmyZmZdV+HxV/OM=\n" "-----END CERTIFICATE-----\n";
  5. 安装 Python 3 或更高版本。

  6. 运行 pip install pyopenssl 来安装 pyOpenSSL

  7. 复制路径 demos/ota/bootloader/utility/codesigner_cert_utility/ 下 .pem 格式的代码签名证书。重命名证书文件 aws_ota_codesigner_certificate.pem

  8. 打开freertos/vendors/vendor/boards/board/aws_demos/config_files/aws_demo_config.h,评论掉#define CONFIG_CORE_MQTT_MUTUAL_AUTH_DEMO_ENABLED定义,并定义CONFIG_OTA_MQTT_UPDATE_DEMO_ENABLED要么CONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED.

  9. 构建解决方案,并确保其构建没有错误。

  10. 启动终端模拟器,并使用以下设置连接到主板:

    • 波特率:115200

    • 数据位:8

    • 奇偶校验:无

    • 停止位:1

  11. 从主板上拔掉调试器,在主板上运行项目,确认它可以连接到 Wi-Fi 和 Amazon IoT MQTT 消息代理。

运行项目时,MPLAB X IDE 应当打开输出窗口。确保选择了 ICD4 选项卡。您应当看到如下输出。

Bootloader version 00.09.00 [prvBOOT_Init] Watchdog timer initialized. [prvBOOT_Init] Crypto initialized. [prvValidateImage] Validating image at Bank : 0 [prvValidateImage] No application image or magic code present at: 0xbd000000 [prvBOOT_ValidateImages] Validation failed for image at 0xbd000000 [prvValidateImage] Validating image at Bank : 1 [prvValidateImage] No application image or magic code present at: 0xbd100000 [prvBOOT_ValidateImages] Validation failed for image at 0xbd100000 [prvBOOT_ValidateImages] Booting default image. >0 36246 [IP-task] vDHCPProcess: offer ac140a0eip 1 36297 [IP-task] vDHCPProcess: offer ac140a0eip 2 36297 [IP-task] IP Address: 172.20.10.14 3 36297 [IP-task] Subnet Mask: 255.255.255.240 4 36297 [IP-task] Gateway Address: 172.20.10.1 5 36297 [IP-task] DNS Server Address: 172.20.10.1 6 36299 [OTA] OTA demo version 0.9.2 7 36299 [OTA] Creating MQTT Client... 8 36299 [OTA] Connecting to broker... 9 38673 [OTA] Connected to broker. 10 38793 [OTA Task] [prvSubscribeToJobNotificationTopics] OK: $aws/things/devthingota/jobs/$next/get/accepted 11 38863 [OTA Task] [prvSubscribeToJobNotificationTopics] OK: $aws/things/devthingota/jobs/notify-next 12 38863 [OTA Task] [OTA_CheckForUpdate] Request #0 13 38964 [OTA] [OTA_AgentInit] Ready. 14 38973 [OTA Task] [prvParseJSONbyModel] Extracted parameter [ clientToken: 0:devthingota ] 15 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: execution 16 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: jobId 17 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: jobDocument 18 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: streamname 19 38973 [OTA Task] [prvParseJSONbyModel] parameter not present: files 20 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: filepath 21 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: filesize 22 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: fileid 23 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: certfile 24 38975 [OTA Task] [prvParseJSONbyModel] parameter not present: sig-sha256-ecdsa 25 38975 [OTA Task] [prvParseJobDoc] Ignoring job without ID. 26 38975 [OTA Task] [prvOTA_Close] Context->0x8003b620 27 38975 [OTA Task] [prvPAL_Abort] Abort - OK 28 39964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 29 40964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 30 41964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 31 42964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 32 43964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 33 44964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 34 45964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 35 46964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0 36 47964 [OTA] State: Ready Received: 1 Queued: 1 Processed: 1 Dropped: 0

终端模拟器应当显示类似以下内容的文本:

Amazon Validate: no valid signature in descr: 0xbd000000 Amazon Validate: no valid signature in descr: 0xbd100000 >Amazon Launch: No Map performed. Running directly from address: 0x9d000020? Amazon Launch: wait for app at: 0x9d000020 WILC1000: Initializing... 0 0 >[None] Seed for randomizer: 1172751941 1 0 [None] Random numbers: 00004272 00003B34 00000602 00002DE3 Chip ID 1503a0 [spi_cmd_rsp][356][nmi spi]: Failed cmd response read, bus error... [spi_read_reg][1086][nmi spi]: Failed cmd response, read reg (0000108c)... [spi_read_reg][1116]Reset and retry 10 108c Firmware ver. : 4.2.1 Min driver ver : 4.2.1 Curr driver ver: 4.2.1 WILC1000: Initialization successful! Start Wi-Fi Connection... Wi-Fi Connected 2 7219 [IP-task] vDHCPProcess: offer c0a804beip 3 7230 [IP-task] vDHCPProcess: offer c0a804beip 4 7230 [IP-task] IP Address: 192.168.4.190 5 7230 [IP-task] Subnet Mask: 255.255.240.0 6 7230 [IP-task] Gateway Address: 192.168.0.1 7 7230 [IP-task] DNS Server Address: 208.67.222.222 8 7232 [OTA] OTA demo version 0.9.0 9 7232 [OTA] Creating MQTT Client... 10 7232 [OTA] Connecting to broker... 11 7232 [OTA] Sending command to MQTT task. 12 7232 [MQTT] Received message 10000 from queue. 13 8501 [IP-task] Socket sending wakeup to MQTT task. 14 10207 [MQTT] Received message 0 from queue. 15 10256 [IP-task] Socket sending wakeup to MQTT task. 16 10256 [MQTT] Received message 0 from queue. 17 10256 [MQTT] MQTT Connect was accepted. Connection established. 18 10256 [MQTT] Notifying task. 19 10257 [OTA] Command sent to MQTT task passed. 20 10257 [OTA] Connected to broker. 21 10258 [OTA Task] Sending command to MQTT task. 22 10258 [MQTT] Received message 20000 from queue. 23 10306 [IP-task] Socket sending wakeup to MQTT task. 24 10306 [MQTT] Received message 0 from queue. 25 10306 [MQTT] MQTT Subscribe was accepted. Subscribed. 26 10306 [MQTT] Notifying task. 27 10307 [OTA Task] Command sent to MQTT task passed. 28 10307 [OTA Task] [OTA] Subscribed to topic: $aws/things/Microchip/jobs/$next/get/accepted 29 10307 [OTA Task] Sending command to MQTT task. 30 10307 [MQTT] Received message 30000 from queue. 31 10336 [IP-task] Socket sending wakeup to MQTT task. 32 10336 [MQTT] Received message 0 from queue. 33 10336 [MQTT] MQTT Subscribe was accepted. Subscribed. 34 10336 [MQTT] Notifying task. 35 10336 [OTA Task] Command sent to MQTT task passed. 36 10336 [OTA Task] [OTA] Subscribed to topic: $aws/things/Microchip/jobs/notify-next 37 10336 [OTA Task] [OTA] Check For Update #0 38 10336 [OTA Task] Sending command to MQTT task. 39 10336 [MQTT] Received message 40000 from queue. 40 10366 [IP-task] Socket sending wakeup to MQTT task. 41 10366 [MQTT] Received message 0 from queue. 42 10366 [MQTT] MQTT Publish was successful. 43 10366 [MQTT] Notifying task. 44 10366 [OTA Task] Command sent to MQTT task passed. 45 10376 [IP-task] Socket sending wakeup to MQTT task. 46 10376 [MQTT] Received message 0 from queue. 47 10376 [OTA Task] [OTA] Set job doc parameter [ clientToken: 0:Microchip ] 48 10376 [OTA Task] [OTA] Missing job parameter: execution 49 10376 [OTA Task] [OTA] Missing job parameter: jobId 50 10376 [OTA Task] [OTA] Missing job parameter: jobDocument 51 10378 [OTA Task] [OTA] Missing job parameter: ts_ota 52 10378 [OTA Task] [OTA] Missing job parameter: files 53 10378 [OTA Task] [OTA] Missing job parameter: streamname 54 10378 [OTA Task] [OTA] Missing job parameter: certfile 55 10378 [OTA Task] [OTA] Missing job parameter: filepath 56 10378 [OTA Task] [OTA] Missing job parameter: filesize 57 10378 [OTA Task] [OTA] Missing job parameter: sig-sha256-ecdsa 58 10378 [OTA Task] [OTA] Missing job parameter: fileid 59 10378 [OTA Task] [OTA] Missing job parameter: attr 60 10378 [OTA Task] [OTA] Returned buffer to MQTT Client. 61 11367 [OTA] [OTA] Queued: 1 Processed: 1 Dropped: 0 62 12367 [OTA] [OTA] Queued: 1 Processed: 1 Dropped: 0 63 13367 [OTA] [OTA] Queued: 1 Processed: 1 Dropped: 0 64 14367 [OTA] [OTA] Queued: 1 Processed: 1 Dropped: 0 65 15367 [OTA] [OTA] Queued: 1 Processed: 1 Dropped: 0 66 16367 [OTA] [OTA] Queued: 1 Processed: 1 Dropped: 0

此输出表明 Microchip Curiosity PIC32MZEF 能够连接到 Amazon IoT,并订阅 OTA 更新所需的 MQTT 主题。出现 Missing job parameter 消息在预料之中,因为没有待处理的 OTA 更新作业。