How-to articles about the design of safe and reliable embedded systems.

Killer Apps: Embedded Software's Greatest Hit Jobs

As embedded software's size and complexity continue to rapidly progress, user safety increasingly relies upon safe and reliable firmware implementations. Barr Group co-founder and CTO Michael Barr presents an engaging discussion of the past, present, and future of embedded software safety. 

Usability Standards for Medical Devices

Examining the structure of the ANSI and ISO usability standards is the first step to developing medical devices that protect users from accidents.

The Perils of Preemptive Multitasking

 Printable PDF

Every commercial RTOS employs a priority-based preemptive scheduler. This despite the fact that real-time systems vary in their requirements and real-time scheduling doesn't have to be so uniform. Multitasking and meeting deadlines is certainly not a one-size-fits-all problem.

How to Handle User Errors

With thoughtful design, user interfaces for embedded systems can avoid some user errors altogether and helpfully guide the user through the rest.

Portable Fixed-Width Integers in C

For embedded software developers, the most significant improvements to the C programming language made in the ISO C99 standard update are in the new <stdint.h> header file. Learn the typedef names for the new fixed width integer data types, to make hardware interfacing in C easier. 

Introduction to Controller Area Network (CAN)

 Printable PDF

Controller Area Network (CAN) is the most widely-used automotive bus architecture. Here are some reasons why.

How to Choose a Real-Time Operating System

In the market for a real-time operating system (RTOS)? This article provides an overview of RTOSes and how you can select the best one for your project.

MISRA-C Guidelines for Safety Critical Software

In 1998, the UK's Motor Industry Software Reliability Association established a set of 127 guidelines for the use of C in safety-critical systems. Here's a look at the rules, what they mean, and how they can work for you.

How to Use Lint for Static Code Analysis

Language specifications, including those for C and C++, are often loosely written. A static analysis tool called lint can help you find dangerous and non-portable constructs in your code before your compiler turns them into run-time bugs.

Introduction to Priority Inversion

 Printable PDF

When tasks share resources, as they often do/must, strange things can and will happen. Priority inversions can be particularly difficult to anticipate. A basic understanding of the problem is key.

Pages