Building for Raspberry Pi Ubuntu

Norman Feske norman.feske at ...1...
Sat Oct 19 12:54:32 CEST 2013

Hi Nick,

welcome to the mailing list!

> I'm trying to build the Pi platform.
> Running: gcc-arm-linux-gnueabi --version gives:
> arm-linux-gnueabi-gcc (Ubuntu/Linaro 4.6.3-1ubuntu5) 4.6.3

Why are you using the Linaro tool chain? The Genode tool chain should
work just fine as it supports both x86 and ARM. Please follow the
instructions given here:

>   Program core/rpi/core
>     COMPILE  _main.o
> cc1plus: error: unrecognized command line option ‘-std=gnu++11’
> make[3]: *** [_main.o] Error 1
> make[2]: *** [core.prg] Error 2
> make[1]: *** [gen_deps_and_build_targets] Error 2
> make[1]: Leaving directory `/home/nick/genode-13.08/build.rpi'
> Error: Genode build failed
> make: *** [run/demo] Error 255

It looks like the GCC version 4.6 does not support C++11. Switching to
the Genode tool chain should solve the problem.

The Raspberry-Pi support as contained in Genode's master branch does
support basic devices such as the IRQ controller, UART, and timer. So
for a start, I'd recommend to start with a simpler scenario. The
simplest one is possibly 'base/run/printf'. It starts a program that
prints some messages over UART. Once you got this one working, you could
do the next step. For doing so, you might be interested in the following

This is my current topic branch for the Raspberry Pi. It contains
drivers for the framebuffer and USB HID. The latter one is not working
perfectly yet though. So please be prepared for a somewhat bumpy ride. ;-)

The USB-driver support is contained in the 'dde_linux' repository. It is
based on the Linux USB stack. You will need to download the Linux
sources by issuing 'make prepare' from within 'dde_linux'. Before
compiling the USB driver, you will also need to obtain the dwc-otg (that
is the USB host controller) driver as contained in the Raspberry-Pi
version of the Linux kernel (unfortunately this driver is not contained
in the mainline of Linux):

After checking out the rpi-3.10.y branch, you will find the driver at
'drivers/usb/host' in the directories called 'dwc_common_port' and
'dwc_otg'. To make those files accessible to 'dde_linux', create
symlinks pointing those directories at
'dde_linux/contrib/drivers/usb/host/'. For the record, I have reduced
the number of used USB host channels ('dwc_param_host_channels_default')
from 8 to 2 (in 'drivers/usb/host/dwc_otg/dwc_otg_core_if.h').

As of now, I have not implemented the support for the FIQ optimization
that is needed to reduce the IRQ load to a bearable level on Linux.
Hence, on Genode, the USB driver is still severely impeding the system
performance. However, with the branch above, you can principally execute
the 'run/demo' scenario. (Don't forget to add the 'dde_linux' repository
to the 'REPOSITORIES' declaration in your '<build-dir>/etc/build.conf' file)

Best regards

Dr.-Ing. Norman Feske
Genode Labs ·

Genode Labs GmbH · Amtsgericht Dresden · HRB 28424 · Sitz Dresden
Geschäftsführer: Dr.-Ing. Norman Feske, Christian Helmuth

More information about the users mailing list