Outils pour utilisateurs

Outils du site


robotics:computing:xenomai_install_on_roboard

Ceci est une ancienne révision du document !


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 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.
Hardware used :
Downloads :

Linux Install

We install Ubuntu Desktop edition. But Server edition could be used too if you install from an USB CD-Rom drive2). 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

Download Xenomai, the kernel and its corresponding adeos-ipipe patch from the links given in the 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 3).

Extract kernel sources :

 $ tar xjpf linux-2.6.32.11.tar.bz2

Extract Xenomai sources :

$ tar xjpf xenomai-2.5.2.tar.bz2

Copy the adeos patch in the Xenomai source tree :

$ mv adeos-ipipe-2.6.32.11-x86-2.6-02.patch xenomai-2.5.2/ksrc/arch/x86/patches/

Enter Xenomai source directory :

$ cd xenomai-2.5.2/

Now prepare your kernel by applying suitable patches :

$ 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 arch/x86/include/asm/entry_arch.h
patching file arch/x86/include/asm/hw_irq.h
patching file arch/x86/include/asm/i387.h
patching file arch/x86/include/asm/i8259.h
patching file arch/x86/include/asm/ipi.h
patching file arch/x86/include/asm/ipipe.h
patching file arch/x86/include/asm/ipipe_32.h
patching file arch/x86/include/asm/ipipe_64.h
patching file arch/x86/include/asm/ipipe_base.h
patching file arch/x86/include/asm/irq_vectors.h
patching file arch/x86/include/asm/irqflags.h
patching file arch/x86/include/asm/mmu_context.h
patching file arch/x86/include/asm/nmi.h
patching file arch/x86/include/asm/processor.h
patching file arch/x86/include/asm/system.h
patching file arch/x86/include/asm/traps.h
patching file arch/x86/kernel/Makefile
patching file arch/x86/kernel/apic/apic.c
patching file arch/x86/kernel/apic/apic_flat_64.c
patching file arch/x86/kernel/apic/io_apic.c
patching file arch/x86/kernel/apic/ipi.c
patching file arch/x86/kernel/apic/nmi.c
patching file arch/x86/kernel/apic/x2apic_cluster.c
patching file arch/x86/kernel/apic/x2apic_phys.c
patching file arch/x86/kernel/cpu/mtrr/cyrix.c
patching file arch/x86/kernel/cpu/mtrr/generic.c
patching file arch/x86/kernel/dumpstack.c
patching file arch/x86/kernel/dumpstack_32.c
patching file arch/x86/kernel/dumpstack_64.c
patching file arch/x86/kernel/entry_32.S
patching file arch/x86/kernel/entry_64.S
patching file arch/x86/kernel/i8253.c
patching file arch/x86/kernel/i8259.c
patching file arch/x86/kernel/ipipe.c
patching file arch/x86/kernel/irq.c
patching file arch/x86/kernel/irqinit.c
patching file arch/x86/kernel/process.c
patching file arch/x86/kernel/process_32.c
patching file arch/x86/kernel/process_64.c
patching file arch/x86/kernel/smp.c
patching file arch/x86/kernel/smpboot.c
patching file arch/x86/kernel/time.c
patching file arch/x86/kernel/traps.c
patching file arch/x86/kernel/vm86_32.c
patching file arch/x86/lib/mmx_32.c
patching file arch/x86/lib/thunk_64.S
patching file arch/x86/mm/fault.c
patching file arch/x86/mm/tlb.c
patching file drivers/pci/htirq.c
patching file drivers/serial/8250.c
patching file fs/exec.c
patching file include/asm-generic/atomic.h
patching file include/asm-generic/bitops/atomic.h
patching file include/asm-generic/cmpxchg-local.h
patching file include/asm-generic/percpu.h
patching file include/linux/hardirq.h
patching file include/linux/ipipe.h
patching file include/linux/ipipe_base.h
patching file include/linux/ipipe_compat.h
patching file include/linux/ipipe_lock.h
patching file include/linux/ipipe_percpu.h
patching file include/linux/ipipe_tickdev.h
patching file include/linux/ipipe_trace.h
patching file include/linux/irq.h
patching file include/linux/kernel.h
patching file include/linux/preempt.h
patching file include/linux/sched.h
patching file include/linux/spinlock.h
patching file include/linux/spinlock_api_smp.h
patching file init/Kconfig
patching file init/main.c
patching file kernel/Makefile
patching file kernel/exit.c
patching file kernel/fork.c
patching file kernel/ipipe/Kconfig
patching file kernel/ipipe/Kconfig.debug
patching file kernel/ipipe/Makefile
patching file kernel/ipipe/core.c
patching file kernel/ipipe/tracer.c
patching file kernel/irq/chip.c
patching file kernel/irq/handle.c
patching file kernel/lockdep.c
patching file kernel/panic.c
patching file kernel/power/hibernate.c
patching file kernel/printk.c
patching file kernel/sched.c
patching file kernel/signal.c
patching file kernel/spinlock.c
patching file kernel/time/tick-common.c
patching file kernel/time/tick-sched.c
patching file kernel/timer.c
patching file kernel/trace/ftrace.c
patching file lib/Kconfig.debug
patching file lib/bust_spinlocks.c
patching file lib/ioremap.c
patching file lib/smp_processor_id.c
patching file mm/memory.c
patching file mm/mmu_context.c
patching file mm/vmalloc.c

Next configure your kernel with $ make menuconfig command or use my configuration file :

$ cp config_roboard.txt linux-2.6.32.11/.config

Then you can launch the build process that will result in a nice debian package :

$ make-kpkg --uc --us buildpackage
1) is needed to download softwares because Ubuntu does not support roboard ethernet card by default. Also, desktop PC makes kernel compilation faster.
2) Ubuntu Server edition can not be installed from an USB key for now
3) The kernel version trivial number could lightly differ. But it is more safe to keep same version for kernel and adeos patch
robotics/computing/xenomai_install_on_roboard.1271437943.txt.gz · Dernière modification: 2012/09/20 10:52 (modification externe)