All about Linux-friendly Single-Board Computers
Early microcomputers typically consisted of a half dozen (or more) circuit boards--plugged into a backplane--that implemented the central processor unit (CPU), memory, disk controllers and serial/parallel port functions. These backplane-based microcomputers were used for data acquisition, process control and R&D projects, but were generally too bulky to be used as the intelligence embedded within devices.
By the early 1980s, integrated circuit (IC) technology had advanced to where functions that previously occupied entire circuit boards could be crammed into single, large-scale integration (LSI) logic chips. LSI chips for CPU, memory, storage and serial/parallel ports now made it practical to implement complete microcomputer systems on a single board--without backplanes. The Z80-based ``Big Board'' (1980) was probably the first such single-board computer (SBC) that was capable of running a commercial disk operating system (CP/M).
Like the Big Board, the ``Little Board'' (Ampro, 1983) used a Z80 CPU and was targeted specifically at the CP/M operating system, but it was much smaller in size, matching the footprint of a floppy disk drive (5.75" x 8.0"). Thanks to its unique combination of compactness, simplicity, reliability and low cost, the Little Board made it practical for a commercial disk operating system to be easily embedded directly within devices that were not themselves computers.
Thus was born the embedded SBC market, which by now has become crowded with hundreds of SBC manufacturers producing thousands of different SBC products that target a vast array of embedded and dedicated computing applications.
Initially, every SBC product was completely unique--both architecturally and physically. This was largely due to the inherent diversity of embedded system requirements, combined with the wide assortment of processors and peripheral controllers that were available. Moreover, there were no standards to influence SBC developers' choices of functional and mechanical specs.
By the mid-1980s, there was growing interest in IBM-PC compatibility in embedded and other nondesktop applications, for two key reasons:
Hardware leverage--PC chipset and peripheral compatibility could produce systems that were cheaper, simpler and easier to support.
Software leverage--PC compatibility could make it possible to take advantage of their operating systems (first MS-DOS, then Windows), languages, tools and application software.
Some of the resulting PC-compatible microcomputers were based on the form-factor of the IBM PC (ISA bus) plug-in card. Others were implemented as standalone (nonbackplane) systems on a single board. Still others were adaptations of popular industrial backplane buses (STD, VME).
In the case of embeddable-nonbackplane SBCs, the trend toward PC-compatibility quickly became a stampede. Consensus also emerged around several popular form-factors:
Little Board (5.75" x 8.0")--complete systems on a single compact board, expandable with plug-on function modules.
ISA ``slot boards'' (full-length, 13.8" x 4.8"; half-length, 7.1" x 4.8")--SBCs in the IBM PC plug-in card format, which, though backplane-oriented, could also function as standalone SBCs (without backplanes).
PC/104 modules (3.6" x 3.8")--compact, rugged, self-stacking modules featuring a reliable pin-and-socket, board-to-board expansion bus. With the coming of PCI, these were joined a decade later by the PC/104-Plus, which consisted of PCI being added to the PC/104, and the EBX, which was a PC/104-Plus added to the Little Board.
Not all SBCs jumped on these popular form-factors. Nor did they all go the PC-compatible (x86/DOS/Windows) route. Throughout the multidecade history of single-board computers there have been, and continue, to be, nonstandard board sizes and processor architectures that target unique application requirements or fill niches not well matched to the standardized form-factors and popular ``Wintel'' (PC-compatible) architecture.
Today, several significant factors seriously challenge the SBC market status quo:
Exploding demand for embedded intelligence--even the tiniest and least expensive products and devices are now expected to have at least rudimentary embedded intelligence. Many also require user-friendly graphical and/or speech interfaces.
Ubiquitous connectivity--there is a growing need for everything electronic to be interconnected, whether wired or wireless. These devices must often be capable of inbound or outbound internet connectivity and must support numerous standardized protocols (such as TCP/IP, PPP, HTTP, FTP).
Evolving peripheral and bus interfaces--although popular interconnection standards can sometimes seem immortal (consider Centronics and RS-232), new interfaces do gradually supplant the old. Nearly two decades after the birth of the PC, the ISA bus has finally been replaced by PCI. USB is now replacing the venerable serial, parallel and PS/2 ports. Ethernet is everywhere and FireWire (IEEE-1394) is beginning to make a strong showing. SCSI never made it to the mainstream in PCs (other than the Apple). We may well stand on the verge of backplane-free systems whose only expansion mechanism is via medium- and high-speed serial interfaces (USB, IrDA, FireWire, Ethernet, etc.).
Application-oriented system-on-chip processors--numerous highly integrated ARM, MIPS, PowerPC and x86-based one-chip systems are being developed to match the specs of a wide array of high-volume and cost-sensitive appliance-like products. Today, these ``application-on-chip'' processors represent tantalizing fodder for a new breed of high-integration, high-performance and highly cost-effective SBCs. Many of these SOCs have abandoned x86 compatibility for the sake of cost/power/integration benefits.
Embedded Linux--in just a few short years, Linux has exploded onto all aspects of the computing scene, offering a low-cost, open-source solution with strong support for open standards, networking, communications, Internet, graphics and more. Despite its origins as a UNIX clone for PCs, Linux now supports as broad a range of processors as any traditional embedded OS. Consequently, full-featured OS support for diverse architectures (beyond x86) has increased dramatically in the last several years, due to the rapidly evolving capabilities and growing architectural neutrality of Linux, resulting in a more level playing field among competing processor architectures.
Considering all these factors, it becomes evident that conditions are ripe for change in the embedded SBC market.
Prior to the time when the embedded SBC market coalesced around the PC architecture and a handful of form-factor standards, it was nearly impossible to locate two SBCs that bore much similarity to each other. The PC architecture brought a degree of order (in several shapes and sizes) to that chaos by serving as a unifying force--a situation that persisted for nearly two decades.
Today, with the established norms being disrupted by new interfaces (USB, FireWire, Bluetooth), architectures (MIPS, PowerPC, ARM) and operating systems (Linux), the embedded SBC market had better prepare itself for a new phase of its life cycle--one that will initially be characterized by a heightened diversity of operating systems, processor architectures, peripheral interfaces and physical form-factors.
Next, we'll create some order amidst the SBC chaos by taking a brief look at available SBCs you can use in your embedded Linux-based systems.
PC/104-Plus Basic Mechanical Dimensions
Ampro's CoreModule/46E combines a full PC architecture and Ethernet interface on a PC/104-compliant module
Originally derived from the form-factor of the MiniModules used to expand Ampro's Little Board SBC, PC/104 has now become one of the most popular embedded system standards. The compact (3.6" x 3.8"), rugged, PC-compatible module standard takes its name from the self-stacking 104-pin pin-and-socket bus that contains the same signals as the ISA bus (PC bus) P1 and P2 connectors. PC/104-Plus adds the PCI bus, using a second (120-pin) board-to-board bus connector. Because PC/104 and PC/104-Plus modules tend to be made from standard PC desktop and (more often) laptop components, most manufacturers of these products claim they support embedded Linux (either directly or via a third-party relationship with an embedded Linux software provider).
By now, PC/104 is so broadly supported that it's not practical to list individual suppliers, of which there are many hundreds worldwide. Instead, we refer you to the following resources that provide PC/104 technical, product and vendor information:
The PC/104 Consortium--a nonprofit trade association devoted to supporting and promoting PC/104 technology. The maintainer of the PC/104 and PC/104-Plus standards, this is definitely the place to start (http://www.pc104.org/).
E-Zine of PC/104 Controlled Systems--a commercial PC/104 portal with PC/104-related news, articles, FAQ and product/vendor listings (http://www.controlled.com/pc104/).
PC/104 Embedded Solutions Magazine--a commercial publication devoted to PC/104-related news, articles and product/vendor information. Subscriptions are free to qualified individuals (http://www.pc104-embedded-solns.com/).
The 5.75" x 8.0" Embedded Board eXpandable (EBX) specification, which was derived from Ampro's proprietary Little Board form-factor, resulted from a collaboration between Ampro and Motorola Computer Group.
As compared with PC/104 modules, these larger (but still reasonably embeddable) SBCs tend to have everything from a full PC on them, including application-oriented interfaces like audio, analog or digital I/O in many cases. Also, it's easy to fit Pentium CPUs, whereas it's a tight squeeze (or expensive) to fit a PC/104 SBC. Typically, EBX SBCs contain: the CPU; upgradable RAM subassemblies (e.g., DIMM); Flash memory for solid-state disk; multiple USB, serial and parallel ports; onboard expansion via a PC/104 module stack; off-board expansion via ISA and/or PCI buses (from the PC/104 connectors); networking interface (typically Ethernet); and video (typically CRT, LCD and TV).
Ampro publishes an EBX whitepaper and the EBX spec. Similarly, Motorola Computer Group maintains an EBX information area where you can find an EBX backgrounder and the EBX spec. See http://www.ampro.com/ and http://www.mcg.mot.com/.
As is the case with PC/104, most EBX SBC manufacturers offer support for embedded Linux on their products, either directly or via a third-party relationship with one of the embedded Linux software providers. Here are a few manufacturers of EBX form-factor SBCs that claim to support Linux:
Motorola Computer Group--http://www.mcg.mot.com
ZF Linux Devices--http://www.zflinux.com
Refer, also, to the PC/104 resources sited previously because EBX is, after all, based on PC/104 technology.
Advantech's ``half biscuit'' form-factor fits a PC, Ethernet and LCD controller in the space of a 3.5-inch disk drive.
Today, a number of companies have begun offering families of PC/104 (or PC/104-Plus) expandable embedded-PC SBCs that are approximately mid-way in size between PC/104 and EBX. Unfortunately, there are currently no standards for these ``half-EBX''-sized boards, so each supplier's product family implements a unique form-factor. Examples include products from:
Though these products lack standardization, they do offer the advantage of being roughly twice the size of PC/104 modules. Consequently, with today's very highly integrated components, they have sufficient space to fit just about all of the functions you're likely to want; yet they expand with PC/104 (or PC/104-Plus), so they are modularly expandable. Also, the increased size makes it more practical (and less expensive) to include a real Pentium-class CPU than is the case on a PC/104-sized SBC if your application happens to need one.
Intrynsic's CerfBoard has built-in Ethernet and a CompactFlash expansion on its rear.
The Axis Developer Board puts the ETRAX SOC on a small embeddable board.
The design of the LART SBC is available under an open license from the Technical University of Delft (The Netherlands).
Just as nonstandard SBCs are somewhat larger than PC/104 modules, a growing number are substantially smaller. Again, no form-factor standards currently exist for this category of SBCs. Additionally, many of these tiny SBCs are based on the new high-integration system-on-chip processors, which often are not x86-compatible. So, PC-compatibility tends to be the exception rather than the rule. Still, despite a lack of compatibility, their excellent integration-to-size ratios make them highly appealing for applications that can't tolerate the size of standards-compliant SBCs because they can save the costly and time-consuming task of designing a custom embedded computer.
Here is a sampling of some small, in some cases tiny, embedded SBCs (PC/104-sized or smaller) that are said to support embedded Linux:
ADS Bitsy--this 3" x 4" SBC is based on a 206MHz Intel StrongARM SA-1110 processor (plus SA-1111 companion chip) and consumes just 450 mW. Includes: serial, USB, audio, digital and analog I/O, a Type II PCMCIA slot, plus a 1024 x 1024 resolution color LCD controller (http://www.applieddata.net/).
Axis Developer Board--a small form-factor SBC based on the 100MHz Axis ETRAX 32-bit RISC system-on-chip processor. It is usable as either an ETRAX evaluation board or as a small embedded computer. Includes: 10/100 Mbit Ethernet, serial, parallel, RTC, 2MB Flash, 8MB DRAM and 2KB EEPROM (http://developer.axis.com/).
CompuLab 486CORE--a tiny (2.9" x 1") PC-compatible SBC based on the AMD Elan SC400. Includes: DRAM, Flash, LCD controller, serial, IrDA, digital I/O, RTC and matrix keyboard controller, plus ISA, VL and PCMCIA expansion buses. Other options include solid-state disk, floppy and IDE drive interfaces, parallel port and Ethernet (http://www.compulab.co.il/).
Embedded Planet RPX Super--physically, this PowerQUICC II-(MPC8260)-based SBC matches the footprint of a PC/104 module (3.6" x 3.8") but is not considered a PC/104 module. Includes: up to 32MB Flash and 128MB SDRAM, 10/100 Ethernet and a PCMCIA Type II slot. Expandable via the PowerPC expansion bus (http://www.embeddedplanet.com/).
intrynsic CerfBoard--a tiny (2.2" x 2.4") SBC based on a 133 or 206MHz Intel StrongARM 1110 CPU. Includes: up to 16MB Flash, up to 8MB SDRAM, 16 digital I/O lines, 10MB Ethernet, USB, serial port, audio CODEC, LCD interface and CompactFlash+ socket (http://www.intrinsyc.com/).
JUMPTec DIMM-PC/486--a ``DIMM form-factor'' (2.7" x 1.6") 66MHz 486-based PC-compatible SBC. Includes: 16MB Flash and 16MB DRAM memory, plus interfaces for serial, parallel, floppy and IDE (http://www.jumptec.de/).
LART--an ``open licensed'', small SBC (4" x 3") design from the Technical University of Delft (The Netherlands). It is based on a 220MHz Intel SA-1100 StrongARM and includes: 4MB Flash and 32MB DRAM memory, serial and parallel ports, and bus expansion. Expansion boards provide: Ethernet, USB, keyboard, mouse, touch input and video (http://www.lart.tudelft.nl/).
Lineo µCsimm--a ``SIMM-sized'' (3.5" x 1") 2.7 MIPS DragonBall-based SBC. Includes: 2MB Flash, 8MB DRAM, 21 digital I/O, serial, I2C/SPI, 10MB Ethernet and a 640 x 480 resolution LCD controller (http://www.lineo.com/products/ucsimm/).
SSV DIL/Net--a tiny (3.2" x 1.1") networked PC-compatible SBC based on an AMD Elan SC410 that plugs into a standard 64-pin JEDEC dual-row socket. Includes: 2MB Flash, 8MB DRAM, serial, digital I/O, watchdog timer and 10Mbps Ethernet (http://www.ssv-embedded.de/).
TQ-Components TQM850--a tiny (2.1" x 1.8") SBC based on a 50MHz Motorola PowerPC MPC850. Includes: up to 8MB Flash and up to 64MB SDRAM, plus dual-serial and dual-CAN (field bus) interfaces. Expands via 120-pin board-to-board connector on bottom (http://www.tqc.de/).
These days, most manufacturers of PC-compatible, single-board computers claim to support embedded Linux on their products. However, be careful not to get too complacent when the sales rep says, ``Sure, we support Linux.''
In general, Linux support for PC-compatible embedded SBCs tends to be straightforward, provided the chipsets are mainstream, current and used in the normal manner. Always ask the SBC vendor what specific versions of Linux they have tested, how they conducted the tests, which interfaces on the SBC were exercised and what functions are either untested or unsupported.
Specific, areas to watch out for include:
Display controller modes beyond VGA
LCD panel control signals
Onboard solid-state disks
Nonstandard functions like watchdog timers, digital I/O and analog I/O
Ethernet (in some cases)
Knowing that Linux drivers or in-kernel support exists for the chips used is encouraging but not sufficient. SBC manufacturers often take shortcuts to save money or board space and, in the process, may unwittingly sacrifice compatibility. In short, there's no substitute for testing!
Fortunately, if you are using Linux in your embedded SBC-based system, you can at least take heart in the knowledge that driver source code is readily available, and plenty of Linux-aware programmers are around who can help you untangle any problems that may arise.
In light of the rapidly diverging shapes, sizes and architectures for embedded system single-board computer platforms, and recognizing the growing importance of Linux to the embedded market, LinuxDevices.com now maintains a continually updated quick reference guide to Linux-friendly embedded SBCs that is intended to help developers locate suitable components. Visit http://www.linuxdevices.com/articles/AT2614444132.html/.
Rick Lehrbaum (email@example.com) created the LinuxDevices.com ``embedded Linux portal'', which recently became part of the ZDNet Linux Resource Center. Rick has worked in the field of embedded systems since 1979. He cofounded Ampro Computers, founded the PC/104 Consortium and was instrumental in launching the Embedded Linux Consortium.