Glossary

Find definitions for technical terms in our Embedded Systems Glossary.

A B C D E
F G H I J
K L M N O
P Q R S T
U V W X Y
Z Symbols

Sign Up Now

Receive Michael Barr's Firmware Update ® newsletter for free how-to articles and industry news by e-mail. Sign up now.

Bookmark It

Bookmark this page or share it with a colleague.

Embedded Systems Articles

Barr Group encourages its engineers to share their technical expertise by writing magazine articles and books and by speaking at industry conferences. Whenever possible, we retain the right to publish these materials in our technical library.

We hope that you will learn something from these public service efforts and be motivated to share your own technical knowledge in a similar manner. But all we really ask is that you respect the copyright notice at the bottom of each page.

Over on the left, you'll find a navigation path to all our articles. Browse by selecting a topic area of interest. Or use the links below.

Newest articles (6)

How to Secure Consumable Components of Medical Devices and Other Embedded Systems

A number of embedded systems, such as medical devices and printers, feature replaceable components designed to be installed new, consumed through one or more cycles of product use, and ultimately disposed. Generally speaking, security is an important issue for designers of such systems. Whether to ensure against the spread of infectious diseases, guarantee a certain level of product reliability, or generate a steady stream of revenues (or some combination), a common security goal is to ensure that third parties and end users cannot clone or recondition consumables. This article describes the security challenges associated with the design of such consumable (a.k.a., disposable) components as well as practical ways to meet these challenges.

Introduction to SAE J1939

SAE J1939 is the standard communications network for sharing control and diagnostic information between electronic control units (ECUs) which reside on heavy duty and commercial vehicles. Examples of such vehicles are school busses, cement mixers, military vehicles, and semi-tractors. Due to its popularity and success, it has been adopted by the agricultural (ISO 11789) and marine industries (NMEA2000).

Bug-Killing Coding Standard Rules for Embedded C

One of the biggest potential benefits of a firmware coding standard is often overlooked: a coding standard can help keep bugs out. It's cheaper and easier to prevent a bug from creeping into code than it is to find and kill it after it has entered. Thus, a key strategy for keeping the cost of firmware development down is to write code in which the compiler, linker, or a static-analysis tool can keep bugs out automatically.

Mutexes and Semaphores Demystified

The question "What is the difference between a mutex and a semaphore?" is short and easily phrased. Answering it is more difficult. In this first installment of a series of articles on the proper use of a real-time operating system (RTOS), we examine the important differences between a mutex and a semaphore.

Minimize Interrupt Service Routine Overhead

With all the automation available today, it's easy for programmers to overlook costly overhead introduced into machine code by the compiler. Interrupt handlers are one key area worthy of a closer inspection.

The Perils of Preemption

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.

Most popular articles (10)

#1 Bug-Killing Coding Standard Rules for Embedded C

One of the biggest potential benefits of a firmware coding standard is often overlooked: a coding standard can help keep bugs out. It's cheaper and easier to prevent a bug from creeping into code than it is to find and kill it after it has entered. Thus, a key strategy for keeping the cost of firmware development down is to write code in which the compiler, linker, or a static-analysis tool can keep bugs out automatically.

#2 CRC Implementation Code in C

CRCs are among the best checksums available to detect and/or correct errors in communications transmissions. Unfortunately, the modulo-2 arithmetic used to compute CRCs doesn't map easily into software. This article shows how to implement an efficient CRC in C.

#3 How to Use C's volatile Keyword

The proper use of C's volatile keyword is poorly understood by many programmers. This is not surprising, as most C texts dismiss it in a sentence or two. This article will teach you the proper way to do it.

#4 Fast Accurate Memory Test Suite

If ever there was a piece of embedded software ripe for reuse it's the memory test. This article shows how to test for the most common memory problems with a set of three efficient, portable, public-domain memory test functions in C.

#5 Mutexes and Semaphores Demystified

The question "What is the difference between a mutex and a semaphore?" is short and easily phrased. Answering it is more difficult. In this first installment of a series of articles on the proper use of a real-time operating system (RTOS), we examine the important differences between a mutex and a semaphore.

#6 How to Choose a Real-Time Operating System

In the market for a commercial RTOS? This article provides an overview of RTOSes and how you can select the best one for your project. It ends with a list of vendors and their products.

#7 Optimal C Constructs for 8051 Microcontrollers

The limitations of an 8-bit microcontroller (MCU) can sometimes make conventional C constructs produce suboptimal code. In this article we look at common problems on the 8051 family and discuss workarounds in C.

#8 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 header file. Learn the typedef names for the new fixed width integer data types, to make hardware interfacing in C easier.

#9 The Perils of Preemption

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.

#10 How Programmable Logic Works

In recent years, the line between hardware and software has blurred. Hardware now engineers create the bulk of their new digital circuitry in programming languages such as VHDL and Verilog. This article will help you make sense of programmable logic.