Despite the hopes and dreams of many embedded engineers, reliable code doesn’t happen by accident. It is a painstaking process that requires developers to maintain and manage every bit and byte of the system. There is usually a sigh of relief when an application is validated “successfully” but just because the software is running correctly … Continue reading 7 Tips for Creating a Reliable Embedded System
Category: Defect Management (Debugging)
5 Technologies Embedded System Engineers Should Master in 2019
Happy New Year! Another year is here and with it are many opportunities for embedded systems developers. As the new year starts, there are many interesting technologies that are going to be shaping the way systems are designed in 2019 and beyond. Let’s quickly examine the top five technologies that developers should be mastering or … Continue reading 5 Technologies Embedded System Engineers Should Master in 2019
The Biggest Embedded Software Issue Is …
There are many different problems and challenges that embedded software developers are facing today. One of the biggest, and least spoken about issues that I have encountered is that developers are writing their software for success. Writing for success sounds great, except that what I mean is that developers are writing their software assuming that … Continue reading The Biggest Embedded Software Issue Is …
Creating an SWD Adapter for STM32 Development Boards (Part 3)
My adapter boards have arrived! As we discussed in the first two parts, the on-board debugger that comes with most development boards is functional but often offers far less than a professional debugger. We’ve been exploring how we can create an adapter board for the ST Microelectronic development boards that will allow us to use … Continue reading Creating an SWD Adapter for STM32 Development Boards (Part 3)
Writing a Multi-Port ITM Function to Improve Debugging
In “Improve Debug Efficiency with the ITM”, I discussed how the ITM on the Arm® Cortex-M processors can be used to quickly, and efficiently print debug information to a coresight terminal. We saw that the ITM is extremely fast, much faster than a UART which minimizes the overhead associated with printing log and debug information … Continue reading Writing a Multi-Port ITM Function to Improve Debugging
Tools – Real-time Application Visualization Using Tracealyzer 4.2
It has often been said that a picture is worth a thousand words. When it comes to debugging embedded software, a picture is worth a hundred thousand lines of code. For most of my career, I’ve always felt apprehensive about running code on a target and verifying a few external features to say that the … Continue reading Tools – Real-time Application Visualization Using Tracealyzer 4.2
Improve Debug Efficiency with the ITM
Let’s face it. No matter how sophisticated our debug tools get, there will always be a place for an old fashioned printf statement. Unfortunately, printf tends be efficient and can dramatically affect the systems real-time performance. For developers using an Arm Cortex®-M3 or better, printf can be remapped to the Instrumentation Trace Macrocell (ITM) which … Continue reading Improve Debug Efficiency with the ITM
3 Ways to Perform a Worst-Case Stack Analysis
Figuring out how to size the stack for an embedded application and the tasks within it can be challenging. In many cases, developers will pick a value that they feel should be enough. These estimates are sometimes a little short, most of the time a gross estimation and rarely spot on. While I always encourage … Continue reading 3 Ways to Perform a Worst-Case Stack Analysis
Evaluating and Mastering Real-Time Debugging Techniques
There are many techniques and processes that developers can follow in order to minimize the defects (bugs) that find their way into embedded software. No matter how carefully one develops their software, there is always going to be a few that sneak through and require us to troubleshoot (debug) the software. In this post, we … Continue reading Evaluating and Mastering Real-Time Debugging Techniques
Getting the most performance from printf
The oldest, tried and true debugging technique is to sprinkle printf statements throughout embedded software in the hope that an insight to the system behavior will be gleaned. Using printf is not always advisable and can unforeseen real-time implications for the system. Let’s examine the fundamental issues with printf and then a few techniques that … Continue reading Getting the most performance from printf