Notes on PC/104 Hardware for FreeBSD
PC/104 (or PC-104 or PC104) is a standard for small (4 inch square) stackable PC-compatible hardware. You stack together a CPU card and various other peripheral cards. Electrically it's ISA-bus compatible. There's also a PCI-bus version called PC/104 Plus.

CPU

My current favorite CPU board is the Diamond Systems Morpheus. It has a 650 MHz Celeron processor, dual 10/100 Ethernet. It has worked well with FreeBSD 4.11 and 5.4. It costs around $530 complete with 512 MB of RAM and a nicely made cable kit. The board itself appears to be a relabeled version of the Arbor EmCORE-i613.

Another good one is the Lippert Cool Runner III which you can get with a 933 MHz Celeron. The fan and heatsink push the size envelope a bit -- I had to trim the ends of the pins sticking down from the board above -- but it has excellent performance at a somewhat higher price point ($1000) than the Morpheus. I've used it with both FreeBSD 5.4 and 6.2. It has onboard 10/100 Ethernet, USB, and a good video system.

My previous favorite was the Lippert Cool EcoRunners available from stock from WDL Systems. It's about as fast as a 300 MHz Pentium with MMX, and about 8 times slower than my 2.2 GHz Pentium 4. FreeBSD 4.11 and 5.4 run well on it. It has 2 fast ethernet interfaces, USB, serial, parallel, VGA, IDE, a flash drive slot, and a few others. It's larger, and about 40% as fast, as the Morpheus. One of the 4 boards I have in operation locks up every few days.

Beware that there are a lot of really slow PC/104 CPU cards out there, with 16 MHz 80386SX performance. I've never seen a manufacturer give any benchmark results, so you have to guess based on the chipset and megahertz.

Peripherals

For controlling small lamps and relays i use the Mesa 4I20. It's cheap ($150) and easy to use, and powerful enough to drive lights and small relays. Their 4I22 is an 8255-based 24-bit IO device, also pretty easy to use. You can't order online, but they do ship quickly.

For serial I/O I use the ConnectTech Xtreme/104 8-port serial card which you can get from WDL Systems. It's an AST-compatible card, basically a bunch of 16550A chips with 64-byte FIFOs. Look at man sio(4) for FreeBSD configuration tips. It handles either RS-232 or RS-422. There's a jumper on it which disables the prescaler allowing much higher bit rates, but FreeBSD doesn't know about it and will give bit rates 4x higher if you try to use it. Don't forget to order the DB9 cables with it.

Most PC/104 cards have a pin header coming out the side, to which you attach a ribbon cable. For prototyping, it's handy to have a screw terminal breakout board, like this one from Newark or this one from Diamond Systems which fits into the PC/104 stack.

For analog input I use the Diamond Systems DMM1612. It has 16, 12-bit inputs. For analog output I use their Ruby1612, with 16 12-bit outputs. You can almost order online, but you have to talk to someone to finish the process.

I also use an optical quadrature encoder, the MSIP400 from Microcomputer Systems. You have to phone in your order, but they seem to ship in a few days.

Power

For power I use the HE-104-512 from Tri-M. You give it any reasonable battery voltage and it generates nicely regulated +5 and +12 voltages right onto the PC/104 bus. If you don't use +12 volts, there's a good reason not to have it. The reason is that the +12v pin is right next to the data bus on the PC/104 connector in such a way that it's very easy to short the two and burn things out. I have four toasted cards from two separate incidents to prove it.

Physical Mounting

It's surprisingly hard to mount cards well. I've tried several mounting systems, and what I like best is the metal rails from Parvus. You need a set of rails of whatever length, and 2 endcaps. You first bolt all the cards together with standoffs: and then slip it into the rails.

I've also used the Tri-M Can-Tainer which is fully enclosed and pretty rugged, but surprisingly hard to actually cram the cards into. The Versa-Tainer has more space around the boards, but you still need to push much harder than seems reasonable to get the cards in.

The Lippert CPU card and others seem to push the PC/104 spec a bit far in terms of mounting components right at the corners of the boards, so some of the mounting systems that have slotted card rails cause trouble. You're better off using the screw-in standoffs and either the Can-Tainer or the Parvus rails.


Copyright 2007, Trevor Blackwell. Home