Cette page vous affiche les différences entre la révision choisie et la version actuelle de la page.
robotics:computing:xenomai_install_on_roboard [2011/04/15 13:45] gdo |
— (Version actuelle) | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
- | ====== Introduction ====== | ||
- | This article describes how to install a Linux real-time operating system on a roboard RB-100 motherboard. It is based on the Ubuntu Linux distribution and the Xenomai/Adeos real-time solution. | ||
- | |||
- | == Many thanks to : == | ||
- | * Pascal Moigne from [[http://www.retdtechfrance.com|R&D Tech France]] for lending us a roboard RB-100. | ||
- | * Henri Roosen for his help on the Xenomai patched kernel configuration for Vortex86DX processor. | ||
- | * Philippe Gerum for his help on the WP bit test double fault bug : [[https://mail.gna.org/public/adeos-main/2010-04/msg00011.html]] | ||
- | |||
- | == Hardware used : == | ||
- | * Roboard RB-100 : [[http://www.roboard.com/RB-100.htm]] | ||
- | * Mini PCI VGA Card : [[http://www.icop.com.tw/pddetail.aspx?id=93&pid=4]] | ||
- | * 4 Go micro SD card plugged in the built-in micro-SD card reader. | ||
- | * 1 Go USB Key | ||
- | * A desktop PC((is needed to download softwares because Ubuntu does not support roboard ethernet card by default. Also, desktop PC makes kernel compilation faster.)). | ||
- | * An internet connection. | ||
- | |||
- | == Downloads : == | ||
- | * Ubuntu 9.10 : [[http://www.ubuntu.com/]] | ||
- | * Linux Kernel 2.6.32.11 : [[http://www.kernel.org/]] | ||
- | * Xenomai 2.5.2 : [[http://www.xenomai.org]] | ||
- | * Adeos patch adeos-ipipe-2.6.32.11-x86-2.6-02.patch : [[https://gna.org/projects/adeos/]] | ||
- | * Kernel configuration file : {{:robotics:computing:xenomai:config_roboard.txt|configuration file}} | ||
- | |||
- | ====== Linux Install ====== | ||
- | |||
- | We install Ubuntu Desktop edition. But Server edition could be used too if you install from an USB CD-Rom drive((Ubuntu Server edition can not be installed from an USB key for now)). | ||
- | Download the .iso image you choose and burn it on an USB Key (using UNetbootin or usb-creator-gtk for example). | ||
- | |||
- | Plug your USB Key on the roboard and power on your roboard. At boot time, press **DEL** to enter BIOS setup. | ||
- | Then go to **Boot => Boot Device Priority => 1st Boot Device** and select your USB key. Save your changes and exit. | ||
- | |||
- | The roboard boots now on your USB key. Install Ubuntu with your own options. If you need more informations about how to install Ubuntu, look at there : [[https://help.ubuntu.com/community/Installation]] | ||
- | |||
- | Press **Restart** and disconnect your USB Key when it is asked. | ||
- | |||
- | ====== Patching kernel with Xenomai ====== | ||
- | |||
- | You can do all the following actions on your desktop PC rather than on the roboard for more confort. | ||
- | |||
- | Download Xenomai, the kernel and its corresponding adeos-ipipe patch from the links given in the [[.:xenomai_install_on_roboard#Downloads]] section. | ||
- | |||
- | If you want to use your own kernel version, for kernel **X.X.X.X**, download patch **adeos-ipipe-X.X.X.X-ARCH-Y.Y-Y.patch**. Where **X** is the kernel version, **ARCH** the architectire you plan to use and **Y** the version of the adeos patch. | ||
- | For example, if you want to patch kernel version **2.6.30.10** for an **x86** architecture, download adeos patch **adeos-ipipe-2.6.30.10-x86-2.4.09.patch** ((The kernel version trivial number could lightly differ. But it is more safe to keep same version for kernel and adeos patch)). | ||
- | |||
- | Extract kernel sources : | ||
- | <code> $ tar xjpf linux-2.6.32.11.tar.bz2</code> | ||
- | |||
- | Extract Xenomai sources : | ||
- | <code>$ tar xjpf xenomai-2.5.2.tar.bz2</code> | ||
- | |||
- | Copy the adeos patch in the Xenomai source tree : | ||
- | <code>$ mv adeos-ipipe-2.6.32.11-x86-2.6-02.patch xenomai-2.5.2/ksrc/arch/x86/patches/</code> | ||
- | |||
- | Enter Xenomai source directory : | ||
- | <code>$ cd xenomai-2.5.2/</code> | ||
- | |||
- | Now prepare your kernel by applying suitable patches : | ||
- | <code>$ scripts/prepare-kernel.sh --linux=../linux-2.6.32.11/ --adeos=ksrc/arch/x86/patches/adeos-ipipe-2.6.32.11-x86-2.6-02.patch --arch=i586 | ||
- | patching file arch/x86/Kconfig | ||
- | patching file arch/x86/include/asm/apic.h | ||
- | patching file arch/x86/include/asm/apicdef.h | ||
- | ... | ||
- | ... | ||
- | ... | ||
- | patching file mm/memory.c | ||
- | patching file mm/mmu_context.c | ||
- | patching file mm/vmalloc.c</code> | ||
- | |||
- | ====== Build patched kernel package ====== | ||
- | |||
- | Next configure your kernel with **$ make menuconfig** command or use my {{:robotics:computing:xenomai:config_roboard.txt|configuration file}} : | ||
- | <code>$ cp config_roboard.txt linux-2.6.32.11/.config</code> | ||
- | |||
- | Then you can launch the build process that will result in a nice debian package((If the **make-kpkg** command is unavailable on your Ubuntu, install the following packages : **[[apt://build-essential,kernel-package,initramfs-tools,fakeroot,debconf-utils,dpkg-dev,debhelper,bin86|build-essential kernel-package initramfs-tools fakeroot debconf-utils dpkg-dev debhelper bin86]]**)) : | ||
- | <code>$ cd linux-2.6.32.11 | ||
- | $ make-kpkg --uc --us buildpackage | ||
- | exec debian/rules DEBIAN_REVISION=2.6.32.11-10.00.Custom UNSIGN_CHANGELOG=YES UNSIGN_SOURCE=YES buildpackage | ||
- | ... | ||
- | ... | ||
- | ... | ||
- | echo done > debian/stamp/build/buildpackage</code> | ||
- | |||
- | ====== Patched kernel install ====== | ||
- | |||
- | Copy the xenomai sources you have already downloaded and the kernel package you have created on your USB key. | ||
- | Plug the USB key on your roboard. | ||
- | Then install first the kernel package with the following command: | ||
- | <code>$ sudo dpkg -i /media/USB_KEY/linux-image-2.6.32.11_2.6.32.11-10.00.Custom_i386.deb</code> | ||
- | |||
- | Copy the Xenomai sources archive on your roboard and decompress it. | ||
- | <code>$ sudo cp /media/USB_KEY/xenomai-2.5.2.tar.bz2 /usr/local/src/ | ||
- | $ cd /usr/local/src/ | ||
- | $ tar xjpf xenomai-2.5.2.tar.bz2</code> | ||
- | |||
- | Now reboot the roboard and boot on your new kernel. | ||
- | |||
- | ====== Build and install Xenomai libraries ====== | ||
- | |||
- | Enter the directory where you decompressed the Xenomai sources archive to build and install user space libraries. | ||
- | <code>$ cd /usr/local/src/xenomai-2.5.2/ | ||
- | $ sudo ./configure | ||
- | ... | ||
- | $ sudo make | ||
- | ... | ||
- | $ sudo make install</code> | ||
- | |||
- | ====== Test Xenomai ====== | ||
- | |||
- | Enter the native API example directory, build and launch the test which is a simple task repeated every seconds : | ||
- | <code>$ cd examples/native/ | ||
- | $ sudo make | ||
- | ... | ||
- | $ sudo ./trivial-periodic | ||
- | Time since last turn: 1000.015421 ms | ||
- | Time since last turn: 1000.009955 ms | ||
- | Time since last turn: 999.989784 ms | ||
- | Time since last turn: 999.999659 ms | ||
- | Time since last turn: 1000.000116 ms | ||
- | Time since last turn: 999.999863 ms | ||
- | .... | ||
- | </code> |