There are few things more challenging in software development than acquiring a code base with little to no documentation and being required to maintain it. Documentation doesn’t just tell an engineer what a particular function or variable does but it also demonstrates and conveys why the software was implemented in a particular fashion. There are … Continue reading 10 Tricks for Documenting Embedded Software
Category: Embedded Basics
7 Tips for Developing Great API’s
Embedded software developers have grown used to working at the lowest, nitty gritty hardware level within a microcontroller based system. Twiddling and manipulating bits and bytes is what embedded software developers were born to do. The embedded software industry is changing and that change is requiring developers to start working at higher levels of abstraction … Continue reading 7 Tips for Developing Great API’s
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
7 Essential skills for firmware engineers

Having the right tools for the job is critical to success but in the hands of the improperly skilled, the result can be disastrous. Firmware engineers require seven essential skills to succeed in todays rapid paced development environment. Skill #1 – Defect Management (Formerly “Debugging”) According to the UBM Embedded Marketing Studies, debugging an embedded … Continue reading 7 Essential skills for firmware engineers
Embedded Basics – Firmware Beautification

Developing firmware can be a beautiful thing but most of the code I review is not very pretty. Firmware that is highly readable can be easier to maintain and debug. Here are a few thoughts on how to make sure that firmware is readable even under the worst of conditions. Thought #1 – Follow a … Continue reading Embedded Basics – Firmware Beautification
Embedded Basics – Hash Fundamentals

Hashes are a very important topic in computer science and provide a wide range of capabilities and functionality. To an embedded software developer, hashes play an important role in verification and securing an embedded system. In this post, we will examine cryptographic hash fundamentals and provide the foundations that a developer can use to start … Continue reading Embedded Basics – Hash Fundamentals
Embedded Basics – The Arm Security Manifesto
Last week I attended Arm TechCon and a major theme through-out was embedded security. During the conference, Arm released their Security Manifesto which provides developers with Arm’s vision for how the IoT will be protected. Let’s briefly discuss a few highlights. First, I found the Arm Security Manifesto to be an interesting read. The document … Continue reading Embedded Basics – The Arm Security Manifesto
Embedded Basics – 7 Tips for Managing RTOS Memory Performance and Usage

There are two excuses that I typically hear from developers on why they refuse to use a RTOS: • An RTOS memory footprint is too big • The RTOS has too much overhead These excuses might have had some merit five years ago but today they hold no weight. A typical RTOS will load the … Continue reading Embedded Basics – 7 Tips for Managing RTOS Memory Performance and Usage
Developing Reusable Firmware – A Practical Guide to API’s, HAL’s and Drivers
Developing firmware that can be reused is an important and critical skill. The majority of engineers and teams that I interact with are stuck constantly reinventing the wheel on every project that they work on. In order to help developers understand how they can create not just reusable application code but reusable firmware, down to … Continue reading Developing Reusable Firmware – A Practical Guide to API’s, HAL’s and Drivers