【阿福的隨筆】淺談 i.MxRT1021 MCUbootUtility 的使用及操作說明(上)

<1 何謂 MCU boot utility

MCU Boot utility是一種免費的 security tool,可以快速的使用 GUI 介面來設定 Blhost 的批次命令,讓燒錄和設定更加容易。
另一個 command 視窗就是按下 GUI 按鍵,所下的 加上參數的 Blhost command,若工廠要自行做成 batch file 也是可行的。

 

1.1 直接下載

下載的網址如下=>

https://github.com/JayHeng/NXP-MCUBootUtility

 

1.2 目錄介紹

\NXP-MCUBootUtility

\apps -- 放置NXP example image bin/hex file

\bin -- 啟用NXP-MCUBootUtility 的執行檔及設定儲存的 JSON file

\doc -- NXP官方參考文檔

\env -- 準備安裝NXP-MCUBootUtility開發環境以及打包腳本

\gen -- 臨時文件

\bd_file --根據配置動態生成的BD文件

\bee_crypto –BEE 加密過程中生成的文件

\bootable_image --生成的可啟動鏡像文件

\dcd_file --生成的DCD數據文件

\hab_cert --HAB簽名過程中生成的文件

\hab_crypto --HAB加密過程中生成的文件

\json_file --根據配置動態生成的JSON文件

\log_file –操作步驟的記錄日誌

\otfad_crypto –OTFAD加密過程中生成的文件

\sb_image --生成的.sb格式文件

\user_file --軟件運行過程中緩存的臨時文件

\gui -- NXP-MCUBootUtility 圖形介面文件

\img -- NXP-MCUBootUtility使用過程中需加載的圖片

\src -- NXP-MCUBootUtility的所有Python源代碼文件

\tools -- NXP-MCUBootUtility使用過程中需調用的外部程序

\blhost -- 與Flashloader通信的USB/UART命令的工具

\cst --HAB 的配套命令行工具

\elftosb --生成bootable image的命令行工具

\ide_utils --各IDE提供的圖片格式轉換工具

\image_c --BEE智能的配套工具

\imgutil --生成DCD數據的命令行工具

\openssl --生成證書和秘鑰的標準工具

\sdphost -- 與ROM通信的 USB/UART命令的工具

 

1.3  如何執行

 

下載之後解壓縮,執行在 bin\NXP-MCUBootUtility.exe,如圖 1.3.1

 

圖1.3.1

 

1.4  需進入 serial download mode

 

GPIO_EMC_16 為 BOOT_MODE0 ,GPIO_EMC_17 為 BOOT_MODE1

開機時 Bootmode[1:0] 需在 01B,以進入 serial download mode,如圖 1.4.1

 

Bootmode[1:0] = 00B 為 eFuse mode , 若是無 code ,或是無法 boot ,則進入 serial download mode

Bootmode[1:0] = 01B 為 serial download mode

Bootmode[1:0] = 10B 為 Internal boot mode,會參考外部的 bootcfg[9:0] pin

 

圖1.4.1



2 如何將預設的音效移除

2.1 直接改名

首先要了解一開始音效的預設目錄

NXP-MCUBootUtility-master_V3.2.0\sound\contra

 

將檔案砍掉或是重新命名,就可以防止載入音效

 
圖2.1.1

 

2.2 修改預設音效選項

在 bin\nsb_settings.json 的 cfgToolCommon 下的 soundEffectType 內容修改成 "contra" =>"quiet",如圖 2.2.2~2.2.3


圖2.2.2


圖2.2.3

 

2.3 進程式之後再修改預設音效選項

在 Window => Sound Effect => 選擇 Quiet ,之後離開程式,即可儲存設定,如圖 2.3.1


圖2.3.1

 

 

3 如何設定

3.1 設定 MCU & Flash

以 i.MXRT1021 flash 使用 winbond W25Q64JV 為例

MCU Series 選 i.MXRT,如圖 3.1.1

MCU Device 選 i.MXRT1021 ,如圖 3.1.2

Boot Device 選 FLEXSPI NOR

Boot Device Configuration 進入後,

在 Use Typical Device再選 Winbond W25QxxxJV,再按下 OK ,如圖 3.1.3

 

圖3.1.1                     



圖3.1.2
 

 

 
圖3.1.3

