使用勁達模MDBT50Q-DB-40 藍芽低功耗模組模塊開發板,結合Nordic NCS SDK V2.9.1開發環境進行MCUboot DFU(裝置韌體更新) – 使用說明

MCUboot DFU update

大綱

1. 硬體架設
2. 軟體資源下載&載入
3. 編譯&燒錄程序
   3a. 開啟 VS Code (Visual Studio Code)
   3b. DFU 環境建立: DFU over UART(經由UART進行DFU) / DFU over USB(經由USB進行DFU)
   3c. 開始編譯您的專案內容
   3d. 將專案燒錄進MDBT50Q-DB-40開發板內
4. 用MDBT50Q開發板完成DFU over UART / DFU over USB
5. 透過 AuTerm (軟體) 進行DFU over USB
6. 在執行DFU時帶入自訂義金鑰(Custom Key)

1. 硬體架設
- 準備一片勁達Raytac 的 MDBT50Q-DB-40開發板(產品連結)
- 確定板端有透過USB跟與電腦連結(如下圖)
圖片1
 
2. 軟體資源下載&載入
請下載以下軟體並載入
- nRF Connect for Desktop下載(請點我)
- nRF Command Line Tools下載(請點我)
- Visual Studio Code下載(請點我)

下載 nRF Connect for Desktop ➔ 下載Programmer 和 Toolchain Manager.
2

開啟 Open Toolchain Manager 並下載 SDK V2.9.1。
3

下載 Visual Studio Code。
4
 
3. 編譯&燒錄程序

3a. 開啟 VS Code (Visual Studio Code) [如下圖]
5

備註:
如果您第一次使用VS Code,當載入全部軟體之後,你會看到下圖。
點擊 Open VS Code 即可。
6

建立新專案
我們將建立一個新專案 - peripheral_uart,請根據以下步驟。

Create a new application ➔ Copy a sample ➔ NCS V2.9.1
7

9

8

將專案命名為 peripheral_uart
鍵入 peripheral_uart ,相應的範例程式會出現在下面的選擇項目中。
圖片10

備註:我們將專案取名是為了方便辨別我們為此設立的專案,之後該專案將在您指定的目錄中建立名為peripheral_uart_mcuboot的子目錄。


3b. DFU 環境建立: DFU over UART(經由UART進行DFU) / DFU over USB(經由USB進行DFU)
請跟循下列步驟建立
圖片11

在剛剛創立的專案名稱上 (peripheral_uart_mcuboot)點擊滑鼠右鍵,會跳出一個可供選擇的目錄;
選擇顯示全部 "Show in Explorer"。
圖片12

如下圖,選擇 New File 並創立 sysbuild.conf 檔案。
圖片13

圖片13-1

創立sysbuild.conf 後,點擊滑鼠左鍵,會出現一個空格可填入內容。
請鍵入檔案名稱及寫入參數,如下:
SB_CONFIG_BOOTLOADER_MCUBOOT=y
圖片15

設定參數及說明
sysbuild.conf 底下建立一個新的mcuboot.conf 檔案。
要定義的參數取決於要使用DFU over UART(經由UART進行DFU)還是DFU over USB(經由USB進行DFU)。

備註:
如確定使用DFU over UART,此後的參數及環境設定都須使用 UART 相關的參數及設定;
如確定使用DFU over USB,此後的參數及環境設定都須使用 USB 相關的參數及設定。
圖片16

使用DFU over UART的參數設定
# Enable logging for MCUboot
CONFIG_LOG=y
CONFIG_MCUBOOT_LOG_LEVEL_WRN=y
# Enable Serial Recovery over UART
CONFIG_MCUBOOT_SERIAL=y
# Disable UART, since Serial Recovery uses it
CONFIG_UART_CONSOLE=n
# Configure the bootloader to use two slots
CONFIG_SINGLE_APPLICATION_SLOT=n
# Turn on a LED so we can see when Serial Recovery mode is active
CONFIG_MCUBOOT_INDICATION_LED=y
圖片17

使用DFU over USB的參數設定
# Enable logging for MCUboot
CONFIG_LOG=y
CONFIG_MCUBOOT_LOG_LEVEL_WRN=y
# Enable Serial Recovery over UART
CONFIG_MCUBOOT_SERIAL=y
# Disable UART, since Serial Recovery uses it
CONFIG_UART_CONSOLE=n
# Configure bootloader to use two slots
CONFIG_SINGLE_APPLICATION_SLOT=n
# Turn on a LED so we can see when Serial Recovery mode is active
CONFIG_MCUBOOT_INDICATION_LED=y
# Configure serial recovery to use CDC_ACM, which by default uses the USB
CONFIG_BOOT_SERIAL_CDC_ACM=y
# Increase flash space for the MCUboot image to fit USB drivers
CONFIG_PM_PARTITION_SIZE_MCUBOOT=0x10000
圖片18

