Header image

While the S in IoT stands for "security", the T stands for "things", and things move. Wouldn't it be nice to know how they move, exactly?

Routinely we have to deal with recognizing patterns within text or byte streams. While LL(k) and LALR are common types of parsers, the nom crate brings parser combinators to the embedded Rust world.

There's a lot of variety in the embedded world. While we've implemented the ESP8266 WiFi-offload board over USART last time, now we're doing the Inventek eS-WiFi over the SPI bus. Let's explore some of the differences.

In the embedded world, quite often you don't have a wall clock sort of clock. You may have something that can reckon the passage of time, though. The various current solutions for managing time within embedded Rust has yet to be completely abstracted. We leverage some up-and-coming libraries to help paper over the differences.

Getting started with an ESP-01 isn't one of the easiest things. At least if you are not used to embedded systems. It is a nice solution though to add Wi-Fi capabilities to an existing platform.

We've recently gotten TLS functional for embedded systems in Rust. TLS (Transport Layer Security) is one of the backbones to secure communications over TCP/IP, helping protect data in-flight between two parties. There's a lot of moving parts involved in bringing easy-to-use functional cryptography to small 32-bit ARM Cortex-M devices. Let's dive in, shall we?

My recent work has been around Cortex-M embedded development using Rust and RTIC. I'm using a handy little development board in the form of the STM Nucleo-F401RE. Unfortunately, it's handiness stops as soon as you want to communicate with TCP over WiFi, because it lacks WiFi.

As noted in the first post, I'm working towards doing more IoT using Rust in an embedded ARM Cortex-M world. Thankfully, the Rust compiler leverages LLVM and can target quite a few different processors.

Welcome to the Drogue IoT blog. This is where I intend to document my progress through discovering how to build enterprise-grade IoT device systems using Rust and ARM Cortex-M MCUs.