在 Microchip Curiosity PIC32MZEF 上安装初始版本的固件 - FreeRTOS
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在 Microchip Curiosity PIC32MZEF 上安装初始版本的固件

编写以下步骤时,假定您已经按照在 Microchip Curiosity PIC32MZEF 上下载、构建、刷写并运行 FreeRTOS OTA 演示 中的说明,构建了 aws_demos 项目。

将演示应用程序刻录到主板

  1. 重新构建 aws_demos 项目并确保编译过程没有错误。

  2. 在工具栏上,选择

  3. 编程过程完成后,断开 ICD 4 调试器并重置主板。重新连接终端模拟器,以确保输出与使用 MPLAB X IDE 调试演示代码时是相同的。

    终端应显示类似于以下内容的输出。

    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

以下过程将创建一个统一的十六进制文件或出厂映像,其中包含一个参考引导加载程序和带加密签名的应用程序。引导加载程序在启动时验证应用程序的加密签名,并支持 OTA 更新。

构建和刷写出厂映像

  1. 确保已从 Source Forge 安装了 SRecord 工具。验证包含 srec_catsrec_info 程序的目录位于系统路径中。

  2. 更新出厂映像的 OTA 序列号和应用程序版本。

  3. 构建 aws_demos 项目。

  4. 运行 factory_image_generator.py 脚本以生成出厂映像。

    factory_image_generator.py -b mplab.production.bin -p MCHP-Curiosity-PIC32MZEF –k private_key.pem -x aws_bootloader.X.production.hex

    此命令采用以下参数:

    • mplab.production.bin:应用程序二进制。

    • MCHP-Curiosity-PIC32MZEF:平台名称。

    • private_key.pem:代码签名私有密钥。

    • aws_bootloader.X.production.hex:引导加载程序十六进制文件。

    在构建 aws_demos 项目时,生成应用程序二进制映像和引导加载程序十六进制文件是构建过程的一部分。vendors/microchip/boards/curiosity_pic32mzef/aws_demos/ 目录下的每个项目均包含 dist/pic32mz_ef_curiosity/production/ 目录,其中便包括了这些文件。生成的统一的十六进制文件名为 mplab.production.factory.unified.hex

  5. 使用 MPLab IPE 工具将生成的十六进制文件编程到设备中。

  6. 您可以在上传映像时查看主板的 UART 输出,以检查出厂映像是否正常。如果一切设置正确,您应当看到映像成功启动:

    [prvValidateImage] Validating image at Bank : 0 [prvValidateImage] Valid magic code at: 0xbd000000 [prvValidateImage] Valid image flags: 0xfc at: 0xbd000000 [prvValidateImage] Addresses are valid. [prvValidateImage] Crypto signature is valid. [...] [prvBOOT_ValidateImages] Booting image with sequence number 1 at 0xbd000000
  7. 如果证书的配置不正确,或如果 OTA 映像未正确签署,则在芯片的引导加载程序擦除无效更新之前,可能会看到类似于以下内容的消息。检查代码签名证书是否一致,并仔细查看之前的步骤。

    [prvValidateImage] Validating image at Bank : 0 [prvValidateImage] Valid magic code at: 0xbd000000 [prvValidateImage] Valid image flags: 0xfc at: 0xbd000000 [prvValidateImage] Addresses are valid. [prvValidateImage] Crypto signature is not valid. [prvBOOT_ValidateImages] Validation failed for image at 0xbd000000 [BOOT_FLASH_EraseBank] Bank erased at : 0xbd000000