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
Category: Software Techniques
How to Debug a Hard Fault on an Arm Cortex-M
In my opinion, one of the worst, most annoying faults to debug on an Arm Cortex-M microcontroller is a hard fault. If you are lucky, the hard fault appears after you’ve made some glaringly obvious mistake, and you can quickly undo it. I recently worked with a colleague who encountered a hard fault, but it … Continue reading How to Debug a Hard Fault on an Arm Cortex-M
3 Tips for Embedded Software Configuration Management
Embedded software configuration management can be a tricky endeavor. Systems today are often designed to work in multiple products, for various customers, over long-time frames. These systems require the ability to be easily configured so that the code does not become a nightmare and minimize the chances of improperly configuring them. In this post, we … Continue reading 3 Tips for Embedded Software Configuration Management
5 Tips for Versioning Embedded Software
As you know, embedded software changes at a dramatic rate. How we manage software version information dramatically affects whether we can successfully understand the differences between those versions. Several years ago, I wrote a blog entitled 5 Tips for Versioning Embedded Systems. Today’s post will explore a few tips for versioning embedded software. Tip #1 … Continue reading 5 Tips for Versioning Embedded Software
3 Overlooked Embedded Software Elements
Have you ever wondered, while you and your team are busy writing software if the very foundation of how embedded software systems are built has changed and left you in the dust? What if while you were busily focusing on getting your product out the door, fighting bugs, and dealing with supply issues, there were … Continue reading 3 Overlooked Embedded Software Elements
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
5 C++ Tricks for C Programmers
Over the past several years, C++ has become a more popular language to use in embedded systems than C. Don’t get me wrong, C will continue to be a dominant language for years to come, but C++ offers developers modern tools to leverage when designing more reusable, scalable, and portable code. Teams aren’t just abandoning … Continue reading 5 C++ Tricks for C Programmers
5 RTOS Design Best Practices
RTOS design has become critical to many embedded applications. RTOSes are used in more than 50% of embedded applications and with so many devices becoming connected and starting to use machine learning, those numbers will only go up. When designing an RTOS-based application, there are many caveats and it is easy to overlook best practices. … Continue reading 5 RTOS Design Best Practices
3 Tips for Successfully Simulating Embedded Software
As an embedded software engineer, it’s really easy to think that all the software for the product is reliant upon the hardware. Most embedded developers that I encounter want to get a development board right out of the gate and start writing software, including myself most of the time. It’s not necessarily wrong, it’s just … Continue reading 3 Tips for Successfully Simulating Embedded Software
Using Docker to Setup an STM32 Build Environment
In one of my previous posts, Introduction to Docker for Embedded Software Developers, we started to discuss Docker’s role in embedded software development. Docker provides a mechanism to set up our build environments in a container, making it easier to get new developers up and running. More importantly, Docker allows us to create a portable … Continue reading Using Docker to Setup an STM32 Build Environment