Ideas for the GSoC 2013 on Buildroot
Improve support of ARM SoC multimedia features
Buildroot as an embedded Linux build system, has had support for the ARM architecture pretty much since its creation, and Buildroot is used by a number of companies and hobbyists to build embedded Linux systems that run on ARM platforms.
A number of the modern ARM processors (so called SoC, for System-on-chip) have advanced multimedia features, like OpenGL acceleration, OpenVG acceleration, accelerated video encoding or decoding features (either through dedicated hardware units or DSPs). For example, the OMAP processors from Texas Instruments (used on the BeagleBoard, PandaBoard and BeagleBone), the i.MX processor from Freescale, the BCM2835 from Broadcom (used on Rasberry Pi) all offer such multimedia features. Using those multimedia features require specific libraries provided by the different processor vendors, and Buildroot is currently lacking packages to integrate those specific libraries. They are usually not trivial to integrate, because the libraries provided by the processor vendors often use uncommon build systems, have bizarre dependencies and so on. However, getting the support for those libraries in Buildroot is very important so that Buildroot users can fully benefit from the multimedia features of their hardware.
The Buildroot project will use the $500 provided by Google to the mentoring organization to provide 2 or 3 hardware development boards to the student. The GSoC will then be approximately be split in the following steps, for each platform:
- Get used to the platform (get a working kernel and minimal userspace)
- Investigate the libraries provided by the processor vendor to use the multimedia features, and make experiments to get them working
- Create proper Buildroot packages to allow other users to easily integrate those libraries in their embedded Linux systems.
- Get some packages accepted upstream in the official Buildroot Git repository, by going through the traditional patch submission/review process.
- Basic Embedded Linux knowledge
- Basic understanding of multimedia features (OpenGL, OpenVG, video acceleration)