Welcome to the September 2019 edition of the Embedded Artistry Newsletter! This is a monthly newsletter of curated and original content to help you build superior embedded systems. This newsletter supplements the website and covers topics not mentioned there.
This month we'll cover:
- State machine resources, libraries, and tooling
- Embedded.fm podcast's huge milestone
- Embedded news from around the web
- Embedded job postings
- Updates to the Embedded Artistry Website
State Machine Resources
This month we received multiple questions about state machines. State machines are an excellent area to study for embedded systems developers. Many embedded systems (or subsystems) can be modelled as state machines
If you're new designing state machines, you can learn more about them from expert Miro Samek and others:
- State Machines for Event Driven Systems, by Miro Samek, introduces state machines and shows a basic example
- Introduction to Hierarchical State Machines, by Miro Samek, expands on the previous article
- How to Code a State Machine in C or C++, by Miro Samek, expands on the previous two articles with a discussion of structuring state machine code and specifying state machines in C/C++.
- Practical UML Statecharts in C/C++: Event-Driven Programming for Embedded Systems, by Miro Samek, is a book dedicated to UML Statechart modeling for embedded systems, state machine design patterns, and a detailed breakdown of the implementation for Miro's QP framework
- Miro's State Machine website features application notes discussing state machine design patterns as well as a series of articles related to state machine modeling and design
- Here's an interview with Miro Samek on the Embedded.fm podcast
- Hassan Gomaa has a set of lecture slides on State Machines for Real-Time Embedded System
- Real-Time Software Design for Embedded Systems, by Hassan Gomaa, dedicates a chapter to the topic of state machine design
- Statecharts: A Visual Formalism for Complex Systems, by David Harel, is a classic paper which introduced the concept of statecharts
We’re often asked about our favorite state machine code. Here are some of the best libraries:
- The Embedded Template Library provides both an FSM and a Statechart.
- Boost.SML is a C++14 header-only state machine library
- TinyFSM is a C++11 FSM library targeted for embedded systems
- Miro Samek's QP/C and QP/C++ frameworks are built around the concepts of state machines and active objects
We also answered questions this month about tools which can be used to model, verify, and generate code for state machines:
- QM supports visual state machine modeling and code generation
- The output code is targeted for the QP framework
- Yakindu can model, verify, and generate code for state machines
- The output code is not targeted to a specific library or framework
- StarUML, PlantUML, and many other UML tools allow you to create visual models
We'll be turning this section of the newsletter into an article later this month. If you have any recommendations for state machine resources, libraries, or tooling, we'd love to hear from you.
Congratulations to Embedded.fm for 300 episodes!
Embedded.fm, our favorite embedded systems podcast, just released their 300th episode! We want to say a heartfelt congratulations to Chris and Elecia. It takes an enormous amount of dedication and persistence to create such a long-running show.
To celebrate their milestone, Chris and Elecia are throwing a party on September 7 in Aptos, California. If you're interested in attending, you can RSVP here.
If you haven’t heard of the Embedded.fm podcast, you can tune in at https://embedded.fm or in your favorite podcast app. Chris and Elecia are both embedded systems engineers. They started Embedded.fm to support engineers, encourage diversity, celebrate the ethics of good design, and help demystify what engineers do. They also wanted to show how a career in engineering can evolve. With 300 episodes under their belt, they have definitely stayed true to these goals.
A lot of time and energy goes into each episode. We encourage you to support the podcast through Patreon or by purchasing Embedded.fm merchandise. As a bonus to Patreon sponsors, you get access to a Slack group where you can interact with other embedded engineers and past podcast guests. We've found this group to be an extremely valuable resource for experiencing new perspectives and expanding our knowledge of embedded systems.
There have been so many wonderful episodes. Here is a small sampling of our favorites:
- 299: Reasonably Foreseeable Misuse, featuring Monk Eastman and discussing product certifications
- 290: Rule of Thumbs, featuring Phillip (of Embedded Artistry) and discussing consulting, writing, Boeing 737 MAX, and embedded C++
- 53: Being a grownup engineer, featuring Jack Ganssle, who has been a continued source of wisdom and inspiration to us
- 270: Broccoli Is Good Too, featuring James Grenning and discussing TDD and dealing with legacy code
- 269: Ultra-Precise Death Ray, featuring Alan Cohen and discussing the product development process
- 78: Happy Cows, featuring Chris Svec and discussing empathy driven development
Around the Web
We’ve grouped our September reading recommendations by these categories:
Steve Branam updated his excellent So You Want to Be An Embedded Systems Developer article with new resources.
Niall Cooling, of Feabhas, shared two articles with us from his archives: Setting up the Cortex-M3/M4 MPU, and Developing a Generic Hard Fault handler for ARM Cortex-M3/M4.
Qt will be launching a bare metal toolkit targeted for microcontrollers.
Memfault posted an approach to building a CLI for firmware projects using the Python Invoke package.
Jacob Beningo published two articles about using JSON in embedded systems: Geetting Started with JSON for Embedded Developers and Using strstr to parse JSON Messages.
This article surveying sub $0.10 microcontrollers has been circulating around Twitter and provides a look at the cheapest end of the microcontroller spectrum. The article was inspired by an article published last year: Making a Three Cent Microcontroller Useful.
Stratify Labs is publishing a series of articles to teach you the EE concepts needed for working with microcontroller-based circuits. The first three articles in the series are Ohm's Law for Makers, Kirchoff's Law for Maker's, and Equivalent Circuits for Makers.
Apple, Inc.'s Hardware Test Engineering team is looking for an Embedded Systems Software Architect to lead the creation of a modular instrumentation platform. Are you convinced that with the right resources you could build a platform that will change an entire industry? Are you able to provide technical leadership across both the hardware and software realms? If so, contact Wei Wang to find out more.
At IRNAS, innovation lab for hardware and IoT products, based in Maribor, Slovenia, we are expanding our crew with an Embedded Software Engineer, who will collaborate on interdisciplinary development of telecommunication solutions, IoT systems, 3D bio-printing and more. Find out more about the open job position and apply by visiting this link.
Hiring Embedded Engineers?
Is your company hiring embedded systems hardware/software engineers? Send us a short job ad with a link to the full job description. We will be happy to include it in our next newsletter.
We expanded the Glossary with additional terms and links. We also fixed the "D" section, which had duplicate entries.
An RSS link has been added to both the blog side panel and newsletter archive side panel.
We published the following articles in August:
These were our most popular articles in August:
- Creating a Circular Buffer in C/C++
- Demystifying Microcontroller GPIO Settings
- Jenkins: Configuring a Linux Slave Node
- For Beginners
- Mixing C and C++: extern C
- C++ Casting, or: "Oh No, They Broke Malloc!"
- Installing LLVM/Clang on OSX
- An Overview of C++ STL Containers
- Migrating from C to C++: NULL vs nullptr
Thanks for Reading!
Have any feedback, questions, suggestions, interesting articles, or resources to recommend to other developers? Simply reply to this email!
-Phillip & Rozi