Notes on BeagleBox, a Buildroot-based distribution for the BeagleBoard. These notes explain what software is used for this distribution and why it was chosen.
BeagleBox is a metabuild system. It downloads other packages, unpacks and patches them, then runs them to generate various components required to create an embedded distribution for the BeagleBoard (and, eventually, the PandaBoard). There are a number of top level components:
- Cross Toolchain
- Linux Kernel
- TI's SGX Graphics Package
- Root file system
Current version: 1.15.2
The toolchain is built using Crosstool-NG, which makes selection of components of the toolchain as easy as configuring the Linux kernel. NEON support is included, using softfp. The toolchain cannot use hardfp due to the binary distribution of components in the SGX package that require a softfp toolchain. Use of softfp will have an effect on performance, but there is no choice until the SGX release provides hardfp binaries or source to allow building for either.
Current version: 3.2.23 (kernel.org)
This release of the kernel has most BeagleBoard support integrated into the configuraiton system. Only the SGX kernel support must be handled outside of the kernel build.
TI's SGX Graphics Package
Current version: 4_06_00_03
The SGX package provides hardware accelerated graphics support, specifically for use with OpenGL ES2. The package is released as an installable binary downloadable from TI's web site. The build pulls this package, unpacks it and runs the build contained within it to generate a tree that is then copied into Buildroot's custom package skeleton. From there it is picked up by the Buildroot build.
Once in the Buildroot-generated root file system, there is additional work to be done when the target is booted. An install script must be run once to generate symbollic links and prep the rootfs for use with SGX. It should be possible to run this from the host build process - the install script suggests it supports this. But it doesn't work. So BeagleBox has a firstboot init script that handles the one-time installation on the first boot of the target.
Root file system
What's still in progress
DSP support, required for video playback. At the moment I'm using the DSP staging drivers in the kernel and the DSP user space support in Buildroot. This should probably work (and I think it actually did work at one point) but it's not working right now.
Future development will be in user space, integrating the ARM Flash player (if I get permission to use it) into one or more web browsers and then working on BUI, which is the user experience layer that I hope to make similar to the Sony Bravia TV I have.