Boot_Mode[1:0] 需在 01B = Serial download mode ,可使用UART ( LPUART1_TX GPIO_AD_B0_06 & LPUART1_RX GPIO_AD_B0_07 ) 或 USB ( USB需要出現 USB device VID PID = 0x1FC9, 0x0130 ),設定好可以使用 Connect to ROM ,可以 One Step 就會出現 NOR Flash 的 Page / Sector / Block size ,如圖 3.1.4,若是不易連線則 tool -> Run mode 選擇 Master,再將 One Step 取消勾選,用單步來連接,看在 Device Status 有沒有 NOR Flash 的讀回值


圖3.1.4

3.2 設定 eFuse

需要先將 cfg1 的 BT_FUSE_SEL 設為 1,才會參考 eFuse (BOOT_MODE[1:0] = 00b)

所有的 eFuse 可由 0 燒成 1 ( fuse 已燒斷 ),但無法由 1 燒成 0 ,如圖 3.2.1

In the Boot From Fuse mode BOOT_MODE[1:0] = 00, the BT_FUSE_SEL fuse

indicates whether the bit configuration eFuses are programmed.

 
圖3.2.1

eFuse Cfg0 的 Boot_CFG[9 :0] 是對應 Internal Boot mode 的 外部Boot_CFG pin

Boot_CFG [9:8]   => Hold_time

Boot_CFG [7:4]   => Boot_device_selection

Boot_CFG [3:1]   => Flash Type

Boot_CFG [0]       => EncrytedXIP

設定在  eFuse Operation Utility 的 0x450 的位址,預設都為0,如圖 3.2.2

要燒錄 eFuse 前要記得 => 只能燒斷一次

  1. 在 tools => Run mode 選擇 Master
    2. 可 save 將設定存成 .sb 至電腦 或是 load 取回之前 .sb 的設定 也可以 Scan 取回 MCU 內部目前設定 ( 此步驟可略過 )
  2. 修改值之後,或是不修改 按 burn 進行燒錄

 
圖3.2.2

 

 

 

 

4 如何讀取或燒錄

4.1 讀取 Flash (非加密)

若要將 讀取內容存成檔案 需要先將 Tools =>Run mode 改成 Master

再進入 Boot Device memory 的頁面,將 Save Image/Date file 的選項打勾即可,若要修改儲存目錄,則可按旁邊的 Browse,
readbackBootDeviceMemory.dat檔名需等儲存之後再自行修改成 bin 的副檔名,如圖 4.1.1,如果是只查看不記錄,
則只需修改 Start address 和讀取長度,如圖 4.1.2,設定好之後再按下 Read 按鍵,就可以讀回 Flash 內容在檔案或是螢幕上



圖4.1.1


圖4.1.2

4.2 燒錄 Flash (非加密)

若要燒錄 Flash ,需要先將 Tools =>Run mode 改成 Master,並且需要先要知道,之後要 boot 是 internal boot 還是 eFuse boot ,
若是 eFuse boot ,那需先做 eFuse burn 把 BT_FUSE_SEL 燒為 1,不然燒錄完成之後,還是不能跑 Flash 的code 的。( 請參考 設定 eFuse 章節 )

Step1 : 將要燒錄的 bin file,利用左上的 Browse 加入

Step2 : 按下 Write (Auto Erase) 即可完成燒錄,如圖 4.2.1

Step3 : 拔插 USB 或是 按下 Execute From Start ,來執行 Flash code ,若是 start address 不是 0 ,可修改 Start/Offset 再利用 Execute From Start 可跳過如 bootloader ,來單獨測試一下 AP  的功能是否正常。

也可以各別燒錄 bootloader.bin 和  app.bin 但位址及範圍上是不能重複的。



圖4.2.1

4.3 燒錄 Flash 之後,無法進 debug

遇到這種情形時,先把 Boot_Mode 回來 Serial download 試試,若還是不行,進 MCUBootUtility 的 Boot Device Memory ,設定 Flash 範圍後,按下 Erase,再試試 再換回之前的 Boot_Mode看是不是就 OK 了。

 

有關 Secure 的設定,再另外來討論。

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

★文明上網,請理性發言。內容一周內被舉報5次,發文人進小黑屋喔~

評論