Booting a recent U-boot and kernel on the Versatile/AB and Versatile/PB
Last test 2018-12-27 (Kernel v4.20)


ARM Versatile/AB reference design with the IB2 interface board and some splash graphics on the little display.

Serial Terminal

Install minicom. In Fedora it's simply yum install minicom and you're done with it.

Setup minicom, I just use this terminal program out of habit, and it's simple to suspend to do other stuff on the serial port, like uploading S-records. So:


The latest Linaro GCC toolchain is what I usually use to compile recent kernels for almost all CPUs.


Compiling U-Boot

  1. Clone a u-boot from Das U-Boot git over at
  2. Configure and build the shebang for the Versatile/PB:
    cd u-boot
    mkdir build
    export CROSS_COMPILE=arm-none-eabi-
    make O=build CROSS_COMPILE=$(CROSS_COMPILE) distclean
    make O=build CROSS_COMPILE=$(CROSS_COMPILE) versatilepb
    make O=build CROSS_COMPILE=$(CROSS_COMPILE) all

    If you think it's fun you can use my versatile-uboot.mak file to build it like this: make -f integrator.mak build (use it in the u-boot root dir)

  3. Make sure that u-boot.bin appears in your build directory.
  4. Copy the u-boot.bin to the MMC card.
  5. Power on the Versatile.
  6. Convert the u-boot.bin to u-boot.exe like this:
    M:\> convert binary u-boot.bin load_address 0x01000000 entry_point 0x01000000
  7. Run U-Boot like this: run u-boot.exe
Veratile/AB with IB1

ARM Versatile/AB reference design with the IB1 interface board and the Sharp LQ084V1DG21 display with some splash graphics.

Linux Kernel

When I build kernels I use this versatile.mak makefile, like this: make -f versatile.mak config && make -f versatile.mak build - it is mainly a way to automate things.

You need an external root filesystem or my homebrew initramfs root filesystem to attach to the kernel when building it if you wanna get to prompt.

When building kernels I use a minimal initramfs root filesystem placed in my home directory. (This is to get you to a prompt without a root filesystem installed in the flash.) These root filesystems are created using this script. See below for prebuilt versions.

You can easily download the kernel into the target using the ethernet connector and TFTP from U-Boot like this:

setenv serverip;setenv ipaddr;setenv bootfile uImage;tftpboot;bootm

See my notes on setting up a TFTP server if you need help with that.