I've finally published v0.0.1 of zencan to crates.io.
Building an application for the CoreMP135 using Rust and Slint
This is a followup to Creating linux images for the M5Stack CoreMP135 with Buildroot. The last post talked about using buildroot to make a linux image, and this post is about building an application in Rust and running it on the image. The demo application is a CAN logger. It will use Slint to create a simple UI on the touchscreen to start and stop the log file, and it will log data to an exFAT partition on the microSD card.
Creating linux images for the M5Stack CoreMP135 with Buildroot
This post is about the M5Stack CoreMP135: why I like it, and a tutorial about how to use buildroot to create a linux image for it. A follow-up post describes how I create applications with Rust to run on it.
Building Custom Steel and Wood Furniture
I recently finished building a pair of bedside tables in a stlye I've used a couple times before. This post is about the project and the process I used to do it.
Zencan Device Demo Video
Two weeks ago, I posted about a Rust CANOpen Stack I was working on. It was in a bit of a disfunctional state at the time. Since then, I've ported two firmware projects to use it and in the process made a lot of progress on it! There's still a ton to do to get it where I want, but today I recorded a quick live demo of the first two boards communicating using zencan! Production quality is low, but hopefully it's still a useful way to get a feel for what it is trying to do.
Video
Notes
Code running on the boards:
Introducing Zencan: Easy CANOpen with Rust
I've been kicking around an idea for a while now to create a CAN bus communication stack for Rust, and now it is finally taking shape. It's still a work-in-progress, but I'm getting ready to publish a rough prototype, so I want to write about what I want it to be. I'm calling it Zencan, and it's an implementation of the CANOpen protocol, with a few planned extensions.
Errors using RTT and WFI
Using a Rust async function as a polled state machine
How to poll an async function manually, and then use the rust compiler as a finite-state-machine generator