Official Release: PineTime MCUBoot Bootloader with fixes for SPI hanging, manual firmware rollback
MCUBoot Bootloader that fixes SPI Bus corruption...
-
In case of Non-Maskable Interrupt (e.g. assertion failure) and Hard Fault, blink 4 times quickly and reboot.
-
Assertion failure may be due to SPI Bus corruption, which causes SPI Flash access to fail in spiflash_identify() in repos/apache-mynewt-core/hw/drivers/flash/spiflash/src/spiflash.c. Rebooting fixes the SPI Bus corruption.
See #24
-
Why blink before rebooting? So that we introduce a delay before rebooting, to prevent reboot looping. If PineTime flashes continuously for a long time, it means that the bootloader is stuck in a reboot loop, possibly due to faulty hardware.
-
Also fixes the checking for manual firmware rollback. Now we need to press and hold at least 1 second, to prevent accidental rollback. During rollback, the screen blinks slowly 4 times before rebooting.
-
Increased Bootloader Flash Area from 24 KB to 28 KB to allow testing of MCUBoot with Semihosting Console enabled. Decreased Reboot Log Flash Area from 8 KB to 4 KB so other Flash Areas are not affected. Updated the Flash Map docs:
https://lupyuen.github.io/pinetime-rust-mynewt/articles/mcuboot
Flash the asset below mynewt.elf.bin
to address 0x0
with PineTime Updater
From now on, all MCUBoot binaries released have Semihosting Disabled and will work with JLink.
The binaries below were automatically built with GitHub Actions