OMAP GeeXboX
From OMAPpedia
Contents |
[edit] Introduction
GeeXboX is a embedded Linux distribution focused on multimedia and video playback. It is available for regular x86-based and PowerPC-based computers and ARM embedded devices. GeeXboX comes with its own multi-architectures toolchain and cross-compilation engine. It is fully customizable and provides 400+ multimedia packages. It relies on a state-of-the-art embedded Linux system: BusyBox, uClibc/Glibc/eGlibc, and media players such as MPlayer, Xine or Gstreamer. It can be configured to run with or without X Windowing system. Its frontend Media Center application is called Enna
[edit] References
- GeeXboX: the embedded Linux multimedia distribution
- Enna: Enlightenment EFL-based Media Center application
- libplayer: a multimedia A/V abstraction layer API, capable of driving MPlayer, Xine, VLC and GStreamer.
- libvalhalla: a media scanning library to retrieve various metadata such as ID3tags, covers, lyrics, informations on media files and so on.
[edit] ARM Supported Hardware
GeeXboX has its own toolchain and can be configured for endless configuration and ARM chips. By default, it generates ARMv7 compatible code, with Cortex-A8 and NEON optimizations but can be tuned for Cortex-A9 as well.
It currently fully support OMAP3-based boards, including (out-of-the-box):
And the following OMAP4-based boards (out-of-the-box):
Current hardware support includes: all basic peripherals, WiFi/FM chip, PowerVR SGX540 GPU and Ducati DSP.
Support for other OMAP-based boards might be added by kernel patches and extended configuration.
[edit] Featured Optimizations
GeeXboX features multiple software optimizations to get the best our of the available hardware capabilities.
- NEON optimizations: enabled by default through GCC flags and ASM routines in Evas compositing and rendering library, FFmpeg set of software video decoders and X.Org video driver (omapfb).
- Multi-cores optimizations: Only relevant on Cortex-A9 cores. Enabled Evas asynchronous rendering and FFmpeg MPEG-2 and H.264 video decoding.
- C64x DSP: Raw DSP access through GStreamer plugin for MPEG-2, VC-1 and H.264 video decoding.
- OpenMAX: Support for video decoding abstraction in GStreamer and VLC (WIP).
- OpenGL|ES: Support for OpenGL|ES engine through PowerVR SGX chip in Evas. Due to SGX limited bandwidth and fillrate, h/w graphic rendering is not much faster than s/w rendering but at least completely offload CPU.
[edit] Retrieving GeeXboX
Note: The development branch is where the development work takes place and you should use this if you're after to work with the latest cutting edge developments. It is possible trunk can suffer temporary periods of instability while new features are developed and if this is undesirable, it is recommended using one of the release branches. Use ONLY for development purposes.
GeeXbox uses Mercurial as a revision control system, so you will install the mercurial package for your host system. On an Ubuntu-based system this will be done with,
# sudo apt-get install mercurial
Now, the first thing you will do is download the sources from Mercurial GeeXboX repository.
# hg clone http://hg.geexbox.org/geexbox
[edit] Building Sources
Next, enter to geexbox directory and edit with your preferred editor the config/options file. Set
TARGET_ARCH=arm TARGET_CPU=cortex-a8 SERVICES=yes XORG_DRIVERS="omapfb" PULSEAUDIO=no GSTREAMER=yes DEVTOOLS=yes
Finally build the distribution with
# make flat
The result will be in geexbox-flat-devel-*.arm.eglibc directory
[edit] Installation on SD Card
First prepare the SD card the following way:
- create one boot FAT32 (type 0B) partition, any size, I took 8MB
- create one rootfs EXT2 partition.
Then copy the uImage file to FAT32 partition
# cp geexbox-flat-devel-*.arm.eglibc/boot/uImage /media/boot
N.B: If running on IGEPv2 board, also copy the boot.ini file, it contains the whole U-Boot set of commands for automatic bootup.
# cp geexbox-flat-devel-*.arm.eglibc/boot/boot.ini /media/boot
Next, edit the geexbox-flat-devel-*.arm.eglibc/etc/video file and enable/disable OpenGL support
OPENGL=[yes|no]
Finally, copy the geexbox-flat-devel-*.arm.eglibc contents to EXT2 partition.
# fakeroot cp -dpfa -R geexbox-flat-devel-*.arm.eglibc/* /media/rootfs/
[edit] Booting
If your board doesn't support automatic boot through boot.ini, you can setup the following U-Boot environment variables.
setenv geexbox-args "console=ttyS2,115200n8 root=/dev/mmcblk0p2 rw rootwait init=/linuxrc lang=en keymap=qwerty remote=default_remote receiver=default_receiver hdtv" setenv omap-args "omapfb.mode=dvi:1280x720MR-32@60 omapfb.vram=0:8M,1:4M mem=442M" setenv bootargs "${geexbox-args} ${omap-args}"
Adapt the resolution and memory to your given board.
Then boot the distribution from MMC:
fatload mmc 0:1 80100000 uImage bootm 80100000
[edit] Troubleshooting
If you want to contribute to GeeXboX or need some help, you can subscribe to the development list (devel at geexbox.org).