N. A 1999 update to the international standard for the C programming language. The updated standard is formally known as ISO/IEC 9899: Programming Languages—C. From an embedded systems programming perspective, one of C99's most exciting enhancements is built-in definition of signed and unsigned integer data types of 8, 16, and 32 bits. (They are typedef'd as uint8_t, int8_t, uint16_t, etc. in the platform-specific library header file stdint.h.) The C99 standard also recognizes C++-style comments (//) and makes several other long-overdue language improvements.

USAGE: In standard C, the size of primitive types short, int, and long are only loosely defined. On one platform, an int can be 16 bits; on another, 32 bits. For many years, embedded systems programmers have defined their own typedefs for fixed-sized signed and unsigned integers. Finally, standard names were assigned in the C99 updated language standard. If you don't have a C99-compliant compiler and library at your disposal, you can typedef these constants yourself. Now that C99 has standardized their names, we strongly recommend that you make your fixed-size type names comply. [more]

central processing unit

n. The part of a processor that executes instructions.


n. A numerical check value calculated from a larger set of data. A checksum is most often used when sending a packet of data over a network or other communications channel. One checksum formula is a simple addition, with overflow ignored, wherein the bytes of the packet are added together into a variable of a fixed size/width (say, 16 bits) as they are sent. The checksum is typically sent at the end of the packet and used at the receiving end to confirm the integrity of the preceding data. [more]

See also CRC, Internet checksum.


n. A software-development tool that translates high-level language programs into the machine-language instructions that a particular processor can understand and execute. However, the object code that results is not yet ready to be run; at least a linker or link-step must follow.

C compiler steps

A simplified example, showing the results of compiling the contents of two source modules into corresponding object files

complex instruction set computer

n. Describes the architecture of a processor family. Abbreviated CISC. So-called CISC processors generally feature variable-length instructions and multiple addressing formats and have a small number of general-purpose registers. Intel's 80x86 family is the quintessential example of CISC.

Contrast with reduced instruction set computer.

complex programmable logic device

n. A larger, more capable PLD. Abbreviated CPLD. Each CPLD typically consists of several programmable logic blocks plus a matrix of programmable interconnecting paths. CPLDs can be used to create larger and more advanced logic circuits than PLDs but are generally smaller and less flexible than FPGAs. [more]

CPLD block diagram

A CPLD is typically a single-chip collection of PLDs plus a switch matrix


n. The current state of the processor's registers and flags. The context must be saved when an interrupt occurs or when an operating system selects a new task to run and preempts the previously running task.

context switch

n. The process of switching from one task to another in a multitasking operating system. A context switch involves saving the context of the running task and restoring the previously saved context of the other. The piece of code that does this is necessarily processor specific.


n. A type of intellectual property protection for software that protects the unique structure, sequence, and organization of the product, in source code and/or binary form.

See also patent, trade secret.

copyright infringement

n. When a product copies an expression of structure, sequence, and organization (SSO) protected by a copyright, the product is said to "infringe" the copyright. [more]


n. A common peripheral that counts either external events (counter mode) or processor cycles (timer mode). Virtually every microcontroller has one or more on-board counter/timers. Most operate in a vast number of modes; some have dozens of control registers (Motorola's TPU has more than 50).

Counter/timer hardware has more uses than can be imagined, including as input devices to count events, as outputs to drive pulse-width modulation devices, and as internal units to create regular interrupts for RTOS context switching. [more]

counting semaphore

n. A type of semaphore with more than two states. A counting semaphore is typically used to track multiple resources of the same type. An attempt to take a counting semaphore is blocked only if all of the available resources are in use.

See also semaphore.


(as letters) abbr. See cyclic redundancy code. [more] [even more]

critical section

n. A sequence of instructions that must be executed in sequence and without interruption to guarantee correct operation of the software. If the instructions are interrupted, a race condition might occur.


n. A compiler that runs on a different platform from the one for which it produces object code. Often even the processor architecture/family of the host and target platforms differ. [more]


n. Also known as computer security, the field of cybersecurity concerns protection of critical and or personal information through the use of cryptographic protocols and data encryption.