Updated: mars 2, 2017
This page collects all informations on how to use Xenomai realtime extension with the PowerPC/Xilinx hardcore processor embedded into Virtex Xilinx FPGA circuit. Our wish is that your experience on Xenomai for PowerPC/Xilinx will be successful!
You need a board with a Virtex Xilinx FPGA circuit and a system (JTAG) for programming it. We suggest to use:
You need to have a hardware design that can run Linux. You can use use BSB (Base System Builder) tool from XPS for building it or use reference designs given below. No extra HW is necessary for Xenomai support because Xenomai port uses PowerPC internal HW.
1. Recover Linux for PowerPC/Xilinx. Synchronize with git branch xilinx_v2.6.35:
$ cd $ mkdir powerpc-linux $ cd powerpc-linux $ git clone git://git.xilinx.com/linux-2.6-xlnx.git $ mv linux-2.6-xlnx linux $ cd linux $ git checkout -b 2.6.35 xilinx_v2.6.35
2. Recover the 2.6.35.7 vanilla Linux kernel:
$ cd $ wget ftp://ftp.free.fr/pub/linux/kernel/v2.6/linux-2.6.35.7.tar.bz2 $ tar -xvjf linux-2.6.35.7.tar.bz23. Recover Xenomai:
$ cd $ cd powerpc-linux $ wget http://download.gna.org/xenomai/stable/xenomai-2.5.6.tar.bz2 $ tar -xvjf xenomai-2.5.6.tar.bz2 $ ln -s xenomai-2.5.6 xenomai
4. Pick up 2 files from the 2.6.35.7 vanilla Linux kernel and replace the right files into the PowerPC/Xilinx Linux directory for being able to apply the I-pipe and Xenomai patchs:
$ cd $ cd powerpc-linux $ cd linux $ cp ~/linux-2.6.35.7/arch/powerpc/kernel/fpu.S arch/powerpc/kernel/fpu.S $ cp ~/linux-2.6.35.7/arch/powerpc/kernel/time.c arch/powerpc/kernel/time.c
$ cd $ cd powerpc-linux $ cd xenomai $ export xenomai_root=`pwd` $ export linux_tree=../linux $ ./scripts/prepare-kernel.sh --arch=powerpc \ --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.35.7-powerpc-2.12-01.patch \ --linux=$linux_tree patching file arch/powerpc/Kconfig patching file arch/powerpc/boot/Makefile patching file arch/powerpc/include/asm/exception-64s.h patching file arch/powerpc/include/asm/ftrace.h patching file arch/powerpc/include/asm/hw_irq.h patching file arch/powerpc/include/asm/ipipe.h patching file arch/powerpc/include/asm/ipipe_base.h ...
6. Configuring the Linux kernel for using I-pipe and Xenomai (juste type return...), for example for the ML403 board:
$ cd $ cd powerpc-linux $ cd linux $ make ARCH=powerpc CROSS_COMPILE=ppc_4xx- 40x/virtex4_defconfig $ make ARCH=powerpc CROSS_COMPILE=ppc_4xx- zImage
8. If you want to use the Xenomai tools, you must put
them into the RAM file system. If the root file system is under /mydirectory/ramdisk/root_fs:
$ cd $ cd powerpc-linux $ cd xenomai $ export root_fs=/mydirectory/ramdisk/root_fs $ ./configure -host=powerpc-unknown-linux-gnu \ CC=ppc_4xx-gcc AR=ppc_4xx-ar LD=ppc_4xx-ld $ make -k install DESTDIR=$root_fs $ cd $root_fs $ cd .. $ su # dd if=/dev/zero of=initrd.img bs=1M count=16 # mke2fs -F -v -m0 initrd.img # mount -o loop initrd.img /mnt/ # cp -rf root_fs/* /mnt/ # umount /mnt # gzip -9 initrd.img # mv initrd.img.gz ramdisk.image.gz # exit $ cp -i ramdisk.image.gz ~/powerpc-linux/linux/arch/powerpc/boot/
Latency can be measured with tools provided by Xenomai through cross compilation. The principe is to generate a periodic thread and measures difference between the effectiv period and the theorical period that defines latency.
For stressing the system, we have used:
For measuring latencies, boards are stressed by stress tool (# stress -c 50 -i 50 &) and ping flooding (# ping -f @IP).
Board | Linux kernel version | Xenomai version | Max latency (1) | Max latency (2) | Max latency (3) | Max latency (4) | Contact | Comments | PowerPC Frequency | Xenomai Design |
Xilinx ML403 board | 2.6.35 | 2.5.6 | 113 µs | 36 µs | 91 µs | 107 µs | Patrice Kadionik | 03/22/2011 trace | 300 MHz | From BSB tool in XPS |
Xilinx ML507 board | 2.6.35 | 2.5.6 | 51 µs | 17 µs | 33 µs | 47 µs | Patrice Kadionik | 03/22/2011 trace | 400 MHz | From Xilinx reference design |
Avnet V5FX30T board | 2.6.35 | 2.5.6 | 56 µs | 17 µs | 37 µs | 54 µs | Patrice Kadionik | 03/22/2011 trace | 400 MHz | From Avnet reference design |
The following Xilinx SoPC designs for Xenomai are given as an example without any guaranty and AS IS. You must purchase Xilinx tools for regenerating files for programming your Xilinx FPGA of your board.