BeagleBone Black / Blue

This page contains info about building seL4 on BeagleBone Black and BeagleBone Blue.

Building for the BeagleBone Black / Blue

These instructions were written by Tim Newsham. The BeagleBone is a community-supported port.


We suggest using the arm-linux-gnueabi- cross-compilers. Use the instructions on getting a toolchain.



For BeagleBone Blue, substitute am335x-boneblack with am335x-boneblue.

Checkout the sel4test project using repo as per seL4Test

repo init -u
repo sync
mkdir cbuild
cd cbuild
../init-build -DPLATFORM=am335x-boneblack -DAARCH32=1
# The default cmake wrapper sets up a default configuration for the target platform.
# To change individual settings, run `ccmake` and change the configuration
# parameters to suit your needs.

Generated binaries can be found in the images/ directory.

Booting on the BeagleBone Black / Blue

Hardware Requirements (BeagleBone Black)

Hardware Requirements (BeagleBone Blue)

  • Power supply (12V DC, 2S LiPo battery or microUSB)
  • Serial adapter (Connect to UT0 header)
  • microSD card

Interacting with U-Boot

Connect a serial adapter between your development box and the BeagleBone. Use a serial program such as picocom or screen to connect to the serial port:

picocom /dev/ttyUSB0 -b 115200

Power on the device and hit space a few times to interrupt the normal boot process and get a U-Boot prompt.

Booting from microSD card

To boot from a microSD card, copy the sel4test-driver-image-arm-am335x file to a FAT32 partition the microSD card and insert the card in the BeagleBone.

At the U-Boot prompt, enter the following to load and run the image:

fatload mmc 0 ${loadaddr} sel4test-driver-image-arm-am335x
go ${loadaddr}

Booting from TFTP (BeagleBone Black only)

To boot over Ethernet, configure your DHCP server to provide a DHCP lease and to specify sel4test as the boot file. Configure a TFTP server to serve the sel4test-driver-image-arm-am335x file.

Plug an Ethernet cable to the BealeBone Black, then, at the U-Boot prompt enter:

go ${loadaddr}

To load an alternate image from the TFTP server at, use:

dhcp ${loadaddr}
go ${loadaddr}

Other resources