Difference between revisions of "PineTime SD MCUBoot"

From PINE64
Jump to navigation Jump to search
(Adding)
(Adding solution)
Line 1: Line 1:
The problem:
+
The Problem:
  
 
- PineTime ships with the MCUBoot Bootloader which boots to the InfiniTime Firmware
 
- PineTime ships with the MCUBoot Bootloader which boots to the InfiniTime Firmware
Line 11: Line 11:
 
- How do we allow SoftDevice-based firmware to be flashed to PineTime via DFU?
 
- How do we allow SoftDevice-based firmware to be flashed to PineTime via DFU?
  
Two approaches:
+
Preferred Solution:
 +
 
 +
- We will use DFU to flash a SoftDevice Loader Firmware, which will boot and replace MCUBoot by SoftDevice
 +
 
 +
- Thereafter, when PineTime boots, it will start SoftDevice and will be ready to accept SoftDevice-based firmware for DFU: wasp-os, ATCWatch
 +
 
 +
- When we need to switch back to MCUBoot-based firmware (InfiniTime, Mynewt, Zephyr, ...), we will run an MCUBoot Loader to replace SoftDevice by MCUBoot plus a Minimal DFU Firmware that accepts DFU commands
 +
 
 +
- After rebooting, MCUBoot starts the Minimal DFU Firmware, which will accept MCUBoot-based firmware for flashing
 +
 
 +
- The MCUBoot-based firmware replaces the Minimal DFU Firmware
  
 
- SoftDevice Loader, https://github.com/daniel-thompson/wasp-reloader
 
- SoftDevice Loader, https://github.com/daniel-thompson/wasp-reloader
 +
 +
Alternative Solution:
  
 
- Custom MBR: https://forum.pine64.org/showthread.php?tid=9779&pid=65203#pid65203
 
- Custom MBR: https://forum.pine64.org/showthread.php?tid=9779&pid=65203#pid65203

Revision as of 16:47, 10 August 2020

The Problem:

- PineTime ships with the MCUBoot Bootloader which boots to the InfiniTime Firmware

- This assumes that the firmware (InfiniTime, Mynewt, Zephyr, ...) has its own Bluetooth LE (BLE) stack and can handle firmware updates (DFU)

- But some firmware (wasp-os, ATCwatch) require Nordic SoftDevice to be installed to support the BLE and DFU functions

- InfiniTime Firmware does not support flashing of SoftDevice as firmware update, because SoftDevice needs to be flashed at address 0x0, which is used by the MCUBoot Bootloader

- How do we allow SoftDevice-based firmware to be flashed to PineTime via DFU?

Preferred Solution:

- We will use DFU to flash a SoftDevice Loader Firmware, which will boot and replace MCUBoot by SoftDevice

- Thereafter, when PineTime boots, it will start SoftDevice and will be ready to accept SoftDevice-based firmware for DFU: wasp-os, ATCWatch

- When we need to switch back to MCUBoot-based firmware (InfiniTime, Mynewt, Zephyr, ...), we will run an MCUBoot Loader to replace SoftDevice by MCUBoot plus a Minimal DFU Firmware that accepts DFU commands

- After rebooting, MCUBoot starts the Minimal DFU Firmware, which will accept MCUBoot-based firmware for flashing

- The MCUBoot-based firmware replaces the Minimal DFU Firmware

- SoftDevice Loader, https://github.com/daniel-thompson/wasp-reloader

Alternative Solution:

- Custom MBR: https://forum.pine64.org/showthread.php?tid=9779&pid=65203#pid65203