Raspberry Pi and L4Re

Steps to get the Raspberry Pi running with L4Re.

Which variants of the Raspberry Pi are suitable?

Serial

For up to Rpi4: For interaction at low level with the Rpi (aka UART), you need a USB-TTL adapter to connect the serial port of the Rpi with your laptop/workstation. If you do not have one you can buy one (everywhere) on the internet, search for "usb serial raspberry cable" or similar. The cable has at least three connectors to plug into the Rpi (Ground/GND, TX, RX) and a USB connector on the other side.

For rpi5: You can use the Raspberry Pi Debug Probe.

Booting

For up to Rpi4: For flexibility and common network-booting capabilities, we typically use u-boot as a boot loader on the Rpi. U-boot can be built from upstream u-boot.git without any issue. Pre-built u-boot binaries for both 32bit and 64bit can be found here. They shall work on all Rpi variants up to and including Rpi4.

Rpi5: For flexibility and common network-booting capabilities, use the built-in network booting capabilities. Details: to come.

Preparing an Rpi for use

Getting the sources and compiling L4Re via the L4Re-Snapshot

This gives step-by-step instructions on how to build L4Re for the Rpi.

Using ready-to-use images

Images for the Rpi3 and Rpi4 are also available for download: 64bit and 32bit.

Running an image stored on the SD-card of the Rpi with u-boot

Running an image stored on the SD-card of the Rpi directly

Booting over network

Booting via network means that you generate your bootstrap image on some other system, e.g. your development system, and load it via network onto the Rpi and start it. This avoids juggling SD-cards between the Rpi and your development system, and is the generally preferred way of development.

Besides connecting your Rpi to your network via the integrated Ethernet port, you need a TFTP-Server in your network that serves the bootstrap image to the Rpi. tftp-hpa and dnsmasq are good and established choices. Please refer to their documentation or generally to the Internet to set one of those up. If in doubt, use dnsmasq.

Generally it is only needed to have TFTP working, DHCP is optional, as IP addresses can be set within u-boot, but it is recommended to have it. dnsmasq offers both TFTP and DHCP services.

If you do not have an ethernet-based network (you only use WIFI or are not allowed to connect unauthorized devices to the network you're using) you can also directly connect the Rpi to your notebook / workstation using an Ethernet cable. Use an USB-Ethernet dongle if you need to.

With using DHCP, the Rpi should get an IP address:
U-Boot> dhcp

Setting or adapting IP addresses works like this:

U-Boot> setenv ipaddr 192.168.1.2
U-Boot> setenv serverip 192.168.1.3
U-Boot> setenv netmask 255.255.255.0
where ipaddr is the IP address of the Rpi and serverip is the IP address of the system where the TFTP server is running.

Loading the image works similarly to loading it from the SD-card:

U-Boot> tftpboot 0x0c000000 /path/on/the/tftp/server/bootstrap.elf; bootelf

Additional Information