Embedded Systems terminology Flashcards
Common terms and concepts for embedded systems
Term
Definition
~
(not) 1. res. The unary bitwise-NOT operator in C and various related languages. Sometimes confused with the logical NOT operator !, though their functions are very different. Make sure you use the right one; your compiler won’t know to warn you of the error.
EXAMPLE: If 16-bit x is 0x0123, ~x is 0xFEDC; whereas !x is 0 (Boolean false).
- symb. A prefix used on schematic diagrams and in logic equations to indicate active low signals.
µC/OS
(micro-kos) N. A real-time operating system for small microcontrollers. Derived from a two-part expository article in Embedded Systems Programming in May–June 1992, this little RTOS took on a life of its own with the publication of a book-length treatment of the subject by creator Jean Labrosse. Now in the operating system’s second release (µC/OS-II), the revised book includes complete source code and explanations of everything it does. Micrium (link is external) sells licenses for commercial use.
1-Wire
N. A low-cost bidirectional serial communications bus requiring just a single wire to implement. An asynchronous, half-duplex, single-master component bus, 1-Wire minimizes device pin count by using extra on-chip circuitry to enable each 1-Wire component to communicate serially (over a shared connection) with other 1-Wire devices. Compatible serial EEPROMs, A/D converters, temperature sensors, and other devices are available. Electrical features include low data rates (about 16 kbps, max), flexible voltage and timing requirements, long maxium distances (up to 1,000 feet), and optional parasitic powering of slaves. Each 1-Wire device has a unique 48-bit serial number, so multiple slaves can share the same bus.
HISTORY: The 1-Wire protocol was invented by Dallas Semiconductor, which received a related patent prior to its merger with Maxim.
1489
(fourteen eighty-nine) num. An obsolete chip used to receive RS-232 signals. A 1970s part originally from Motorola, the 1489 was a line receiver that translated the +/-15 V RS-232 levels to TTL signals. Now replaced by combined receiver/transmitter chips such as the MAX232 from Maxim.
4004
(four thousand four) num. The first microprocessor. Invented by Intel (a memory company at the time) in 1971, the 4004 was the world’s first general-purpose microprocessor. A far cry from modern processors, the 4004 had a 12-bit instruction pointer, forty six 8-bit opcodes, and sixteen 4-bit registers. The 4004 was a 16-pin DIP part, containing about 2,000 transistors.
68xx
(sixty eight ex-ex) num. A family of 8- and 16-bit microcontrollers from Freescale (nee Motorola Semiconductor). Family members include the 68HC05, 68HC11, and 68HC12.
7-segment display
n. A device that displays all numbers and many letters and symbols via just seven linear segments. Most also have one or two decimal points. The LED version of an 7-segment display comes in both common anode and common cathode configurations, indicating whether each diode’s anode or cathode is connected together. 7-segment LCD displays are also widely used.
There’s no standard for driving LEDs. Some designers drive them directly from the processor’s GPIO pins, connecting each segment to an output pin. This uses more I/O pins but lets the programmer generate any of the possible characters. Others use a driver IC (e.g., 74HC4511), which accepts a 4-bit input, creates a character, amplifies the output, and drives the segments; these limit the possible characters that can be displayed.
To support multi-digit displays, most vendors supply banked 7-segment displays, in which the anodes or cathodes are brought ought individually to pins, and the other terminals–those connected to segments–are all tied together. This supports multiplexing of the display via dedicated hardware or smart software.
8-bit
- adj. Generally used to denote a processor that uses a data bus 1 byte wide. Note that this always refers to the processor’s data bus width. Typical 8-bit CPUs have 16 or 20 address lines.
- adj. Any circuit or algorithm that operates on data 1-byte wide. Examples include 8-bit buffers and 8-bit D/A converters.
8051
(eighty fifty-one) num. An 8-bit microcontroller family. The original 8051 was designed in the late 1970s by Intel. Its many variants are still popular with embedded systems developers and are now available from multiple suppliers. Related chips include Siemens’ 80C517, TI’s TMS370, and the 80251.
8254
(eighty-two fifty-four) num. The programmable counter/timer chip used in the original IBM PC and still emulated to this day.
8N1
(as letters and numbers) abbr. A common flavor of serial communications that features 8 data bits, no parity, and 1 stop bit. Other specifications have the same format, with E and O indicating even and odd parity, respectively. This information is normally coupled with the number of data bits per second, such as 9600 bps or 57.6 kbps. For example, the specification “9600 8E1” means 9600bps serial communications with 8 data bits, 1 even parity bit, and 1 stop bit.
A/D converter
(ay to dee converter) n. A hardware device that reads an analog signal—typically a voltage—compares it to a reference signal, and converts the resulting percentage to a digital value. Short for analog-to-digital converter. Abbreviated ADC. The reference signal represents 100%. An n-bit A/D converter has a maximum value of 2n - 1 and a resolution of Vref/2n.
ABEL
(like Cain’s brother) abbr. A design language for creating the logic to be implemented in a simple programmable logic device. Short for Advanced Boolean Expression Language. Programs created with ABEL are compiled into the binary pattern necessary to create the PLD with a device programmer.
active low
adj. Denotes a logic device or circuit where a logic 1 is a lower voltage than a logic 0.
address bus
n. A set of wires connected to a processor and all of the peripherals with which it communicates, for the purpose of selecting a specific memory location or register within a particular peripheral. If the address bus contains n electrical lines, the processor can address up to 2n unique locations. Address decoding logic between the processor and the devices connected to the bus select the proper device, typically based on the uppermost bits.
aliasing (memory)
- n. Allowing one memory location or register to be accessible at more than one address. Aliasing is a result of address decoding and often happens with peripheral control and status registers. For example, if an I/O device has just four byte-wide registers but is mapped into a 256-byte region of memory, aliasing will occur. In this case, the same four registers can be read or written at any of 64 different locations within that region.
aliasing (effect)
- n. An effect, because of undersampling, where a time-varying signal appears to be running, at a much lower frequency than it really is. Aliasing is a common effect of using a digital oscilloscope to view fast waveforms, like clocks. If the scope’s sampling rate is low, the perfect 20-MHz clock could appear to be oscillating at 10 kHz.
aliasing (memory location)
- n. Different variables reference the same physical memory location. In languages that support pointers, it is common for a program to maintain multiple references to the same storage. Each of these references is an alias. Aliasing can create problems when optimizing compilers and pipelined processors because it becomes more difficult for them to identify and analyze data dependencies within the program.
analog
adj. Describes data represented by a continuous range of values. The opposite of digital, in which all information is quantized. Analog is the way the world beyond the quantum level works. Part of the challenge of digital engineering is to convert noisy, inaccurate, and ugly real-world data to the pristine purity of 1s and 0s. The last two decades have seen a massive growth in digital signal processors, partly because they allow us to replace analog circuits with digital. Ultimately, the goal is to push the digital components all the way back to all systems’ front ends–essentially connecting a radio’s antenna, for example, directly into a DSP input.
anode
n. The element of a semiconductor device that accepts electrons. In a diode, for example, current passes from the anode to the cathode. On a diode, the anode is the terminal not marked by a band.
aperiodic
adj. Lacking periodicity; random. The term is most often used in the embedded context when scheduling periodictasks via RMA. The issue of what to do about aperiodic tasks and interrupts inevitably arises in real-world systems. Aperiodic tasks become ready to run on the occurrence of unpredictable events.
EXAMPLE: The arrival of interrupts is often aperiodic.
aperiodic server
n. A task that responds to events of an application software
n. Software that is specific to a particular embedded system. Such application-specific code is generally built on a layered architecture of reusable components, such as a real-time operating system and network protocol stack or other middleware. If there is no such architecture, then this term may not be used. The application software is unlikely to be reusable across embedded platforms, simply because each embedded system has a different application.
application-specific integrated circuit (ASIC)
n. A piece of custom-designed hardware in a mass-produced chip. Abbreviated ASIC.
Ariane 5
n. An infamous European rocket (made by Aerospatiale) that demonstrates the flawed principle of redundancy based on duplicated software. Unlike hardware subsystems, which either work or fail and can be made more reliable through duplication, software is either right or wrong in its logic. If software fails once, it will fail again given the same inputs; merely duplicating the code does not add redundancy.
In the case of Ariane 5, some code borrowed form the successful Ariane 4 design experienced an overflow during flight. Recognizing the overflow, the primary controller shut itself down and the secondary controller took over. Unfortunately the secondary controller experienced the very same overflow condition and shut down as well. The rocket self-destructed in midair, taking some very expensive cargo with it.
ARM
(like your arm) abbr. A 32-bit RISC processor widely used in low-power embedded applications. Short for Advanced RISC Machine.
HISTORY: The ARM design was started in 1983 as a project at Acorn Computer Group (link is external). After being refused access to the upcoming Intel 80286 for newer generations of their computer line, they responded by starting up a team to design and build a new CPU. When launched in 1985, the chip was the first commercial RISC processor.
DEC later licensed the design and produced the StrongARM. This work was later passed to Intel as part of a patent-related settlement, and Intel took the opportunity to replace their ailing i860 and i960 designs with the StrongARM. Today these are known by the name XScale
ARM Thumb
n. A 16-bit variant of the 32-bit ARM instruction set. ARM processors that support the Thumb instruction set can be switched in and out of “Thumb mode” via a bit in a register. Once in the Thumb mode, the CPU fetches special 16-bit instructions from memory. The advantage of these instructions is that they can be fetched more quickly across a narrower data bus and consume less memory. Not all of the ARM’s capabilities are supported in Thumb mode, however.
ARP
(rhymes with harp) abbr. A mechanism for mapping a destination IP address to its corresponding MAC address so that an IP packet can be routed over a specific physical network such as Ethernet. Short for Address Resolution Protocol. RFC 826.
Each node on a network has both a logical (IP) address and a physical (MAC) address. When sending a packet to a specific node, the application software provides only the IP address. The protocol stack, via ARP, must determine the specific MAC address for that IP address before it can finalize and send the network frame that will contain the IP packet. In practice, it is inefficient to make ARP requests and receive replies before each packet is sent, so a table is kept (typically at the network driver) of all the known IP-MAC address pairs. Only if the MAC address of a particular destination IP address cannot be found in that table is the ARP protocol invoked. The results are added to the table then so they can be used later.
assembler
n. A software development tool that translates human-readable assembly language programs into machine-readable code that the target processor can understand and execute.
USAGE: Assembler also can mean assembly language, as in, “I wrote that part of the code in assembler.”
assembly language
n. A human-writable form of a processor’s native instruction set. In its typical form, each line of assembly code represents a single CPU instruction. The human-readable representation of each opcode is called a mnemonic.
asynchronous communications
n. A communications scheme that transmits data over a single wire, sending bits one at a time in sequence. The timing of each bit is known by both transmitter and receiver. Each transmitted data byte begins with a start bit that starts the receiver’s timing circuitry. Critical to the success of asynchronous communications is that the data bits have well-defined widths.
EXAMPLE: The best known asynchronous communications scheme is RS-232.
atomic
- adj. An operation that cannot be interrupted is considered atomic. Atomic operations are inherently reentrant; they complete without fear of preemption or corruption by other tasks. A single opcode that does a read-modify-write, for instance, modifies a shared variable without the risk of an intervening interrupt causing the variable to be used in a half-changed state. Software developers can turn non-natomic operations into atomic ones by disabling interrupts. See also swap, test-and set.
- adj. Used to indicate measurements scales. Atomic scales are on the order of angstroms
ATVEF
(at vef) abbr. A standard for creating enhanced, interactive television content and for delivering that content to a range of television, set-top, and PC-based receivers. Short for Advanced TV Enhancement Forum. ATVEF defines the standards used to create enhanced content that can be delivered over a variety of media, including analog (NTSC) and digital (ATSC) television broadcasts, and a variety of networks, including terrestrial broadcasts, cable, and satellite. It is based on HTML.
average-case execution time
n. The average amount of time to execute a section of code. It may be helpful to define the jitter and standard deviation along the average-case execution time might be interesting in some applications, the worst-case execution time is typically of far more interest, particularly in real-time systems.
BASIC Stamp
N. A tiny single-board computer manufactured by Parallax based on an 8051, PIC, or other microcontroller. The BASIC Stamp is about the size of a postage stamp (hence the name) and executes a variant of BASIC called PBASIC. Inexpensive, self-contained, and easy to program, they’re used in education and simple embedded systems that require little horsepower but rapid delivery.
bidirectional
adj. Describes a type of device or bus that supports two-way data transfers. To reduce wiring, connectors, and pin counts, it’s common to share data on one bus. Data can move from device A to B or from B to A, though not at the same time.
EXAMPLE: A bidirectional data bus is present on pretty much every microprocessor. A single bus transfers data to and from memory and I/O. Control signals police the transfers, ensuring that there are no attempts to transfer data in both directions at the same time.
Contrast with unidirectional.
big-endian
adj. A data representation for a multibyte value that has the most significant byte stored at the lowest memory address. Note that only the bytes are reordered, never the nibbles or bits that comprise them. Every processor stores its data in either big-endian or little-endian format. Sun’s SPARC, Motorola’s 68k, and the PowerPC families are all big-endian. The Java virtual machine is big-endian as well. Similarly, every communications protocol must define the byte order of its multibyte values. TCP/IP uses big-endian representation.
binary semaphore
n. A type of semaphore with just two states. Often used to guarantee mutual exclusion.
board support package (BSP)
n. Part of a software package that is processor or platform dependent. Abbreviated BSP. Typically, sample source code for the BSP is provided by the package developer. To port the larger package, only the code in the board support package must be modified. Most commercial real-time operating systems have a BSP to make porting easy.
bond-out processor
n. A special version of a processor that has some of the internal signals brought out to external pins. Bond-out processors are designed to be used within an in-circuit emulator and are not typically used in any other kind of system.
breakpoint
n. A location in a program at which execution is to be stopped and control of the processor switched to the debugger. Mechanisms for creating and removing breakpoints are provided by most debugging tools.
Busicom
N. A Japanese company that, in 1971, used Intel’s new single-chip 4004 processor to create what were arguably the world’s first embedded systems: a family of 12 business calculators.
busy wait
v. To waste precious CPU cycles polling.
C99
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.
central processing unit
n. The part of a processor that executes instructions.
checksum
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.
compiler
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.
complex instruction set computer (CISC)
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.
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. A CPLD is typically a single-chip collection of PLDs plus a switch matrix.
context
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.
copyright
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.
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.
counter/timer
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.
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.
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.
cross-compiler
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.
cybersecurity
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.
D/A converter
(dee to ay converter) n. A hardware device that takes a set of bits, typically from a processor, as input and produces an analog signal proportional to the digital input as output. Short for digital-to-analog converter. Abbreviated DAC. D/A converters might be as simple as an array of resistors configured in the typical “R-2R” fashion or a hybrid module that generates very precise results with many bits of resolution. A simple use is to vary the intensity of a lamp (another approach that avoids the messy analog world is a pulse-width modulator that uses different switching rates and pulse lengths to control intensity).
data bus
n. A set of electrical signals connected to the processor and all of the memory and peripheral devices with which it communicates for the purpose of transferring data between them. When the processor wants to read (write) the contents of a memory location or register within a particular peripheral, it sets the address bus pins appropriately and receives (transmits) the contents on the data bus. One unit of data is transferred in each memory cycle.
deadline
n. In a real-time system, the time at which a particular set of computations or data transfers must be completed. There are typically consequences associated with missing a deadline. If the deadline absolutely, positively must be met every time or else, it is called a hard deadline. Hard deadlines have dire consequences when missed. Other deadlines are said to be soft deadlines.
deadlock
n. An unwanted software situation in which an entire set of tasks is blocked, waiting for an event that only a task within the same set can cause. If a deadlock occurs, the only solution is to reset the involved set of tasks or the entire system. However, it is usually possible to prevent deadlocks altogether by following certain software-design practices. Consult an operating systems textbook for details. A key condition for deadlock is a circular wait.
debug monitor
n. A piece of embedded software that has been designed specifically for use as a debugging tool. It usually resides in ROM and communicates with a debugger via a serial port or network connection. The debug monitor provides a set of primitive commands to view and modify memory locations and registers, create and remove breakpoints, and execute your program. A remote debugger with knowledge of the command format communicates with the debug monitor and combines these primitives to fulfill higher-level requests like program download and single-step.
debugger
n. A tool used to test and debug software. A typical remote debugger runs on a host computer and connects to the target through a serial port or over a network. Using the debugger, you can download software to the target for immediate execution. You can also set breakpoints in the code and examine the contents of specific memory locations and registers.
device driver
n. A software module that hides the details of a particular peripheral and provides a high-level programming interface to it. Each device driver is typically a piece of operating system-specific software that makes it possible for application software to attach to, read and write data from, and change the behavior of the peripheral device. The more complex the operating system environment, the more likely it is that the device driver code will have to conform to a certain high-level API. For example, Windows and Unix both require every network device driver to conform to a common API.
device programmer
n. A tool for programming EPROMs, PLDs, nonvolatile memories, and other electrically programmable devices. Typically, the programmable device is inserted into a socket on the device programmer, and the contents of a memory buffer are then transferred into it. So-called gang programmers create several devices from the same image simultaneously.
digital filter
n. A filter that’s implemented digitally. A digital filter accepts digital inputs (typically samples read from an A/D converter) and produces digital outputs. The data is processed in firmware running on a digital signal processor.
digital signal processor (DSP)
n. A device that is similar to a microprocessor, except that the internal CPU has been optimized for use in applications involving discrete-time signal processing. Abbreviated DSP. In addition to standard microprocessor instructions, DSPs usually support a set of specialized instructions, like multiply-and-accumulate, to perform common signal-processing computations quickly. A Harvard architecture, featuring separate code and data memory spaces, is commonly used to speed data throughput. Common DSP families include Texas Instruments’ 320Cxx and Motorola’s 5600x series.
digital signal processing
n. Whether involving a DSP or not, the work of digital signal processing experts is to communicate and compress audio and video data.
direct memory access
n. A technique for transferring data directly between two peripherals (or memory and an I/O device) with only minimal intervention by the processor. Abbreviated DMA. DMA transfers are managed by a third device called a DMA controller, which shares the memory bus with the processor. Unused memory cycles are stolen by the DMA controller. The processor is only involved, via an interrupt, once the entire block of data has been transferred. In that way, the processor is freed to do other things and overall throughput is increased.
down counter
n. A counter that counts down, from its maximum value toward zero.
Contrast with up counter.
DRAM
(dee ram) abbr. A type of RAM that maintains its content only as long as the data stored in the device is refreshed at regular intervals. Short for Dynamic Random Access Memory. The repetitive row by column refresh access cycles are usually performed by a peripheral called a DRAM controller. If this isn’t done every few milliseconds, some or all of the data stored in the memory can be lost. DRAM is much cheaper per byte than SRAM because it requires just one transistor per bit rather than four to six; however, it has longer access times. DRAM’s lower cost per byte makes it attractive whenever large amounts of RAM are required. Many systems include both types: a small block of SRAM (a few kibibytes) along a critical data path and a much larger block of DRAM (mebibytes perhaps) for everything else.
EEPROM
(double-ee prom) abbr. A type of ROM that can be erased electronically and reprogrammed in-circuit (or with a device programmer). Short for Electrically Erasable Programmable Read Only Memory. From the programmer’s perspective, EEPROM is very similar to flash memory. The biggest difference is that the bytes (words) of an EEPROM can be erased individually.
electromagnetic spectrum
n. The entire range of possible frequencies, from DC to gamma rays and beyond. The spectrum is measured in terms of wavelength or frequency, where wavelength in meters = 3 × 108/frequency in hertz. AM radio is at the low end of the spectrum, from 500 kHz to 1.6 MHz; FM radio is around 100 MHz, cell phones at 800 MHz, radar from 2 to 14 GHz, and visible light around 106 GHz.
embedded C++
n. A subset of the C++ programming language that is optimized for embedded systems use and supported by some compiler vendors. Abbreviated EC++.
embedded system
n. A combination of computer hardware and software, and perhaps additional mechanical or other parts, designed to perform a dedicated function. In some cases, embedded systems are part of a larger system or product, as in the case of an antilock braking system in a car.
emulator
n. Any debugging tool that pretends to be a system resource and adds additional functionality or remote visibility.
endianness
n. The attribute of a hardware or software architecture that indicates how multibyte values are represented and stored. The two possibilities are called big-endian and little-endian.
EPROM
(ee-prom) abbr. A type of ROM that can be erased by exposing it to ultraviolet light. Once erased, an EPROM can be reprogrammed with a device programmer. Short for Erasable Programmable Read Only Memory. A window in the device allows ultraviolet radiation to enter the device and reset the ROM circuitry to its initial state.
executable
n. A file containing object code that is ready for execution on the target. All that remains is to place the object code into a ROM or download it via a debugging tool.
expert witness
n. An expert witness is a person, such as a professor, who writes an expert report and testifies in court cases based on his expertise in a particular field. Types of litigation requiring testifying software experts include patent infringement and invalidity, product liability, and software copyright and trade secrets theft.
field-programmable gate array (FPGA)
n. A logic chip that has thousands of internal gates and can be programmed. Abbreviated FPGA. FPGAs are especially popular for prototyping integrated circuit designs. However, once the design is finalized, hard-wired chips called ASICs are often used instead for their faster performance and lower cost.
firmware
n. Executable software that is stored within a ROM.
USAGE: This term is interchangeable with embedded software and sometimes is used even when the executable is not stored in ROM.
flash
v. To download new firmware into a flash memory. A bootloader typically facilitates this process by communicating with a program on the host, erasing the flash memory, and writing the new code. The sector of the flash memory that contains the bootloader’s code must not be overwritten in the process.
flash memory
n. A RAM-ROM hybrid that can be erased and rewritten under software control. Abbreviated flash. Flash is an in-circuit programmable nonvolatile memory segmented into blocks called sectors. Each sector can be individually erased, then the data within it rewritten. Flash memory is common in systems that require nonvolatile data storage at very low cost. In some cases, a large flash device can be used instead of a disk drive. Although there is a theoretical limit to the number of times a flash memory can be erased and rewritten successfully, this limit is seldom reached in practice.
Forth
N. A niche programming language originally designed for real-time control of telescopes. An ANSI standard since 1994 (X3.215). Forth has a simple syntax and many keywords, unlike C/C++ and similar languages, which are the opposite. Forth programs are made up of many small procedures, and math is via RPN. These procedures are compiled, though Forth has no compiler in the traditional sense. Forth is essentially just a collection of procedures, called words, and an interpreter.
Nowadays, Forth is used primarily to test and debug hardware and bring up systems. Only about 2% of the subscribers of Embedded Systems Programming reported using Forth regularly in a 2001 survey.
Interestingly, some Unix workstations boot a small Forth interpreter before the rest of the operating system. One such environment is Sun’s Open Boot, which provides Forth programming capabilities right out of ROM and a small bootloader that enables the operating system to be manually or automatically loaded and run from a disk drive or over a network. IEEE 1275 defines a standard based on Open Boot.
freeware
n. Shareware that is distributed without payment expectation.
free software
n. Software that is distributed free of charge along with or as source code, so that users can modify the software as they wish.
fuzzy logic
n. A methodology that makes it possible to make decisions based only on ambiguous or imprecise input data. Fuzzy logic can be implemented in software or hardware. As a first step, the possible inputs are grouped into sets. Decisions are then made based on the partial membership of inputs in these sets (according to fuzzy set theory), rather than the specific values of the input signals. The overlap of these partial set memberships results is a specific decision.
geartooth Hall effect sensor
n. A Hall effect sensor and a magnet packaged together for easy use in detecting the rotation of a gear. As each geartooth passes by the sensor, a pulse is output. A counter can be connected to count these pulses and software can then determine the speed of the gear’s rotation.
general-purpose computer
n. A combination of computer hardware and software that serves as a general-purpose computing platform. PCs, Macs, and Unix workstations are the most popular modern examples. Contrast with embedded system. See also basic input/output system.
general-purpose I/O (GPIO)
n. Customizable input/output pins on a microcontroller. Abbreviated GPIO. By wiring the hardware appropriately and configuring the GPIO port in software, one pin can be used as input to read a switch, another as an output to control a status LED, and a pair to serve as clock and data for a serial EEPROM.
glitch
n. An unwanted, spurious logic pulse of very short duration. Any unwanted, erratic, and generally nonreproducible behavior of a system is termed a glitch. Most result from poor timing or bad combinatorial design.
A glitch is also the standard excuse for a single irreproducible failure. Experienced developers know that the phrase, “It must’ve just been a glitch,” really means, “I have no idea what just happened, but maybe if I ignore it, the problem will go away.” Unfortunately, it seldom does.
glue logic
n. The address decoding and other messy circuitry (or programmable logic) that ties together a system. It’s called glue logic because it’s what holds the entire system together.
GNU General Public License (GPL)
n. A specific set of copyright terms associated with free software from the GNU Project and other organizations.
GNU tools
n. A broad generic name for the popular GNU compiler (gcc), debugger (gdb), binutils, and related software development tools.
Gray code
N. Any of several possible mappings of the integers from 0 to 2n-1 to a set of n-bit binary values such that only 1 bit differs between each successive binary value. The mapping that’s typically used is formally known as binary reflected Gray code. Generating a set of that form involves starting with 0…000b and always flipping the rightmost bit that will give a new value.
Applications abound. Consider a shaft encoder with a 4-bit parallel output. Encoders use brushes or optical techniques to report position; these are mechanical and, therefore, imperfect implementations. An encoder that outputs normal binary, if positioned between 3 (0011b) and 4 (0100b), might dither with 3 bits changing. The processor might read (serially) 0011b (3), 0100b (4), or 0111b (7)—the latter a hugely incorrect value. If a Gray code is used, the data will dither between 0010b (3) and 0110b (4); the only possible values seen by the computer are those two, both of which are off by one from each other, and either of which is a reasonable approximation of the position.
heap
n. An area of memory used for dynamic memory allocation. Calls to malloc() and free() and the C++ operators new and delete result in run-time manipulation of the heap. In Java, there is a heap and a new keyword, but no way to manually free the space. A garbage collector does that automatically.
high-level language
n. A language, such as C, C++, Ada, or Java, that is processor independent. Abbreviated HLL. When programming in a high-level language, it is possible to concentrate on algorithms and applications without worrying about the details of a particular processor.
HISTORY: The first high-level language (Fortran), when invented in the 1950s, was criticized as generating slow and bloated machine code. Despite a half century of progress in language and compiler design since then, many still wage code bloat versus programmer efficiency flame wars.
host
n. A general-purpose computer that communicates with the target via a serial port or network connection.