As an operating system, Linux really is highly portable. But for all of the places that Linux runs, embedded systems are the one place where you see a huge variety of instruction set architectures.
Reflecting that diversity, the Yocto Project allows you to generate a custom Linux build for the four most popular architectures in use in embedded: x86 (32 and 64 bit), ARM, Power PC and MIPS.
To demonstrate that power, we set up a demo at the Embedded Linux Conference with all four of these architectures running builds generated by the Yocto Project v0.9.
All of the systems here are running builds created by Poky from the same meta-data, with different MACHINE's defined. But not only that, they are interacting in a distributed media demo. Here's how it works:
- A filesystem filled with digital audio is on a little USB hard drive connected to a MIPS-based system; this system acts as the file server and exposes the filesystem using NFS.
- There is a Universal Plug-n-Play (UPnP) content directory which exposes the digital audio NFS filesystem accessed remotely over the network. Actually there are two of these, one running x86 (a WEBS 2120 running an eMenlow Intel Atom Processor).
- The other content directory is a PPC-based system.
- Audio is played by a rendering client running on an ARM-based Beagleboard, connected to the WEBS system content directory.
- Audio is also rendered on a x86 based "Black Sand" board, which uses the content directory on the PPC board.
- And there was a little netbook which was acting as the master control console. It was actually running a Yocto-built OS as well, although netbooks are not the target for the Yocto Project.
The audio being played was some "upbeat jazz" grooving along. (The alternative was some speed metal, which might have fit just as well)
All of the meta-data for the demos are available for you to access in the Yocto Project git repository, which you can access at http://git.yoctoproject.org/cgit/cgit.cgi/meta-demo/
Pulling this all together was really fun to watch. One little story I like to share: We actually didn't have all five of these systems in the same physical location until the conference itself. How did the team pull it off? Another great demonstration of the architecture: the demo recipes were created debugged using whatever hardware the developer had handy. "Porting" to another system was as easy as doing a new build.
Impressive job, team!