Hi,
We have a product based on nrf52840 which is already in production for several years.
It was built over SoftDevice132 and SDK 12.3.
The project has 2 components:
- custom bootloader (no DFU) which has only one meaning: updates the app if it finds an upgrade on the flash storage
- application: uses BLE, UART, etc. It receives app updates via BLE, stores them on flash and resets. The bootloader runs, performs the upgrade and starts the [new] app.
The bootloader is located right after the softdevice and the app is located just after the bootloader.
Flash structure: MBR | SD132 | BOOTLOADER | APP | … free … |
I am currently porting the project to SD140 and SDK17.
I started porting the custom bootloader and the main problem I have now is starting the app .
From what I read in the bootloader library, the expected flash structure is as follows:
MBR | SD140 | APP | … | Bootloader | MBR Storage Parameters | Bootloader Settings|
From what I see in the bootloader samples in SDK17, the bootloader starts the application by calling ‘nrf_bootloader_app_start’, which seems to run the SoftDevice (flash addr 0x1000) which I am guessing will default to jumping the execution at 0x26000 (which it assumes is the starting adress of app).
In this post it is mentioned that Application MUST follow the SD on the flash storage: https://devzone.nordicsemi.com/f/nordic-q-a/39033/how-do-i-change-the-application-bootloader-start-address
Is there any way to maintain the current project flash structure (MBR | SD | BOOTLOADER | APP) and still be able to start the app from bootloader? Maybe a workaround?
And, if my custom bootloader does not use DFU, do I still need the following structures held in flash storage?
‘MBR Storage Parameters’ and ‘Bootloader Settings’
Thank you.
Mircea