<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 如何將預設的音效移除
首先要了解一開始音效的預設目錄
NXP-MCUBootUtility-master_V3.2.0\sound\contra
將檔案砍掉或是重新命名,就可以防止載入音效
在 bin\nsb_settings.json 的 cfgToolCommon 下的 soundEffectType 內容修改成 "contra" =>"quiet",如圖 2.2.2~2.2.3
3 如何設定
以 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.2
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
需要先將 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.
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 前要記得 => 只能燒斷一次
- 在 tools => Run mode 選擇 Master
2. 可 save 將設定存成 .sb 至電腦 或是 load 取回之前 .sb 的設定 也可以 Scan 取回 MCU 內部目前設定 ( 此步驟可略過 ) - 修改值之後,或是不修改 按 burn 進行燒錄
4 如何讀取或燒錄
若要將 讀取內容存成檔案 需要先將 Tools =>Run mode 改成 Master
readbackBootDeviceMemory.dat檔名需等儲存之後再自行修改成 bin 的副檔名,如圖 4.1.1,如果是只查看不記錄,
則只需修改 Start address 和讀取長度,如圖 4.1.2,設定好之後再按下 Read 按鍵,就可以讀回 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 的功能是否正常。
遇到這種情形時,先把 Boot_Mode 回來 Serial download 試試,若還是不行,進 MCUBootUtility 的 Boot Device Memory ,設定 Flash 範圍後,按下 Erase,再試試 再換回之前的 Boot_Mode看是不是就 OK 了。
有關 Secure 的設定,再另外來討論。
評論