This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

issue when calling bootloader_start() from main() loop instead from dfu_app_on_dfu_evt()

Hi,

While working on OTA DFU using my custom code compiled to work on PCA10028 board, I am seeing the following issue.

The OTA DFU works fine using Master Control Panel and my bootloader and application images on PCA10028. I have pretty much used the SDK code for the DFU logic.

I then replaced bootloader_start() from dfu_app_on_dfu_evt() and instead scheduled an event to the main(). This event gets executed as part of app_sched_execute() in the main() loop. In the event schedule execution logic, I just call bootloader_start(). In short, the bootloader_start() call is moved from BLE interrupt context to main() loop's context.

With this change the OTA DFU doesn't work. I see that the App is able to start the bootloader, but the DFU fails.

Any pointers?

I want to make the change so that I can do some cleanup work in reset_prepare(). This cleanup work requires things executed from the main() loop's context.

Thanks, Sam

Parents Reply Children
No Data
Related