Linked: How to implement and use .noinit RAM

Imagine there’s an embedded system that needs to persist some state when the processor restarts (either intentionally or due to a catastrophic error).

This could be some external hardware information (what’s the position of a motor or actuator?) or a method to communicate the reset to the user (display some information on the device’s display).

A simple way to store information through a reboot is to use what’s called “non-initialized” memory.


Neat! Good quick tutorial.

Linked: Cortex-M MCU Emulation with Renode | Interrupt

Renode is an open-source Emulator for embedded platforms. Today, it supports x86 (Intel Quark), Cortex-A (NVIDIA Tegra), Cortex-M, SPARC (Leon), and RISC-V based platforms.

Renode can take the same firmware you are running in production, and run it against emulated cores, peripherals, and even sensors and actuators. Better yet, its extensive networking support and multi-system emulation make it a shoe in for testing systems made up of multiple devices talking together.

With Renode, you can start development before your hardware is ready, test your firmware without deploying racks of hardware, and shorten your iteration cycles by cutting out flash loading delays


This post has a good walkthrough on setting up Renode, including customizing emulated hardware and integrating with the automated testing framework.

Linked: It’s Time for Operating Systems to Rediscover Hardware | USENIX

A glance at this year’s OSDI program shows that Operating Systems are a small niche topic for this conference, not even meriting their own full session. This is unfortunate because good OS design has always been driven by the underlying hardware, and right now that hardware is almost unrecognizable from ten years ago, let alone from the 1960s when Unix was written. This change is receiving considerable attention in the architecture and security communities, for example, but in contrast, so-called OS researchers are mostly in denial. Even the little publishable OS work that is not based on Linux still assumes the same simplistic hardware model (essentially a multiprocessor VAX) that bears little resemblance to modern reality. In this talk, I’ll speculate on how we came to this unfortunate state of affairs, and what might be done to fix it. In particular, I’ll argue for re-engaging with what computer hardware really is today and give two suggestions (among many) about how the OS research community can usefully do this, and exploit what is actually a tremendous opportunity.


As someone who is interested in embedded systems, computer architecture, and operating systems, I found this talk highly enjoyable.

Linked: Learning Electronics: Tips and Tricks for using ESP8266 in my circuit designs « RAYSHOBBY.NET

This post documents some of the tips and tricks I learned while integrating ESP8266 into my own circuit designs. Some of them help reduce the components needed thus minimizing the cost, while others have to do with selecting and using GPIO pins. For breadboard prototyping, you can certainly use one of the popular ESP8266 development boards, like NodeMCU, WeMos etc. But what I want to cover in this post is to integrate a ESP8266 module (such as ESP-12F) into the circuit design, without using the development boards.


I need to remember to consider the ESP8266 and ESP32 for my hobby projects. There are some good tips here.

Linked: Benjamin Cabé – IoT – AI – Open Source & random tech news

In this article, I have compiled 5 reasons why I tend to not enjoy writing embedded GUI code so much anymore. And since you might not be interested in simply reading a rant, I am also sharing some tips and some of the tools I use to help keep GUI development enjoyable 🙂.


I’m looking to further posts in this series on developing GUIs for embedded systems.