【NXP i.MX RT 1170 技術手冊】- 軟體進入 Serial Downloader Mode Hands on

 

一.介紹

本文描述如何在現有 RT1170 SDK 的範例,透過移植 Boot ROM API 完成在不調整硬體架構下進入 SDP Mode 達到更新 Firmware 的目的。

 

二.環境

1.MCUXpresso

用途說明 : 開發環境,本文使用版本 11.3.0_5222

 

2.i.MX RT SDK

用途說明 : 驅動及範例,本文使用版本SDK_2.9.2_MIMXRT1170-EVK

 

3. NXP 驅動 fsl_flexspifsl_romapifsl_rtwdogfsl_wdog

用途說明 : 提供 ROM API 所需檔案。

 

4.MCU BootUtility 3.3

用途說明 : 提供更新 Firmware 所需功能,目前提供 UART1 USB 更新 Firmware功能。

 

5.RT1170 開發版

用途說明 : 功能驗證。

 

6.Micro USB Cable 2 pcs

用途說明 : 提供程式燒錄與Debug


 

三.創建 Firmware Image

本章節說明如何利用 MCU Boot Utility 創建 Image File,方便後續使用 boot ROM API 進入 SDP Mode 下載更新,把預設範例的 blinky 綠燈改為紅燈。

 

1.點選 Import SDK example(s)…,在 SDK Import Wizard點選 MIMXRT1170 à MIMXRT1170xxxxx 後,在點選右邊開發版圖示,再點選 Next

 

圖 3.1. 

 

2.Examples 輸入 blinky,以此範例作為更新 Firmware 的範本,點選 iled_blinky_cm7 後再點選 Finish


圖 3.2.
 

3.新增紅燈的 pin config,在 Project Explorer 點選 evkmimxrt1170_iled_blinky_cm7 後點選 MCUXpresso Config Tools>> à Open Pins,。


圖 3.3.
  

4.filter 處輸入 L14 後點選 L14 後在 Pin 處勾選 GPIO9_IO25


圖 3.4.
 

5.Routing Details for BOARD_InitPins L14 欄的 Direction 項選擇 Output,此處可確認 L14 GPIO9IO25


圖 3.5.
 

6.點選 Update Code 更新程式碼,之後出現的 Update Files 視窗會顯示更新的檔案,以此例來說調整的為 pin_mux.c,點擊 change 會顯示修改的部分,確認無誤後點選 OK


圖 3.6.
 



圖 3.7. 


 

7.點選 board à board.h 修改第 72 行修改為 25U

#define BOARD_USER_LED_GPIO_PIN (25U)

 

圖 3.8. 

8.點選 Build (槌子圖案)產生燒錄檔。

 

圖 3.9. 


 

9.建立完成後在 console 顯示 0 error 0 warning

 

圖 3.10. 

10. Build 完成後,在 debug 資料夾中對 evkmimxrt1170_iled_blinky_cm7.axf 點擊右鍵 à Binary Utilities à Create Binary


圖 3.11.
 

11.確認 Work Space evkmimxrt1170_iled_blinky_cm7 à Debug 資料夾下有產生燒錄用 Bin 檔,此檔案在下一章節將用於更新 Firmware

 

圖 3.12. 

四.移植 Boot ROM API

本章節在於說明透過 Boot ROM API 達成在 application 中不修改硬體架構下進入 SDP Mode,進行後續 Firmware Update

1.參考第三章步驟 1 及步驟 2 建立新的 blinky 範例,因之前已經載入一次 blinky 範例導致名稱重複,故在 project name suffix 中輸入任意名稱即可。


圖 4.1.          
 


 

2.載入 SDK Example ROMAPI

 

 

3.ROM API 資料夾中下列檔案複製到 blinky 專案的 Drivers 資料夾。

l   fsl_romapi.c

l   fsl_romapi.h 


圖 4.2.         
 


4.開啟 led_blinky.c 開頭加入以下片段

#include "fsl_romapi.h"

 

圖 4.3.           

5.main 中新增 ROM_API_Init

    ROM_API_Init();

 

圖 4.4.           

6. while(1){…} 修改為以下程式,此將程式改為 LED 閃爍二次後,呼叫 ROM_RunBootloader 進入 SDP Mode

    for(int i = 0 ; i < 5 ;i++)

    {

 

        /* Delay 1000 ms */

        SysTick_DelayTicks(200U);

        if (g_pinSet)

        {

            GPIO_PinWrite(GPIO9, 3U, 0U);

            g_pinSet = false;

        }

        else

        {

            GPIO_PinWrite(GPIO9, 3U, 1U);

            g_pinSet = true;

        }

    }

    uint32_t arg = 0xeb100000;

    ROM_RunBootloader(&arg);

 

圖 4.5.           

7.點選 Build (槌子圖案),產生燒錄檔。

 

圖 4.6.          

8.使用 Micro USB Cable 連接 RT1170 J11 J20 到電腦。

 

圖 4.7.           

9.在專案點擊右鍵 à Debug As à MCUXpresso IDE LinkServer… 開始燒錄。


圖 4.8.         
 

 

10.燒錄完成後點選 Terminate

 

圖 4.9.           

五.更新 Firmware

本章節介紹如何使用上一章的範例在不修改硬體架構下進入 SDP Mode 並透過MCU Boot Utility 更新 Firmware

1. NXP-MCUBootUtility-3.3.0 資料夾中點選 bin à NXP-MCUBootUtility.exe

 
圖 5.1. 

 

圖 5.2. 

 

2.將板子上電後會看到板子綠燈閃爍二次後停止,此時回到 MCU Boot Utility 畫面看到 USB-HID 更新出 Vendor ID Product ID 的參數,點選 Connect to ROM

 

圖 5.3. 

3.此時看到藍色 ICON 並且 Vendor ID Product ID 更新。

 

圖 5.4. 

4.切換到 Boot Device Memory 分頁點選 Browse


圖 5.5.
 

5.選擇第三章創建的 bin file 進行更新

 

圖 5.6. 

6.點擊 Write(Auto Erase)

 

圖 5.7. 

7.當下面進度條跑完時,點選 Reset Device 後即可看到紅燈不斷閃爍,此時韌體已更新完畢。

 

圖 5.8. 

 六.參考文件

l   i.MX RT1170 Processor Reference Manual _ Document Number: IMXRT1170RM Rev. 1, 05/2021

★博文內容均由個人提供,與平台無關,如有違法或侵權,請與網站管理員聯繫。

★博文作者未開放評論功能