Table of contents:


Need to setup following to boot vexpress with Xen

  • Setup uboot
  • Setup board.txt
  • Setup images.txt

Setup Boot Images

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf-  zImage

Setup uboot

The current approach requires tftp but it can be easily modify to load the different images from the mmc.

Build and flash U-Boot

Theses steps will program U-Boot into NOR flash.

1) Clone U-Boot from the official repository (tested with v2013.10-rc2 tag)

git clone git:// u-boot
cd u-boot
git checkout v2013.10-rc2

2) Build U-Boot for the versatile express

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- vexpress_ca15_tc2

3) Copy u-boot.bin from the root of the repository to the SOFTWARE directory of the firmware disk, giving it the name uboot.bin NOTE: vexpress firmware disk /media/VEMSD to be mounted on to your host machine.

cp u-boot.bin /media/VEMSD/SOFTWARE/uboot.bin

Setup bootscr.txt

If you want to let the board to automatically boot into U-Boot (and by extension Xen), then: Look for the name of the BOOTSCRIPT image in the file you edited in the previous step; this should be \SOFTWARE\bootscr.txt. Edit this bootscript file to have the line:

flash run uboot

cat bootscr.txt

$ cat /media/VEMSD/SOFTWARE/TC2/bootscr.txt 
flash run uboot

The file is available here: bootscr.txt

Setup board.txt

The file is available here: board.txt

$ cp board.txt  /media/VEMSD/SITE1/HBI0249A/board.txt

Setup images.txt

The file is available here: images.txt

$ cp images.txt  /media/VEMSD/SITE1/HBI0249A/images.txt


Environment variables needs to be set by using setenv on u-boot prompt before you setup please print below command to see the current environment variables.

VExpress# printenv 


setenv ipaddr 10.y.y.y
setenv serverip 10.x.x.x
setenv xen_addr_r 0x80400000
setenv kernel_addr_r 0xa0008000
setenv dtb_addr_r 0x81f00000
setenv script_addr_r 0x81000000
setenv xen_bootargs 'sync_console console=dtuart dtuart=serial0'
setenv dom0_bootargs 'console=hvc0,38400 debug ignore_loglevel root=/dev/mmcblk0p2'
setenv bootcmd 'tftpboot $script_addr_r $serverip:/load-xen-tftp.img; source $script_addr_r'
setenv kernel_path /linux-zImage
setenv xen_path /xen-uImage
setenv dtb_path /vexpress-v2p-ca15-tc1.dtb


  • 10.y.y.y the ip addr of the board
  • 10.x.x.x the ip of a tftp server (or PXE server).
  • 00:zz:zz:zz:zz:zz the MAC address of the board.
  • /linux-zImage the path to the Linux kernel. It should be placed to /tftpboot/linux-zImage on your server
  • /xen-uImage the path to Xen uImage. It should be placed to /tftpboot/xen-uImage on your server. You can create the uImage with

mkimage -A arm -T kernel -a 0x80200000 -e 0x80200000 -C none -d $xen_root/xen/xen /tftpboot/xen-uImage

Setup tftpboot

Please refer below link to setup fttpboot on your host machine


mkimage -T script -C none -d load-xen-tftp.scr.txt /tftpboot/load-xen-tftp.img

Please ensure you have following files under /tftpboot folder on your host machine

  • vexpress-v2p-ca15-tc1.dtb
  • linux-zImage
  • load-xen-tftp.img
  • xen-uImage


Power cycle the vexpress-tc2 board to have a affect of above settings

Target console

The vexpress-tc2 console output looks like below


Boot log

Platform/QA/TestCases/Virtualization (last modified 2013-09-18 14:27:17)