Skip to content

Official Release: PineTime MCUBoot Bootloader with fixes for SPI hanging, manual firmware rollback

Compare
Choose a tag to compare
@lupyuen lupyuen released this 18 Sep 05:12
· 521 commits to master since this release

MCUBoot Bootloader that fixes SPI Bus corruption...

  1. In case of Non-Maskable Interrupt (e.g. assertion failure) and Hard Fault, blink 4 times quickly and reboot.

  2. 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

  3. 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.

  4. 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.

  5. 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

    https://lupyuen.github.io/pinetime-rust-mynewt/articles/dfu

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