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 [2010/04/16 18:54] 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. | ||
- | |||
- | == 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/]] | ||
- | |||
- | ====== 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 ====== | ||
- | |||
- | 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 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</code> | ||
- | |||
- | Next configure your kernel with **$ make menuconfig** or use my [[.:xenomai_install_on_roboard#configuration file]] : | ||
- | <code>cp config_roboard linux-2.6.32.11/.config</code> |