Linux has always been a problem to me. I have a background in electronics, mostly oriented towards digital/embedded systems, but have always stuck with "small stuff" i.e. microcontrollers like PICs and AVRs that are easy enough to understand the detailed workings of just with the manufacturer's datasheet. My last real experiences with linux (i,e, trying to do more than just install packages and run them with the shortcuts that are automatically placed upon installation) date back easily to about 10 years.
On the "full size" computer most of my experimentations have usually always ended with great frustration, of the kind where some package required for what I want to do is not available as a precompiled binary for the system, which means building from source is required, then some compilation error comes up, a couple of hours are spent, and... the partition gets wiped before returning to the good'ole trusty Windows (yes I did say that... fortunately we have such an incredible capacity to forget about bad things, notably everything pre-win7 in this case).
Quite logically, my interest in linux-based embedded systems has been very limited as a result, as all those would seem to be are things that are not quite as capable as a full-fledged PC, yet require climbing the same steep software understanding hill. That, and the fact that raw I/O that is so common on microcontrollers (everything actually revolves about that) were largely undocumented, obscure and/or not even present on common dev boards. In summary, the gap between a "simple" embedded system and a linux-based one seemed huge.
For some reason I have already forgotten about (might be a "little" project I've had in a corner of my mind for a long time and that I'd like to make a reality one day), last week I started looking at the different ARM-based single-board computers (SBCs) that have popped up lately. Interestingly there is now a ton of them, and making a choice becomes quite a task... fortunately there are a number of important points to consider besides just the specs, like avilability of documentation.
A few items I came across:
- The one that started the trend but is now pretty much outdated, the Raspberri Pi: It does of course have a large community due to the early start, but slow hardware with few capabilities.
- The Arduino Due: It does run an ARM-based CPU, however a low-end version of those, which is really more of a microcontroller than something capable or running a full-fledged OS.
- The Beaglebone Black: Starting to become serious there, small board, lots of expansion possibilities, 1GHz CPU/512M RAM/2GB Flash. The ports available on the headers did however not really suit my desires (I focus on video I/O), there are some known issues with HDMI, it only has one USB host port, and the SoC has limited "advanced" components (no hardware image encoder besides the GPU).
- The Chumby Hacker board: Low end, no HDMI out.
- OLinuXino Micro A20: Now we're talking. Dual-core CPU, dual-core GPU, separate hardware video encoder/decoder, composite/component video in, Transport stream processor, 3 USBs. Tons of headers for access to various signals. Unfortunately it looks like the software documentation side is lacking a little, for example I haven't even found a repo or ready-built images for the A20 version with the dual-core Allwinner SoC. Although the hardware looks perfect to experiment with what I want to try to do, the first step as mentioned earlier in this article will be to learn about the system, and while it might be possible to pull stuff from other projets based on the same SoC I don't feel confident jumping that way yet. I'd really like a system that can work out of the box, and on which I can learn the basics by poking here and there before digging deeper.
- The WandBoard: A powerhouse, mainly in the quad-core version. Modular as the board can be put on a custom carrier, integrated WiFi, but the selection of I/O are not really to my taste. It was also significantly more expensive than most others.
- The SABRE Lite board: Even more of a powerhouse, and even more expensive. Seems a bit too much for now.
That Allwinner A20 SoC used on the OLinuXino Micro really looked good, so and there was another offering based on it - you guessed it, the Cubieboard 2. That one looked like what I wanted. Very similar to the OLinuXino Micro although lacking a couple of I/O that I'd have liked, but on the other side the software and support side seems more developed through http://www.cubieforums.com/, https://groups.google.com/forum/#!forum/cubieboard, and http://linux-sunxi.org/ for the tech docs, multiple ready-made images and guides.
So it seems that the possibility to start working on my little project was indeed the required incentive to force me to dig deep into understanding Linux' inner workings, I ordered a cubieboard2, so stay tuned for more!