Some general information on embedded systems. I am only considering ones which run *nix or other F/OSS operating systems. There are a number of categories that these can fall into:
- SBCs - Single Board Computers - everything on one board
- Appliances - built to serve one special puropse
- Industrial PCs - mainly PC/104-style SBCs, they're built for industrial purposes like process automation.
This is how I generally think of embedded system hardware:
- Micro - really tiny stuff for specialized jobs, one step above a microcontroller.
- Appliance - These have minimum I/O connections and memory/processor speed, generally with some sort of networking (Ethernet), RS-232, and some other stuff. Good for network appliances and minimal embedded systems interfacing with the real world.
- Rich UI - incorporating more or less I/O, memory, and processor speed than Appliance types, these feature a rich user interface with some sort of graphical screen. These are typically portable devices.
- Full System - essentially a normal PC but embedded in terms of size, having full I/O including video, audio and possibly hard drive and others.
- Specialized - Something that doesn't fit into the other categories, and intended or mostly used for a specialized application.
This is a listing of some hardware that's purpose-built to run *nix operating systems.
- CDatas - an entire computer on a CF card.
- Gumstix - embedded systems the size of a stick of gum, and reasonably priced.
- Soekris SBC's - specially designed for network applications such as firewalls, routers, etc. Offer models purpose-built as WiFi access points. Good software support. Mix of models with CF card slots, Mini-PCI slots, IDE attachment, USB, Ethernet, fill PCI slot, GPIO, and serial.
- PCengines manufactured the popular (now discontinued) WRAP, which has been replaced by the ALIX - a high-powered SBC running about $150 USD (07-2007). They also have many accessories available, and their boards are used in many 3rd party products.
- DisklessWorkstations.com sells a number of units intended to be think clients, including the LTSP Term 1000 PXE, which appears to be built on the EWayCo/NorthTec system, and includes CF, USB, Audio in/out, Ethernet, VGA, PS/2, and serial.
- EWayCo, a Taiwanese company, makes many embedded systems including the TU, a $99 07-2007) tiny box that includes USB, Ethernet, WiFi, Video, Audio, USB, Serial, PS/2, and runs Windows, DOS, or Linux.
- NorthTec.com - the MicroClient Jr., seemingly the same item as the EWayCo TU and running about $150 07-2007).
- Zonbu Box, $99 (07-2007).
Systems designed to be mounted in a vehicle and run off the battery:
- Neuros makes the Neuros OSD, a set-top box perfect for MythTV, complete with S-Video, monitor, IR, and audio connections.
Hardware that's "hackable", i.e. was built for some specific purpose or software package, but can be made to run something else.
- Some common routers can be made to run a customized version of Linux, as many already do.
- Nokia 770 Internet Tablet - small color screen tablet with a host of networking features.
- HP Jornada series PDA/computers - handheld computers, like a miniature laptop with full keyboard. PCMCIA card slots, networking, and supposedly good support under some customized distros.
- Sony PlayStation3 (PS3) - a game console that can run linux. High-end processor, graphics, and audio. Can even play BluRay disks, supposedly. Wikipedia.
There seem to be a myriad of pre-packaged distributions that will work easily on the Soekris, mostly based on Linux or Free/OpenBSD. There is also the option of "rolling your own", from an existing distribution with build scripts.
While a pre-built distro worked fine for my m0n0wall router/firewall based on a Soekris net4501, my project to use a net4826 as an access point didn't seem to have any pre-built options that were available and optimal.
m0n0wall is definitely the leader in pre-built packages. It's good software, but I have one major complaint: there's no way to get access to a shell.
Small and live Unix distributions List
Embedded FreeBSD Project provides FreeBSD build scripts for embedded systems, but you need a FreeBSD host.
TinyBSD is another set of FreeBSD build scripts.
Damn Small Linux
uCLinux - a project for small embedded systems and microcontrollers.
Pyramid Linux, the successor to Pebble Linux.
Rolling Your Own
minibsd HowTo for making smaller BSD installations.
FreeBSD on Soekris
Ultradesic Soekris page
FreeBSD 4.8 on net4801
FreeBSD on the net4501
FreeBSD Wireless Router HowTo
FreeBSD 5.2.1 on net4801
FreeBSD on Soekris Hardware including GPIO and LCD info.
Here are a few tiny web servers, which may be useful for embedded systems. All are open-source:
Boa - 120Kb. No SSI or authentication.
thttpd - 129Kb - mainly designed for serving static content
Hiawatha - 180 Kb - supports SSL, FastCGI, and much more.
lighthttpd - 127Kb - FastCGI, SSL, chroot, mod_rewrite, SSI, rrdtool support, LDAP auth support
shttpd - 40Kb - CGI, SSL, SSI, inetd mode, Digest (MD5) auth, ACLs, virtual hosts, NOT uClibc friendly.
GoAhead - 800Kb, little information on their site.
AntiWeb HTTPD / AWHTTPD - unknown size, no concise information on features.
KLone - 464Kb - according to the site, "KLone is a fully-featured, multiplatform, web application development framework, targeted especially for embedded systems and appliances.". GPLv2.
(sizes are from Wikipedia.)
LinuxDevices.com - A great general reference site for linux-powered devices or devices which will run Linux, including embedded systems, phones, and SoC (System-on-Chip) units. Includes a (somewhat outdated) listing of devices.