n. The part of an operating system that decides which task to run next. The scheduler's decision is based on the state of each task, the relative priorities of those that are ready to run, and the specific scheduling algorithm implemented.


n. A data structure that is used for intertask synchronization. Semaphores are usually provided by the operating system and come in two types: binary and counting. The former can be used for mutual exclusion.

See also mutex.


n. Software that is distributed for free, but with a payment expectation. [more]


n. A debugging tool that runs on the host and pretends to be the target processor. A simulator can be used to test pieces of the embedded software before the embedded hardware is available. Unfortunately, attempts to simulate interactions with complex peripherals are often more trouble than they are worth.

software flow control

n. A flow control technique that uses in-band signaling. When a receiver in a bidirectional communications channel is no longer able to process or buffer incoming data, it transmits a special character request to the sender to pause the flow. When it is capable of again receiving new data, it then transmits a different character to the sender to resume the flow.

See also XOFF, XON. Contrast with hardware flow control.

software interrupt

n. An interruption of a program that is initiated by a software instruction. Software interrupts are commonly used to implement breakpoints and operating system entry points. Unlike true interrupts, they occur synchronously with respect to program execution; that is, software interrupts always occur at the beginning of an instruction execution cycle.

source code

n. A program (or part of one) in its original, human-readable form. Any file containing C, C++, Java, even assembly-language code is source code. Barr Group's software expert witness team provides source code reviews and expert reports for product liability, patent infringement, software copyright, and trade secrets theft litigation in the United States and Canada.


(like spy, or as letters) abbr. An inexpensive bus for chip interconnection that is popular on circuit boards. Short for Serial Peripheral Interface. [more]

See also 1-Wire, I2C.


(ess-RAM) abbr. A type of RAM that retains its contents as long as the system is powered on. Short for Static Random Access Memory. Data stored in SRAM is lost when the system is powered down or reset. [more]

Compare to DRAM.


1. n. A list in which elements are always added and removed from the (conceptual) end. A last-in, first-out queue. Stacks are one of the four basic kinds of queues or lists. They are used most frequently to keep track of hierarchically nested processes. They are common in both application- and system-level software. Any processor that implements a call instruction must also support some kind of hardware stack (the run-time stack). Compilers rely on the run-time stack to support function calls and argument passing.

HISTORY: A few processors did exist without hardware stacks, though these antiques are never seen today. RCA's 1802, the first really useful CMOS processor—used in many ultra–low-power apps in the 1970s and early 1980s—did not have a hardware stack. Instead, programmers simulated stacks with code that took a return address in a register and added it to a software-implemented stack.

2. n. The run-time stack associated with a particular thread. In most operating systems (SSX, SST, and Erika are exceptions), each thread requires a separate stack area. When a context switch occurs, the current stack pointer is saved as part of the old thread's context; the stack pointer of the new thread is then restored, thus making that stack active again.

stack frame

n. An area of the stack associated with a particular function call.

startup code

n. A piece of assembly language code that prepares the way for software written in a high_level_language. Most cross-compilers come with startup code that you can modify, compile, and link with your embedded programs. Startup code usually initializes code and data segments, safes I/O, and sets up chip selects and wait states.

C startup code

The world before main()