Hello,
I want to try the secure bootloader + softdevice 7.0.1 + ble app buttonless dfu example from SDK16
I want to test all that in our custom board NRF52832-QFAB (256k flash + 32k ram)
- what I found is that for softdevice I need at least 0x26000 bytes for flash and 0x1668 bytes for RAM
- The ble app dfu buttonless example size is 0xCDB0 (found wit running hexinfo.py: first: 0x00026000, last: 0x00032DAF, length: 0x0000CDB0)
- I suppose that this mean that the app mapping could be:
MEMORY
{
FLASH (rx) : ORIGIN = 0x26000, LENGTH = 0x12000
RAM (rwx) : ORIGIN = 0x20002270, LENGTH = 0x5d90
uicr_bootloader_start_address (r) : ORIGIN = 0x10001014, LENGTH = 0x4
}
- The bootloader need 0x6000 bytes for flash, so the memory map for bootloader could be:
MEMORY
{
FLASH (rx) : ORIGIN = 0x38000, LENGTH = 0x6000
RAM (rwx) : ORIGIN = 0x20003278, LENGTH = 0x4d88
uicr_bootloader_start_address (r) : ORIGIN = 0x10001014, LENGTH = 0x4
bootloader_settings_page (r) : ORIGIN = 0x0003F000, LENGTH = 0x1000
uicr_mbr_params_page (r) : ORIGIN = 0x10001018, LENGTH = 0x4
mbr_params_page (r) : ORIGIN = 0x0003E000, LENGTH = 0x1000
}
- In addition to the memory mapping I have to change in nrf_dfu_types.h:
FROM
#elif defined(NRF52832_XXAA)
#define NRF_MBR_PARAMS_PAGE_ADDRESS (0x0007E000UL)
...
#elif defined( NRF52832_XXAA )
#define BOOTLOADER_SETTINGS_ADDRESS (0x0007F000UL)
TO
#elif defined(NRF52832_XXAA)
#define NRF_MBR_PARAMS_PAGE_ADDRESS (0x0003E000UL)
...
#elif defined( NRF52832_XXAA )
#define BOOTLOADER_SETTINGS_ADDRESS (0x0003F000UL)
- As our custom board don't have buttons and leds I added new board:
in board.h
#elif defined(BOARD_PCA10040_ABW)
#include "pca10040_abw.h"
And changed in the make files BOARD_PCA10040 => BOARD_PCA10040_ABW
- After all changes I flashed my custom board:
$nrfjprog --program nRF5_SDK_16.0.0_98a08e2/components/softdevice/s132/hex/s132_nrf52_7.0.1_softdevice.hex --chiperase
$nrfjprog --program secure_bootloader_abw/pca10040_s132_ble/armgcc/_build/nrf52832_xxaa_s132.hex
$nrfutil pkg generate --application examples/ble_peripheral/ble_app_buttonless_dfu/pca10040/s132/armgcc/_build/nrf52832_xxaa.hex --application-version 1 --application-version-string "1.0.0" --hw-version 52 --sd-req 0xCB --sd-id 0xCB --softdevice components/softdevice/s132/hex/s132_nrf52_7.0.1_softdevice.hex --key-file private.key FW_abw.zip
$nrfjprog --reset
=> The device start advertising DfuTarg, So I start DFU by sending FW_abw.zip but after the upload finish the device still in DFU!
Note: when tried on the Devkit (without changing anything listed before) while making the DFU process it seems that the phone sent 2 files (I suppose SD and App), but when updating the custom board the phone seems sending only one file.
Question:
1- The app flash mapping is correct?
2- The bootloader flash mapping is correct?
3- The app ram mapping is correct? can i do better than that?
4- The app flash mapping is correct? can i do better than that?
5- Beside all these change anything else to do?
Thanks by advance.