Difference between revisions of "Xenomai"
m |
(moved to manual installation page) |
||
Line 1: | Line 1: | ||
{{Under Construction}} | {{Under Construction}} | ||
+ | ==What is Xenomai ?== | ||
− | + | Xenomai is a real time co-kernel which cooperate with Linux via Adeos. With its help hard real time applications can be developped and run on the Armadeus boards.<br> | |
− | + | ||
− | + | ||
− | + | ||
− | <br | + | |
− | + | Thanks to Adeos, Xenomai will receive the interrupts first and decide | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
to handle them or not. If not, they will then be transfered to the regular | to handle them or not. If not, they will then be transfered to the regular | ||
Linux kernel. Also, Xenomai provides a framework to develop applications which | Linux kernel. Also, Xenomai provides a framework to develop applications which | ||
Line 20: | Line 13: | ||
such as POSIX. Thus, porting third party real time applications to Xenomai is | such as POSIX. Thus, porting third party real time applications to Xenomai is | ||
a fairly simple process. | a fairly simple process. | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==Compilation== | ==Compilation== | ||
− | |||
===Xenomai kernel space support=== | ===Xenomai kernel space support=== |
Revision as of 16:36, 11 March 2009
Page under construction... Informations on this page are not guaranteed !!
Contents
What is Xenomai ?
Xenomai is a real time co-kernel which cooperate with Linux via Adeos. With its help hard real time applications can be developped and run on the Armadeus boards.
Thanks to Adeos, Xenomai will receive the interrupts first and decide to handle them or not. If not, they will then be transfered to the regular Linux kernel. Also, Xenomai provides a framework to develop applications which can be easily moved between the Real Time Xenomai environment and the regular Linux system. Moreover, Xeno provides a set of APIs (called "skins") that emulate traditional RTOSes such as VxWorks and pSOS and implement other APIs such as POSIX. Thus, porting third party real time applications to Xenomai is a fairly simple process.
Compilation
Xenomai kernel space support
Xenomai is a co-kernel cooperating with Linux. This suite is made of two parts :
- The Xenomai kernel: It is provided as a patch to the regular Linux kernel and can be compiled as a full part of the kernel or as a regular module.
- Xenomai user space data: This set of file contains:
- header files used to compile Xenomai applications
- Binary files to validate and measure the performace of Xenomai
This section describe how to compile the kernel space for Xenomai.
Here we will patch the Armadeus Linux kernel to add Xenomai features. This is automatically done via the Xenomai script prepare-kernel.sh
$ cd $ARMADEUS_ROOT/xenomai/xenomai-2.4.3 $ ./scripts/prepare-kernel.sh --linux=$ARMADEUS_ROOT/buildroot/build_arm/linux-2.6.24.3/ --arch=arm
- --linux is used to specify which kernel we want to patch
- --arch is used to specify for which platform we want to patch (arm in our case)
Let's configure the Xenomai kernel :
$ cd $ARMADEUS_ROOT $ make linux26-menuconfig
You should see the new entry :
Real-time sub-system --->
Enter in it and check the following to compile Xenomai as a part of the Linux kernel :
[*] Xenomai <*> Nucleus [*] Pervasive real-time support in user-space [ ] Interrupt shield support [*] Priority coupling support [*] Optimize as pipeline head (32) Number of pipe devices (512) Number of registry slots (128) Size of the system heap (Kb) (32) Size of the private stack pool (Kb) [*] Statistics collection [ ] Debug support [ ] Shared interrupts Timing ---> Scalability ---> Machine ---> Interfaces ---> Drivers --->
Additionaly, to enable / disable the different available skins, go into "Interfaces --->" :
<*> Native API ---> <*> POSIX API ---> < > pSOS+ emulator ---> < > uITRON API ---> < > VRTX emulator ---> < > VxWorks emulator ---> < > RTAI emulator ---> <*> Real-Time Driver Model --->
Finally, compile Xenomai:
$ make
Xenomai User Space support
Because we need to cross compile Xenomai applications for ARM, we will use the
cross compilations tools provided by Armadeus/Buildroot.
Let's update our PATH accordingly :
$ export PATH=$ARMADEUS_ROOT/buildroot/build_armv4t/staging_dir/bin:$PATH
We are now ready to start the user space compilation.
First, let's configure Xeno and create the makefiles :
$ cd $ARMADEUS_ROOT/xenomai/xenomai-2.4.3 $ ./configure --enable-arm-mach=imx --host=arm-linux --datarootdir=/xenodoc
- --enable-arm-mach : We want to build Xeno for the i.MX (ARM) architecture
- --host : Prefix used for all compilation tools
- --datarootdir :
Finally, compile user space utilities.
$ make
Deploy
First, install Xenomai data in $ARMADEUS_ROOT/xenomai/root-dirs/target
$ cd $ARMADEUS_ROOT/xenomai/xenomai-2.4.3 $ make DESTDIR=$ARMADEUS_ROOT/xenomai/root-dir install
This command will install all Xenomai data in $ARMADEUS_ROOT/xenomai/root-dir.
Have a look in this directory. Note that it contains two sub directories,
xenodoc and usr. xenodoc contains all documentation regarding
Xenomai. As said previously, we will not copy xenodoc on the board.
Instead, we will only transfert the required files to run Xeno applications
on the APF. These files are located under usr/xenomai.
Before modifying the board's root filesystem, we will first make a backup of it.
$ cp -R $ARMADEUS_ROOT/buildroot/project_build_armv4t/apf9328/root $ARMADEUS_ROOT/buildroot/project_build_armv4t/apf9328/root.orig
We can now copy Xeno data to the board's root filesystem:
$ cp -R $ARMADEUS_ROOT/xenomai/root-dir/usr/* $ARMADEUS_ROOT/buildroot/project_build_armv4t/apf9328/root/usr/
And generate the target filesystem
$ cd $ARMADEUS_ROOT $ make
You can now transfer the rootfs and the kernel on the APF.
Validate the installation
Boot the APF and logon as root.
You can double check Xeno is installed correctly :
$ dmesg | grep Xenomai I-pipe: Domain Xenomai registered. Xenomai: hal/arm started. Xenomai: real-time nucleus v2.4.3 (Back to Shalla-Bal) loaded. Xenomai: starting native API services. Xenomai: starting POSIX services. Xenomai: starting RTDM services.
We will now update our environment to add Xenomai features. On the APF, run the following commands:
$ export LD_LIBRARY_PATH=/usr/xenomai/lib:$LD_LIBRARY_PATH $ export PATH=/usr/xenomai/bin:$PATH
To make the changes permanent, add /usr/xenomai/lib to $ARMADEUS_ROOT/buildroot/project_build_armv4t/apf9328/root/etc/ld.so.conf
Now we can run the performance test provided by Xenomai:
$ xeno-test
Links
- Xenomai website
- Adeos installation
- Xenomai manual installation (for reference)