CEC – Embedded Software Design Techniques

How embedded software is designed and built has evolved over the last several years. Embedded systems are no longer simple disconnected systems but powerful microcontroller-driven devices balancing connectivity, machine learning, and real-time control. This course will explore how to design and build modern embedded systems that use microcontrollers. Registration and Playback are located here (May require … Continue reading CEC – Embedded Software Design Techniques

5 Tips for Rapid Prototyping with the Raspberry Pi Pico

Over the last several years, Raspberry Pi’s have proliferated into all sorts of applications. As a microcontroller-focused embedded software consultant, I’ve always found them fun and interesting, but not exactly my cup of tea. However, in January 2021, the Raspberry Pi Pico was released which at its heart has an RP2040 dual-core microcontroller based on … Continue reading 5 Tips for Rapid Prototyping with the Raspberry Pi Pico

The Ternary Operator Revisited

Several years ago, I wrote a blog post entitled Ternary Operator vs. if/else, which was supposed to be an interesting comparison between the two, except that I totally botched it! The premise is that the ternary operator and if/else statements should compile into identical, so why not just use if/else statements to make the code … Continue reading The Ternary Operator Revisited

3 Elements to Successful Embedded Software Development

A lot of teams developing embedded software struggle to deliver on time, on budget, and at a quality level that meets customer expectations. Successful embedded software development is often elusive and there are all kinds of excuses software teams have for their failure. However, there are many teams in the industry that are repeatedly successful … Continue reading 3 Elements to Successful Embedded Software Development

Introduction to Docker for Embedded Software Developers

Over the last several years, Docker has taken the software industry by storm. Docker provides developers an “open platform for developing, shipping, and running applications[1]”. The major advantage that docker provides developers is that it can separate the applications from the infrastructure that it is running on by building the environment in a container. The … Continue reading Introduction to Docker for Embedded Software Developers

Programming the STM32 Option Bytes using SEGGER J-Flash

Nearly every microcontroller contains option bytes, fuses, or some method to control general settings on the processor. These settings often control features such as whether debugging is enabled or disabled, flash can be written or read, and even how the processor will boot. In this post, we will explore how to program the STM32 option … Continue reading Programming the STM32 Option Bytes using SEGGER J-Flash

3 Tips for Writing External Device Drivers

A major advantage to using a microcontroller today is that embedded software developers typically don’t have to write their own drivers anymore. Instead, it’s widespread for the microcontroller vendor to provide software frameworks that abstract the hardware and allow developers to make simple function calls to initialize, read and write to peripherals such as SPI, … Continue reading 3 Tips for Writing External Device Drivers

5 Tips for Developing an RTOS Application Software Architecture

Real-time operating systems (RTOS) are finding their way into nearly every IoT device. An RTOSes ability to manage low-level resources and complex timing requirements make them well suited for these applications. It is not uncommon though to struggle with how to design a software architecture that includes an RTOS. In today’s post, we will examine … Continue reading 5 Tips for Developing an RTOS Application Software Architecture