nRF52832 開發記錄(二) - DFU 功能


前言

NRF 官方提供了 DFU (Device Firmware Upgrade) 設備固件升級的例程,在項目中使用需要自己生成密鑰用於加解密固件。本工程基於 nRF5_SDK_16.0.0

相關軟件下載和安裝

nRF Command Line Tools 10.5.0 (上篇博文已安裝) 下載鏈接
Python 2.7.17 下載鏈接
coreutils 5.3.0 下載鏈接
gcc-arm-none-eabi-7-2018-q2-update-win32-sha2 下載鏈接
make 3.81 下載鏈接
micro-ecc 1.0 下載鏈接

分別安裝以上的軟件,添加這兩項到系統環境變量

C:\Program Files (x86)\GnuWin32;
C:\Program Files (x86)\GnuWin32\bin;

安裝 gcc-arm-none-eabi-7-2018-q2-update-win32-sha2 和 Python 2.7 勾選下圖的添加到系統環境變量

Python 2.7 安裝完成后安裝 nrfutil,打開命令行輸入

python -m pip install nrfutil

添加 micro-ecc

examples\dfu\secure_bootloader\pca10040_s132_ble 為 nRF52832 的 藍牙 DFU 例程,這里我重新整理了工程,需要將 micro-ecc 放到 external\micro-ecc 中,具體可參考 此鏈接

雙擊 external\micro-ecc 中的 build_all 編譯

重新打開工程可看到此文件不缺失

生成公鑰和私鑰

在 app 目錄打開命令行,分別生成 dfu_private_key.pem 和 dfu_public_key.c

nrfutil keys generate dfu_private_key.pem
nrfutil keys display --key pk --format code dfu_private_key.pem --out_file dfu_public_key.c

打開工程編譯

工程中的一些設置

打開 sdk_config.h,切換到 Configuration Wizard

NRF_BL_DFU_ENTER_METHOD_BUTTON_PIN 表示進入 Bootloader 時按住此鍵則不會跳轉到用戶程序

NRF_DFU_BLE_ADV_NAME 設置 DFU 模式時的廣播名

NRF_DFU_APP_DATA_AREA_SIZE 表示用戶程序設置的保存區域,比如 FDS 數據,進行 DFU 更新時會確保不覆蓋此區域,因為 1 頁為 4KB,所以 12288 代表預留 3 個頁,在此處可以認為是 App + Free Space 的 0x0002 6000 - 0x0007 7FFF 地址中的結尾 12KB ,具體可參考上一篇博文中的分區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM