2024年5月29日 星期三

如何產生執行DFU(OTA)所需的 hex/zip 檔 – 步驟說明#2 - Application

 主題:使用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)。




D. Application的main.c檔(..\examples\ble_peripheral\ble_app_uart\main.c)內
須增加下列幾張圖內的程式碼。

(程式碼請參考..\examples\ble_peripheral\ ble_app_buttonless_dfu內的main.c)









E. Application的sdk_config.h檔
(路徑:..\examples\ble_peripheral\ble_app_uart\pca10056\s140\config\ sdk_config.h)內容需修改。




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

沒有留言:

張貼留言