There are a glut of really nice round OLED displays that use the MIPI DSI standard for communication, and ST introduced the STM32L4R9 that have on-board logic for it. This is a project to get µPython running on that processor, and build a watch out of it.
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:
Some way to fetch time from the cloud using current location
Accelerometer for step counting/fitness
ambient light sensor for auto-brightness
expansion header for hacking
python source code for easy extension/modification
touch bezel - ring of touch buttons around watch face, for UI (touch screens are too delicate)