接著建立一個新的檔案,取名為 mcuboot.overlay
依據DFU over UART / DFU over USB 選擇不同的參數。
圖片21

使用DFU over UART的overlay檔設定
/* Configure button and LED for Serial Recovery */
/ {
    aliases {
          mcuboot-button0 = &button0;
          mcuboot-led0 = &led0;
    };
  };
圖片22

使用DFU over USB的overlay檔設定
/* Configure button and LED for Serial Recovery */
/ {
    aliases {
          mcuboot-button0 = &button0;
          mcuboot-led0 = &led0;
    };
  };
/* Configure CDC ACM */
&zephyr_udc0 {
            cdc_acm_uart0: cdc_acm_uart0 {
                        compatible = "zephyr,cdc-acm-uart";
            };
};
圖片23

備註:若您使用DFU over USB,請依下圖增加以下指令。
圖片24

完成上列的全部步驟之後,就可以開始編譯您的專案內容了。
圖片25


3c. 開始編譯您的專案內容
點選下圖左側的新增建置設定 ➔ 選擇 Board ➔ 選擇raytac_mdbt50q_db_40/nrf52840。
圖片26

點擊右側螢幕下方的 Generate and Build 即可開始編譯。
圖片27

編譯完成並且沒有顯示錯誤,如下圖。
圖片28


3d. 將專案燒錄進MDBT50Q-DB-40開發板內。
圖片29

如成功燒錄,則會如下圖顯示:...flashed successfully。
圖片30
 
4. 用MDBT50Q開發板完成DFU over UART / DFU over USB

請注意:
若選擇使用 UART 建立環境及鍵入參數,請使用 UART 進行硬體更新。
同樣,若選擇USB,請使用 USB 進行硬體更新。


DFU over UART 的硬體更新方式
按住 SW2 按鈕,並將電源插入 USB 連接器。系統將進入bootloader模式。
您可以進行DFU over UART。
圖片31

DFU over USB 的硬體更新方式
您仍然需要按住 SW2 按鈕並連接USB上電。
圖片32
 
5. 透過 AuTerm (軟體) 進行DFU over USB
AuTerm 是在 Windows 系統上運行的 PC 軟體(免費下載)。
它允許您在 MDBT50Q-DB-40 進行DFU over USB
下載網址:
https://github.com/thedjnK/AuTerm/releases/download/v0.35a-pre/AuTerm_test_Win_x64_v0.35a.7z

選擇“配置”標籤來設定正確的 COM 連接埠。(請跟隨下列步驟來執行)
圖片33

切換到該標籤並執行下圖步驟1~6。
圖片34

您可以使用檔案:peripheral_uart_mcuboot.signed.bin 進行測試。
該檔案位於 peripheral_uart_mcuboot/build,請跟隨下列步驟來執行。
當進度條達到100%,代表韌體更新已經完成。
圖片35
 
6. 在執行DFU時帶入自訂義私人金鑰(Private Key)
開發韌體時,您必須擁有自訂義的私人金鑰 (Private Key) 來保證韌體安全。
若沒有私人金鑰,您會看到如下圖的警告。
圖片36

步驟一:使用 pip 安裝 imgtool 程式
圖片37

步驟二:安裝完成後,輸入下圖片命令以在您的專案資料夾中產生私人金鑰。
圖片38
圖片39

步驟三:在 sysbuild.conf 中設定如以下,以使用私人金鑰
# Add MCUboot
SB_CONFIG_BOOTLOADER_MCUBOOT=y
#Add private key for MCUboot
SB_CONFIG_BOOT_SIGNATURE_KEY_FILE="\${APP_DIR}/private_key.pem"
# Configure key type
SB_CONFIG_BOOT_SIGNATURE_TYPE_ECDSA_P256=y
圖片40

步驟四:重新燒錄專案後,您的韌體將受到安全保護。




Edited by Account Manager: Mr. Welson Kuo
 
Raytac Corporation 勁達國際電子股份有限公司 / Raytac Corporation (USA)
A Bluetooth, Wi-Fi, and LoRa Module Maker/ODM & OEM Manufacturer based on
Nordic nRF54; nRF53: nRF52; nRF51; nRF7002
Semtech Specification: SX1262


Bluetooth Specification: BT6.1 ; BT6 ; BT5.4 ; BT5.3 ; BT5.2.
Wi-Fi Specification: Wi-Fi 6
LoRa Specification: LoRaWAN


All products are FCC/IC/CE/Telec/KC/RCM/SRRC/NCC/WPC Pre-Certified.
http://www.raytac.com
https://www.raytac.com/contact/
email: sales@raytac.com
Tel: +886-2-3234-0208(TW)/+1-626-217-3139(USA)