Slowing Down to Go Faster

Post Image

Speed is imperative in the business world. Getting to market before competitors, leading the way in innovation, the development cycle can be relentless. For embedded systems engineers, deadlines are always yesterday. There is always a push to get things done faster. How quickly can we get this done? So and so needs this as fast […]

read more

Ternary Operator versus the if/else statement …

Post Image

When I’m teaching “C Programming for Embedded Systems”, I’m often asked whether the ternary operator should be used or an if/else statement. Hidden behind the question is really the need to know whether the ternary operator is more efficient than if/else. One might think that compilers today would generate identical code. Let’s take a quick […]

read more

It’s the end of C as we know it!

Post Image

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 […]

read more

7 Characteristics to Consider when Selecting an RTOS

Post Image

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 […]

read more

Mastering the 8 Pillars of Embedded Software

Post Image

Every embedded software program starts with a basic foundation from which the application is built. A successful application requires that the developer build the application using knowledge of the eight pillars of embedded software which include: Architecture Code Analysis Debugging Documentation Language Skills Standards Testing Tools / Ecosystem Skill deficiencies in any of these pillars […]

read more

Tools – Embedded Software Start-up Checklist

Post Image

Setting up a project the correct way from the start doesn’t have to be black magic. Successfully implementing quality embedded software starts by following a very simple procedure and following a disciplined approach to software development. The download link below contains a checklist of embedded software tasks that should be implemented before application code is […]

read more

Understanding Embedded System Failure Rates

Post Image

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 […]

read more

Tools – AstroGrep

Post Image

One of the problems with developing embedded software using a windows based machine is that there is no GREP feature built into windows. Developers can use the Search or Find in Files feature that is part of their IDE but generally these features don’t have the power of GREP. Developers interested in a Windows based […]

read more

Tools – Selecting the right emulator

Post Image

Selecting the right emulator for the job can be challenging. Many development teams try to either skimp by using the emulator included with low cost development boards or purchase an emulator that is produced by their toolchain vendor. For example, teams using IAR Workbench may purchase an IAR I-Jet which integrates well and provides tools […]

read more

Understanding volatile access warnings

Post Image

Every now and then, an interesting compiler warning will pop that make developers scratch their head in wonder. One such warning is the ” undefined behavior: the order of volatile accesses is undefined in this statement” An example of this warning pops up in a FreeRTOS port using the IAR Workbench toolchain in a statement […]

read more