主題:使用nRF52840架設DFU OTA功能 (以SDK版本17.1.0為例)
DFU:Device Firmware Update;裝置韌體升級
OTA:Over the air;空中升級
IC: nRF52840
DK: PCA10056(對應到nRF52840)
SDK: 17.1.0
SD: s140_nrf52_7.2.0_softdevice.hex
IDE: Keil C
PC: Win 10
接續上一篇 - Part A: Bootloader(文章連結請按此), 本篇會針對
Part B: Application
的主題做介紹。
Part B: Application
路徑: nRF5_SDK_17.1.0_ddde560\examples\ble_peripheral\ble_app_uart\pca10056\s140\arm5_no_packs
在構建Application前, 在Application內與DFU相關的程式碼 & 設定皆需增加或修改:
步驟1:
A. 點開C/C++,加入3個定義,分別為:
A. BL_SETTINGS_ACCESS_ONLY
A. NRF_DFU_SVCI_ENABLED
A. NRF_DFU_TRANSPORT_BLE=1;
B. 在C/C++欄位內加入Include path(如紅框內所示)
C. 在Project內增加檔案(請參考下方圖1 & 圖2)
A. 同時新增2個Group(nRF_DFU與nRF_SVC,請參照下圖3 & 圖4,按右鍵add group)。
F. 為能順利執行後續的DFU功能,Target內的IRAM1值要做修正:
如上圖,在檢查 *p_app_ram_start值後,需在Target欄位內將IRAM1原始值 0x20002AE8 0x3D518 修改成正確值 0x20002AF8 0x3D508,後續程式才能正確執行。(如下圖)
G. 重新構建Application的程式碼,並得到 nrf52840_xxaa.hex 檔案。
步驟2:產生bootloader的setting檔,檔名:nrf52840_bootloader_secure_settings.hex
A. 到DOS的下列路徑:..\Python27\Scripts
B. 執行以下指令:
nrfutil settings generate --family NRF52840 --application nrf52840_xxaa.hex --application-version 3 --bootloader-version 2 --bl-settings-version 1 nrf52840_bootloader_secure_settings.hex --no-backup
※註:指令需包含:步驟1所構建出的Application hex檔 - nrf52840_xxaa.hex
※本系列第三篇 – Part C: Combining and merging built files 的文章預計於下周(2024年6月5日刊登)。
Technical guidelines provided by R&D Manager: Mr. MW Lee
Edited by Sales Manager: Mr. Tony Yin
Raytac Corporation 勁達國際電子股份有限公司
Bluetooth & WiFi module maker based on Nordic nRF54, nRF53, nRF52, nRF7002 solution
BT5.4 &BT5.3 & BT5.2 & BT5.1 Qualified, FCC/IC/CE/Telec/KC/RCM/SRRC/NCC Pre-Certified.
Bluetooth Solution: nRF54, nRF5340, nRF52840, nRF52833, nRF52832, nRF52820, nRF52811, nRF52810, nRF52805, nRF51822
WiFi Solution: nRF7002
http://www.raytac.com
email: service@raytac.com