An STM32 based watch with BLE, running Micropython!
So, the last thing I wasn't doing was erasing the chip before flashing; it has to be done in a separate step, and I didn't know that. So, the project todo list now looks like:
* get µpython to talk over the USB OTG
* write some kind of frambuffer driver accessable from python (possibly Cube?)
* build out a watchface
* design/build circuit PoC (maybe with the LGA144 footprint for ease-of-soldering)
* design/build actual wearable circuit
* build case
The last couple weeks have shown steady progress. I got stlink to recognize the chip ID and start flashing, but for some reason it's failing on the last block. I'm not sure what to do about this, other than read app notes and hope to come across a clue or two. ST publishes example code to flash, I might try to get that working before going any further. It may also be a compiling issue, where I need to do something differently when building µpython.
Mad props to the community in the Boldport Slack instance; I wouldn't have gotten this far without their help.
So, because I'm moderately allergic to using GUI tools, hate java, and don't understand IDEs, I've so far just been working on getting either the stlink tool or openocd to work. The chip I'm using, the STM32L4R9x is new enough that it's not in the official repos for either piece of software. I was able to add the chip to stlink's description, but the flash writes are not working at the moment. I know openocd has more recent work on the flash algo, so the next step is to add the chip identifiers and details there and see if I can get it to flash properly with openocd. OpenOCD also has better errors in my experience, but I had a really nice roadmap for adding to stlink (an old PR that implemented another chip).
I'll probably blog the whole process over at midnight.computer, but I'll try to keep this page up to date too. The current photo is just the dev kit running demo software. Even when I get µpython running, it'll be a while before I have any kind of video driver to talk to the screen, probably. It is encouraging that one of their demo apps is exactly what I'm trying to do, just in a very different way. The goal is to have a usable watch at the end, with:
So not too much, right? ¯\_(ツ)_/¯