seL4 supports the Odroid-X Exynos4412 board.

Client setup

Hardware requirements:

  1. 5V power supply
  2. RS232 or USB to UART converter
  3. USB OTG cable

Note: The USB-UART converter that is shipped with the board requires a Linux kernel version > 3.2

Serial port setup

Open minicom on /dev/ttyUSB* and set the serial port settings to: 115200N1

  • 115200bps
  • parity-none
  • 1 stop bit

You may also like to set up a udev rule for Fastboot:

SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", ATTR{idProduct}=="0002", MODE="660", GROUP="dialout"

SD card setup

An image file can be found here: TODO Add sd image

This image contains both U-Boot and Android. This should set up SD card partitions properly. seL4 image can be uploaded via Fastboot.

To prepare the SD card, run

$ sudo dd if=<image file> of=</dev/sdx>

Where sdx is the device that is associated with your SD card.


<TODO> Uboot source?

U-Boot must reside at a magical offset in a special partition of the SD card. To copy U-Boot and the other boot loaders to the SD card:

cd sd_fusesudo
./sd_fusing_4412.sh /dev/sdx

seL4 Image file preparation

Checkout the sel4test project using repo as per seL4Test

repo init -u https://github.com/seL4/sel4test-manifest.git
repo sync
mkdir cbuild
cd cbuild
../init-build.sh -DPLATFORM=exynos4 -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.

The seL4 image file must be converted into a U-Boot application file. The first step is to strip the elf file into a binary file. Next we use mkimage to create the image.

sudo apt-get install uboot-mkimage
mkimage -a 0x48000000 -e 0x48000000 -C none -A arm -T kernel -O qnx -d $INPUT_FILE $OUTPUT_FILE

The reason we choose QNX is because we exploit the fact that, like seL4, QNX expects to be ELF-loaded. The alternative is to convert our ELF file into a binary file using objcopy.


Fastboot will be used to upload images to the device. The tool can be found here: or here: you can clone and build the tool from source

<TODO> add fastboot link

Follow these steps to boot your program:

  1. Connect the USB cable between the ODROID and the client
  2. Connect the UART converter between the ODROID and the client
  3. Insert your SD card into the ODROID
  4. Connect the 5V power supply
  5. Open minicom
  6. Hold the power button for 3 seconds
  7. In minicom, press a key to stop the auto boot process or hold the user button on the board during the boot process

To boot using fastboot:

  1. At the u-boot prompt, type fastboot

  2. On the client machine, run sudo fastboot devices to ensure that the device has been recognised. The device should have the label “SMDKEXYNOS-01”.

    1. NOTE: fastboot fails silently if you do not have permissions to access the device. Try running with sudo.
  3. On the client machine, run fastboot boot sel4-uImage

To boot from mmc:

  1. At the U-Boot prompt type fatload mmc 0:2 0x42000000 <filename> bootm 0x42000000



http://dev.odroid.com/projects/odroid-xq/#s-2.2.1 <- This should be replaced with the official Samsung exynos4412 “User manual”

Android - uboot sources and instructions