I've just ordered my pinetime devkit so it'll be a while before it arrives, but I was thinking the first thing we should probably do in common before we all go off to do our own things is develop a bootloader that will work in common with all our projects. It's all very well writing the flash via SWD with the devkits, but in the production version presumably we're going to need another way of writing the flash that doesn't involve opening the case.
The bootloader should be able to:
Is anyone working on anything like this? If not, I guess that's my first job when I get hold of my devkit.
The bootloader should be able to:
- Drive the display, bluetooth and SPI flash.
- Present a nice liveness/progress bar indicator during the boot process.
- Delay on boot, check if the button is pressed.
- If the button is pressed, enter "rescue" mode that will offer a serial console over bluetooth with xmodem (or similar) support to download a (compressed?) firmware image.
- Write any firmware image received to SPI flash, verify checksums.
- Check on boot if a new firmware image is available in external flash, if so write it to internal (memory mapped) flash.
- Protect the internal flash.
- Set the watchdog timer.
- Branch to whatever address we agree the kernel entry point should live at.
Is anyone working on anything like this? If not, I guess that's my first job when I get hold of my devkit.