I have a new toy! It’s a tiny computer. Specifically a BeagleBoard-xM. Here it is next to a pen for comparison:

Inside is a TI OMAP3530 SoC containing an ARM Cortex A8 core, TI C64x DSP, and a PowerVR GPU. As well as 512MB RAM and 256MB NAND flash. It supports tons of peripherals including a UART, Ethernet, audio in/out, DVI out, and four USB ports. So you could actually use it as your main computer if you wanted! There’s also an expansion header for electronics projects and a JTAG port for hardcore debugging. Underneath is a micro SD slot which it can boot off.

I haven’t done too much with it so far: I’ve built a Linux 2.6.36 kernel and booted it with an Ubuntu userland to check everything works. I also rebuilt and re-flashed the bootloader and Das U-Boot to make sure I knew how they worked. While doing this I ran into a bug with the bootloader where it was unable to read files from the second sector of the FAT32 root directory. It was quite simple to fix (thankfully the source was available) and you can get the patch from my GitHub if you run into the same thing. Alternatively use FAT16 for the boot partition. Hopefully it will be merged with the mainline code soon though.

I’m not sure what I’m actually going to do with it: currently looking for a project. I want to play with the PowerVR GPU (it supports OpenGL ES), and I’ve done a little bit of TI DSP programming in my day job so learning more about that could be fun. I also like the idea of trying to get NetBSD to boot on it (FreeBSD doesn’t yet support this ARM core version). Hopefully I will find something interesting to do and post it here.