MCUboot Walkthrough and Porting Guide | Interrupt

In previous articles such as How to Write a Bootloader from Scratch, device firmware update strategies, & how to securely sign firmware updates, we have explored the various parts that make up a bootloader and DFU subsystem. We have seen there are a lot of pieces that need to come together for the system to work reliably and be secure.


This is a companion discussion topic for the original entry at https://interrupt.memfault.com/blog/mcuboot-overview

Hello Chris,
I have tried to compile the mcuboot example for nrf52840 you provided on the interrupt but when I’m running make in interrupt/example/mcuboot/bootloader, I get multiple undifined errors :
like :

bootloader/src/shell_commands.c:37: undefined reference to `boot_set_pending

Is there anything that I need to change in the makefile or am I missing some utilities to compile correctly ?
Thank you for your kind help.
Have a good day
Romain Fender

I’ve read a few articles on MCUBoot and your other articles on bootloaders. I’m interested in a bootloader that sets up its second slot (non-executing app image) in a remote memory location. This can be the on my PC connected to my target device, another MCU that can communicate with the target MCU (this is my case), or the cloud.

In my case, I will have a SPI interface to another MCU which has access to an external flash. The external flash (secondary slot) would contain the new image that would be used to update the target MCU. Using the simple erase and replace algorithm, I figured that the target MCU can update its on-chip flash with the image on the external flash via requests to the other MCU to retrieve and send over the SPI bus the new image one sector at a time. I have not seen any example code that can do this. Would you have any information on this?

Thanks

Thanks for this amazing article on MCU-Boot, it gives a very detailed insight into how one can adopt MCUBoot. While going over triggering-firmware-upgrades-from-main-application, wondering if below statement is applicable when swap needs to be made permanent?

If it is **temporary**, `boot_set_confirmed()` must be called after the upgrade to prevent a revert to the previous image.