OK. Why spend so much time on a frankly, underpowered system board. Chalk it up to learning experience I guess. That Vortex86 may have been the cat’s pajamas (pulled that from nowhere) about 5-10 years ago with 300Mhz, but the lack of FPU or math coprocessor cripples it nowadays. Less operating systems will use it, and the workarounds for Linux and extra compiling are not worth it for a base system to hang other applications and projects on. Now there are still many SOC and processor evaluation boards out there that do not have FPU capability, but the processing power (speed, memory) and community support make up for that. Case in point: Beagleboard
I picked up a revision B XM version of one of these little nuggets and I am quite impressed. What kept me from getting one years ago was the lack of VGA output. All the other boards I tried at least had that. This has s-video (usually crappy at best) and HDMI out. I got back one of my old monitors which has a DVI input, and then I made the plunge for the Beagleboard. Glad I waited, as the XM unit has a 1Ghz processor (TI Omap 37XX) and 512M RAM. Pretty awesome for a board that is 3 inches by 3 inches (smaller than PC104 form factor by a smidge). Here’s the bonus: it comes with a 4-port USB Host connector (a hub, technically) soldered to the board, as well as a RJ-45 ethernet connector (smsc95XX), and the serial port is now soldered on as well (DB-9). It comes with a 4G microSD card which is always recognized as an MMCblk0 device. Many headers are also part of the board now, so no crazy tight-space soldering if you want to attach a daughtercard!
These ports and connectors make it very easy to work with. Pretty much plug-and-go! Important to get a 5V adapter, as this board is flackey if relying on power from USB OTG port. Still, this 5V supply can power many devices on the onboard USB ports like (in image above) a mouse, keyboard, and 2G thumb drive! And it still consumes less than 2 watts of juice. I see a great future with this little board.
MAKING IT USEABLE
The SD card that came with it had a demo image for testing right on it. This shows that it can boot up. It is not, however, setup for a working system. It comes with a recent Angstrom build which worked completely in ramdisk. The only partition formatted was the 80M bootable fat. The rest of the card was unpartitioned. I copied the the contents of fat partition to a safe folder on Vista machine fat32 hard drive (USB) and proceeded to boot up one of my Linux live distros – can’t remember which one, but it was probably Puppy 5.1 or Debian Lenny. Then I setup the Beagle SD card with Gparted. I made a bootable fat at 90M, EXT3 at about 3G, and an EXT2 storage for the rest. I suppose I could have put back the saved MLO and u-boot.bin, but I ended up going to a Texas Instruments site and used the MLO and u-boot.bin from their Android Froyo site. Yes, I installed Froyo, and it worked, but it was pretty lame on a machine with no touchscreen and a mouse/keyboard. If I got a touchpanel daughtercard, then perhaps. Anyway, the packages and layering of the operating system is different (OK for phones, but not so much for a development robot system). So, I kept the bootloader files and proceeded to test other systems. I installed Angstrom and it worked great, except the package ‘universe’ was not that large. i hit brick walls when trying to get things I thought I might need – like luvcview or uvcview. Sure I could compile them for my kernel, but I was too impatient. I tried Debian netinstall, but my kernal did not match my rootfs, because there was only one netinstall rootfs on debian ARM site and it was for 2.36.29 kernel, and I had 2.36.34…… You would think it would work (yes it booted and all, but installing modules for devices or adding packages kept spitting out ‘invalid format’ errors).
I ended up with Ubuntu 10.10 (Maverick I guess). With help of Robert Nelson images, I manually installed the boot images with mkimage in Debian, and the rootfs on the second partition (untarred it). Anyway, after altering the boot.scr a little and saving with mkimage, the Beagleboard boots right up. If the serial port is connect to PC with a terminal program running (PuTTY for Windows, picocom for Linux) at 115200-n-8, it displays on both terminal and DVI output (LCD monitor).
Xserver didnt work after install because the distro image was a ‘minimal’ one – perfect! I would like to be responsible for my own application bloat anyway. So I proceeded to install X Windows server (apt-get install xorg) and windows manager – fluxbox (apt-get install fluxbox).
One note: the ethernet did not work right away, which was really a setup issue. For some strange reason, the ethernet installed on USB1 instead of USB0 like it always did before. This might be because I had a thumb drive in the port. Ethernet is really a USB ethernet. So using ‘ifconfig’, I set a static ip, and used ‘route add’ to set gateway. Pinging outside site confirmed working ethernet. Very next step after that was to update package list (apt-get update), which had to be done before installing anything else like X windows mentioned above. At last count, on this little board, I had 22,800 files and directories installed (from apt-get feedback).
One mention on performance. Ubuntu 10.10 is not a speed demon on this board. Angstrom is much faster. It is due to a combination of things – sheer file number and system footprint, SD card capability and format, and the fact that the kernel command to restrict CPU speed to 800 from 1000 (this will be fixed in a later update). But I sacrifice speed for functionality at this point. Afterall, I was going to be setting up a 300Mhz system before – so this is still like heaven.