Description
I hack on keyboard hardware and firmware in my spare time, and I do it in bursts. I've previously worked with the nrf52 boards from adafruit and have made contact with @jamesmunns on that front.
I have a few adafruit boards that I'd love to use with rust and I'm willing to help move the ball forwards, but I'm not super sure what to do, in which order, and I'm not sure what the current best practices are.
I'm going to list my assumptions below, can you correct me and/or point me in the right direction?
I suspect some of this aligns with the weekly driver initiative, but some of these are lower level board support things.
Available M0 hardware
I have these boards floating around; they're all based on the ATSAMD21:
- Feather M0 with on-board nrf51 connected via SPI (I also have a standalone version of the spi based nrf51 board that I wrote drivers for in qmk; may be value in porting that under the weekly driver initiative)
- Trinket M0
- Gemma M0
- Circuit Playground Express
I'm looking at targeting the Feather M0 express for a future build, but want to make some progress on the rust side first. Ultimately, I'd like to get pure rust USB peripheral support working on one of these things. I have a couple of cheap SWD debugging adapters.
Game plan
- apply svd2rust to svd files from http://packs.download.atmel.com/ to generate the low level board support files
- Publish a crate named something like
atsamd21_svd
for this - Write the human-curated board support crate(s) for these. Should these get published in an adafruit m0 crate? Guidance on structure and naming appreciated! Are there canonical examples of these?
- Quickstart crate specifically for the adafruit boards? Not sure if this is needed or if the existing
cortex-m-quickstart
is sufficient. Is there an alternative approach that should be taken? Does
One step setup #43 make some of this obsolete?
Does that sound like the right plan? What am I missing? Are there folks interested in reviewing/providing feedback on these steps?
Thanks!