How-to articles about designing software to meet hard deadlines.

Embedded Control Systems in Practice

An introduction to embedded control systems along with a practical example on the differences between open and closed loop systems.

How to Prioritize RTOS Tasks (and Why It Matters)

This webinar examines best practices for assigning fixed priorities to a set of real-time operating systems (RTOS) tasks and interrupt service routines (ISRs). Viewers will learn how and why to use optimal methods to allow a critical set of tasks and interrupt service routines to meet all of their deadlines – even during transient overload periods. Lessons learned can be applied to the development of any priority-based preemptive RTOS, including real-time Linux.

Introduction to Rate Monotonic Scheduling

If you've got a lot of real-time tasks and tight deadlines, what's the best way to prioritize them? Rate Monotonic Algorithm provides the optimal technique.

How to Allocate Dynamic Memory Safely

Whether you're using only static memory, a simple stack, or dynamic allocation on a heap, you have to proceed cautiously. Embedded programmers can't afford to ignore the risks inherent in memory utilization.

How to Have Polymorphism Without a Heap

Rethinking basic programming techniques can avoid many of the problems that heap-based memory management poses for embedded real-time system designs.

Software Reliability and the Internet of Things

As Internet connectivity advances, the transportation, automotive, medical device, smart grid and other industry sectors have become more dependent on embedded software. But is software reliable?

How to Make Embedded Software Smaller and Faster

Many embedded systems have reliability, cost, and performance requirements that demand performance be designed into the system, from architecture to algorithms to data structures to coding guidelines.

How to Find and Fix the Most Common Embedded Software Bugs

As if debugging traditional PC/server software or even smartphone apps wasn't hard enough, debugging embedded software adds significant challenges.

Mutexes and Semaphores Demystified

What's the difference between a mutex and a semaphore? Misuse of these two distinct types of synchronization primitives can lead to difficult to debug defects with potentially severe consequences in safety-critical devices.

Hardware-Software Partitioning in Embedded Systems

One of the biggest challenges when architecting an embedded system is partitioning the design into its hardware and software components, which must typically be decided early in the design of a product.