Wednesday, August 28, 2024

Secure DFU OTA for nRF52832 solution modules: Guide to create hex/zip file for implementation – Part 1(Bootloader & Application)

Here are the guidelines for users to implement Secure DFU OTA(over-the-air) while using nRF52832 Solution modules. (Click on link for Raytac nRF52832 module series)

Below are the guidelines to implement Secure DFU OTA by using Raytac’s nRF52832 modules, SDK16.0.0.
It consists of 2 parts:

Part 1: Bootloader & Application


Part 2: Combining and merging built files (Article link)

In this article, we will be focusing on Part 1: Bootloader & Application.




Path: ..\nRF5_SDK_16.0.0_98a08e2\examples\dfu\secure_bootloader\pca10040_s132_ble\arm5_no_packs
Specifically for nRF52832, programmers need to embed ECC(Elliptic Curve Cryptography) into the bootloader.


Step 1. ’micro_ecc_lib_nrf52.lib’ library can be found in the path below, but we need to boot it up first.


Step 2. Unzip ’micro-ecc-master.zip’ to the below path(create a new “micro-ecc” file first).


Step 3. Run ’gcc-arm-none-eabi-7-2018-q2-update-win32.exe’.


Step 4. Make sure the Environment variables in Win10 are set as below. (Follow the steps 1 to 6)


Step 5. Open DOS → run the “make” command under armgcc path → generate’micro_ecc_lib_nrf52.lib’


Step 6. Add ’micro_ecc_lib_nrf52.lib’ into folder: nRF_micro-ecc


Step 7. An error may occur while building bootloader without a public key:
(Shown in
red frames in below screenshot)


Step 8. How to generate the public key file in Bootloader?
A. Visit DOS at path: ..\Python27\Scripts
B. Then execute:

nrfutil keys generate private.pem
nrfutil keys display --key pk --format code private.pem --out_file public_key.c


Step 9. Copy the pk[64] code from (public_key.c) into (dfu_public_key.c)
(Shown in red frames in below screenshot)

※Note: Make sure to save the 3 generated files:
private.pem
public_key.c
dfu_public_key.c


Step 10. Generate the bootloader file: nrf52832_xxaa_s132.hex after re-compiling the code files.



Application


Path:
..\nRF5_SDK_16.0.0_98a08e2\examples\ble_peripheral\ble_app_uart\pca10040\s132\arm5_no_packs
Before building Application code , some amendments need to be made regarding DFU-related settings and code inside Application:


Step 1. Add code in definition in C/C++ :
BL_SETTINGS_ACCESS_ONLY NRF_DFU_SVCI_ENABLED NRF_DFU_TRANSPORT_BLE=1
(Total 3 steps definitions need to be set up)


Step 2. Add the 3 paths shown below in C/C++ to make DFU work.


Step 3. Add the .c files inside red frame in (Screenshots 1&2)
and add the 2 groups of (nRF_DFU & nRF_SVC)(Screenshot 4) under Project(Screenshot 3)


Step 4. Add code into main.c file in Application (..\examples\ble_peripheral\ble_app_uart\main.c)
(Please refer to: main.c file at: ..\examples\ble_peripheral\ ble_app_buttonless_dfu)


Step 5.
The code of file: sdk_config.h (..\examples\ble_peripheral\ble_app_uart\pca10040\s132\config\sdk_config.h)

inside Application needs to be modified.


Step 6. Adjust the IRAM1 value in Target after implementing DFU service:
Make sure the IRAM1 Value of 
*p_app_ram_start is modified 

from default: 0x20002AD8 0xD528 to 0x20002AE8 0xD518, as shown in the red frame in the bottom right corner.

In this case, the program should run/advertise successfully.


Step 7. Create a file of: nrf52832_xxaa.hex after building application code files.



Step 8. Create a bootloader setting file of nrf52832_bootloader_secure_settings.hex via DOS.
nrfutil settings generate –family NRF52 –application nrf52832_xxaa.hex –application-version 3 —
bootloader-version 2 –bl-settings-version 1 
nrf52832_bootloader_secure_settings.hex –no-backup

※Stay tuned for Part 2: Combining and merging built files in the next article, scheduled release in next week(04-Sep-2024).


Technical guidelines provided by R&D Manager: Mr. MW Lee

Edited by Sales Manager: Ms. Mandy Chao



Raytac Corporation 勁達國際電子股份有限公司 
Raytac Corporation: A Bluetooth, Wi-Fi, and LoRa Module Maker based on
Nordic nRF54; nRF53: nRF52; nRF51; nRF7002
Semtech Specification: SX1262

Bluetooth Specification: 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 Pre-Certified.
http://www.raytac.com
email: service@raytac.com
Tel: +886-2-3234-0208

No comments:

Post a Comment