Using open source and free software seems to be engrained in the DNA of software developers. Given a choice to pay or build a developer will usually choose build. When it comes to compilers, building their own compiler would take far too long and be very error prone so developers choose open source tools such … Continue reading Open Source versus Commercial Compilers
The C programming language has been with embedded software developers since its creation in 1972. Ever since then C has been a blazing constant, surviving even the big push in the late 90’s and early 21st century to move to C++ or other object oriented languages. Undoubtedly, C will continue to be a foundational language … Continue reading It’s the end of C as we know it!
Debugging is one task every developer wants to avoid but it is unfortunately a necessary evil of software development. When the time comes to roll-up your sleeves and start a debugging session, there are 7 tips that every developer should be mindful of. Tip #1 – Take controlled baby steps When a bug creeps into … Continue reading Tips and Tricks – Debugging Embedded Software
Selecting the right RTOS is a critical step in any embedded software development project. Selecting the wrong RTOS could affect project costs, time to market and have real-time implications on the behavior of the system. When selecting an RTOS, teams usually focus just on cost but there are seven characteristics that should be considered. Let’s … Continue reading 7 Characteristics to Consider when Selecting an RTOS
Embedded systems consist of two very different types of failure rates; hardware and software. The probability of a hardware failure is a well known and understand probability curve which can be observed in Figure 1. When an electronic device is first manufactured there is a short period of time where the probability of a failure … Continue reading Understanding Embedded System Failure Rates
All preprocessor directives are not created equal. A developer will have different preprocessor directives available depending on whether GNU C, IAR Embedded Workbench, Keil uVision or any other compiler is used. ANSI-C has a limited number of preprocessor directives that are included in the standard and can be considered portable. Compiler vendors have the ability … Continue reading Tips and Tricks – Writing Portable Code using Compiler Intrinsics
Course Overview: The ability to remotely update embedded software to add features and fix bugs is a critical piece of many embedded systems. Bootloaders are normally small programs, but they often bring out the worst and nastiest bugs for a developer. There is a need to fully understand not just the system but also the … Continue reading CEC – Bootloader Design for Microcontrollers
Portable Firmware …. is modular is loosely coupled has high cohesion is ANSI-C compliant has a clean interface has a Hardware Abstraction Layer (HAL) is readable and maintainable is simple uses encapsulation and abstract data types is well documented How well do the characteristics of your software match the qualities of portable firmware?
Less than a decade ago it was difficult for an engineer to get ahold of a development board without doing some serious damage to their pocketbook. Development boards were produced in small quantities and were usually big and bulky. It was not uncommon to have to shell out at a minimum $500 for a decent … Continue reading Tools – Kinetis-L Freedom Boards
One of the areas of embedded software development that engineers seem to struggle with is testing. Engineers often get excited about the design and implementation phases but when it comes to proving that the system works, efforts and or interest really start to wane. This is completely understandable considering the time and effort that can … Continue reading Using Conditional Complexity to Test Embedded Software