在微晶片好奇心 PIC32MZEF 上下載、建置、快閃記憶體和執行 FreeRTOS OTA 示範 - 免費 RTOS

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

在微晶片好奇心 PIC32MZEF 上下載、建置、快閃記憶體和執行 FreeRTOS OTA 示範

重要

此參考集成託管在亞馬遜的 FreeRTOS 存儲庫上,該存儲庫已被棄用。建議您在建立新專案時從這裡開始。如果您已經有一個現有的 FreeRTOS 專案以目前已取代的亞馬遜免費伺服器儲存庫為基礎,請參閱亞馬遜自由 Github 存儲庫遷移指南.

注意

在與微晶協議下,我們將從 FreeRTOS 參考整合儲存庫主要分支移除好奇心 PIC32MZEF (DM320104),並且將不再於新版本中攜帶。微晶已發出正式通知,表示不再建議將 PIC32MZEF (DM320104) 用於新設計。PIC32MZEF 專案和原始程式碼仍可透過舊版標籤存取。微晶片建議客戶在新設計上使用好奇心 PIC32MZ-EF-2.0 開發板 (DM320209)。Pic32MZv1 平台仍然可以在 FreeRTOS 參考整合儲存庫的 v202012.00 中找到。不過,《自由服務參考》的 v202107.00 已不再支援該平台。

若要下載免費使用者 OTA 示範程式碼
建置 OTA 更新示範應用程式
  1. 遵循FreeRTOS 入 中的說明,將 aws_demos 專案匯入 MPLAB X IDE,設定您的 AWS IoT 端點、您的 Wi-Fi SSID 及密碼,以及您電路板的私有金鑰和憑證。

  2. 開啟檔vendors/vendor/boards/board/aws_demos/config_files/ota_demo_config.h案,然後輸入您的憑證。

    [] = "your-certificate-key";
  3. 將代碼簽名證書的內容粘貼到此處:

    #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";
  4. 安裝 Python 3 或更新版本。

  5. 透過執行 pip install pyopenssl 來安裝 pyOpenSSL

  6. 複製 demos/ota/bootloader/utility/codesigner_cert_utility/ 路徑中格式為 .pem 的程式碼簽署憑證。將該憑證檔案重新命名為 aws_ota_codesigner_certificate.pem

  7. 開啟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_ENABLEDCONFIG_OTA_HTTP_UPDATE_DEMO_ENABLED

  8. 建置解決方案並確認過程中沒有發生任何錯誤。

  9. 啟動終端機模擬器,並使用以下設定來連線到您的電路板:

    • 傳輸速率:115200

    • 資料位元:8

    • 同位:無

    • 停止位元:1

  10. 從您的主機板拔除除錯器,並在您的主機板上執行專案,確認它可以連線到 Wi-Fi 及 AWS 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

終端機模擬器應會顯示與以下內容相似的文字:

AWS Validate: no valid signature in descr: 0xbd000000 AWS Validate: no valid signature in descr: 0xbd100000 >AWS Launch: No Map performed. Running directly from address: 0x9d000020? AWS 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 可以連線到 AWS IoT,並且訂閱 OTA 更新所需要的 MQTT 主題。Missing job parameter 訊息是在預期中的內容,因為沒有任何擱置中的 OTA 更新任務。