Hi all,
We are now able to perform Over-the-Air (OTA) firmware updates directly using the built-in Bluetooth adapter on a Windows PC.
Initially, the MCU BLE device runs the OTAP client sample application. We then update the firmware using the Wireless UART sample application.
However, after switching to the Wireless UART firmware, subsequent OTA updates are no longer possible because the OTAP implementation is no longer present.
To work around this, we merged the OTAP client functionality into the Wireless UART application so that OTA updates can continue after the update (i.e., Wireless UART + OTAP client combined firmware).
This solution works, but it is not ideal. Including the OTAP implementation in the main firmware increases overall image size, which slows down the OTA update process. What we would like instead is to place the OTAP implementation at a fixed memory location that will not be overwritten during firmware updates.
I believe this is achievable, but it likely requires modifying the bootloader or its configuration so that it correctly references the location of the new firmware image.
Additionally, we want to support dual-image booting, so OTA updates should store the newly downloaded image in a separate memory location.
To better understand things, I started reading about bootloaders. In the MCUBOOTFS documentation, three MCU bootloader types are mentioned:
- ROM Bootloader
- Flashloader
- Flash-Resident Bootloader
My understanding is that the MCXW71 microcontroller uses the ROM Bootloader.
Based on this, I would like to get more information on the following topics:
1) Where can I find documentation for the ROM Bootloader, including details about its internal flow (startup sequence, firmware update through USB, OTA update flow, etc.)?
2) Where can I find the ROM Bootloader source code?
I understand it is pre-programmed into the device. Is this a one-time programmed component, or can end users update the ROM bootloader if a newer version becomes available?
3) How does secure boot work on the MCXW71 microcontroller?
4) How is secure OTA firmware updating handled on the MCXW71?
5) What is the recommended approach for secure key generation, key storage, and key management?
6) Do you have a sample linker file demonstrating dual-image booting with a fixed memory location for the OTAP implementation?
If not, a sample memory map showing dual-image layout plus a dedicated OTAP location would be sufficient.
Thank you very much!