1 Installing Xenomai 2.6.5
3 -------------------------------------------------------------------------------
11 2.1. Preparing the target kernel
12 2.2. Configuring and building the target kernel
13 2.3. Building the user-space support
15 2.3.1. Feature conflict resolution
16 2.3.2. Generic configure options
17 2.3.3. Arch-specific configure options
18 2.3.4. Cross-compilation
20 3. Typical installation procedures
22 3.1. Building for x86_32/64bit
23 3.2. Building for the PowerPC architecture
24 3.3. Building for the Blackfin
26 3.5. Building for NIOS II
28 3.5.1. Minimum hardware requirements
29 3.5.2. Xenomai compilation for NIOS II
31 4. Testing the installation
33 4.1. Testing the kernel
34 4.2. Testing the user-space support
36 -------------------------------------------------------------------------------
38 The latest version of this document is available at this address:
39 "http://www.xenomai.org/documentation/xenomai-2.6/html/README.INSTALL/".
41 For questions, corrections and improvements, write to the mailing list:
42 "xenomai@xenomai.org".
48 Starting with version 2.1, Xenomai follows a split source model, decoupling the
49 kernel space support from the user-space libraries used in accessing the
52 To this end, kernel and user-space Xenomai components are respectively
53 available under the ksrc/ and src/ sub-trees.
55 The ksrc/ sub-tree providing the kernel space support is seen as a built-in
56 extension of the Linux kernel, and no more as a collection of separate
57 out-of-tree modules. A direct benefit of such approach is the ability to build
58 the Xenomai real-time subsystem statically into the target kernel, or as
59 loadable modules as with earlier versions. therefore, the usual Linux kernel
60 configuration process will be normally used to define the various settings for
61 the Xenomai kernel components. Sections "Preparing the target kernel" and
62 "Configuring and building the kernel" document the installation process of this
65 The src/ sub-tree contains the various user-space libraries and commands
66 provided by the Xenomai framework. This tree can be built separately from the
67 kernel support, even if the latter is absent from the build system. Section
68 "Building the user-space support" documents the installation process of this
71 If you are using a Debian based distribution, it is also possible to install,
72 and even build Xenomai as a set of Debian packages. For further details, see
73 this page: "http://www.xenomai.org/index.php/Building_Debian_packages".
80 2.1. Preparing the target kernel
81 --------------------------------
83 Xenomai provides a real-time sub-system seamlessly integrated to Linux,
84 therefore the first step is to build it as part of the target kernel. To this
85 end, scripts/prepare-kernel.sh is a shell script which sets up the target
86 kernel properly. The syntax is as follows:
88 $ scripts/prepare-kernel.sh --linux=<linux-srctree>
89 [--adeos=<adeos-patch>] [--arch=<target-arch>]
92 specifies the path of the target kernel source tree. Such kernel tree being
93 configured or not makes no difference and is valid either way.
95 specifies the path of the Adeos patch to apply against the kernel tree.
96 Suitable patches are available with Xenomai under ksrc/arch/<target-arch>/
97 patches. This parameter can be omitted if Adeos has already been patched in
98 or the script shall suggest an appropriate one. In any case, the script
99 will not try to apply it again whenever a former patch is detected.
101 tells the script about the target architecture. If unspecified, the build
102 system architecture is detected and suggested as a reasonable default.
104 For instance, the following command would prepare the Linux tree located at /
105 usr/src/linux-2.6.23-ipipe in order to include the Xenomai support:
108 $ scripts/prepare-kernel.sh --linux=/usr/src/linux-2.6.23-ipipe
110 Note: The script will infer the location of the Xenomai kernel code from its
111 own location within the Xenomai source tree. In other words, if /usr/src/
112 xenomai-2.4/script/prepare-kernel.sh is executing, then Xenomai’s kernel
113 support available from /usr/src/xenomai-2.4/ksrc will be bound to the target
117 2.2. Configuring and building the target kernel
118 -----------------------------------------------
120 Once the target kernel has been prepared, the kernel should be configured
121 following its usual configuration procedure. All Xenomai configuration options
122 are available from the "Real-time subsystem" toplevel menu.
124 There are several important kernel configuration options, some are documented
125 in the TROUBLESHOOTING guide, others in the "Typical installation procedures"
126 for the architecture you are using.
128 Once configured, the kernel should be built as usual.
130 If you want several different configs/builds at hand, you can reuse the same
131 source by adding O=../build-<target> to each make invocation. See section
132 "Building for the PowerPC architecture" for an example
134 In order to cross-compile the Linux kernel, pass an ARCH and CROSS_COMPILE
135 variable on make command line. See sections "Building for the PowerPC
136 architecture", "Building for the Blackfin", "Building for ARM" and "Building
137 for NIOS II" for examples.
140 2.3. Building the user-space support
141 ------------------------------------
143 A regular autoconf script is provided in order to prepare for building the
144 user-space support. The options listed below can be passed to this script.
145 Those options only affect the libraries compiled as part of Xenomai’s
146 user-space support, but in any case, they never impact the kernel-based
150 2.3.1. Feature conflict resolution
151 ----------------------------------
153 Because of the strong decoupling between the kernel and user-space build
154 procedures, Xenomai needs to make sure that all user-space options selected at
155 configuration time will be consistent with the actual support the runtime
156 libraries will get from the target kernel. For instance, enabling TSC support
157 in user-space for x86 albeit the kernel has been compiled with CONFIG_X86_TSC
158 disabled would certainly lead to runtime problems if uncaught, since Xenomai
159 and the application would not agree on the high precision clock to use for
160 their timings. Furthermore, most of these issues cannot be probed for during
161 compilation, because the target generally has different features than the host,
162 even when they are the same arch (ex 386 vs 686).
164 In order to solve those potential issues, each Xenomai architecture port
165 defines a set of critical features which is tested for consistency, each time a
166 user-space application binds itself to a real-time interface in kernel space.
167 Unresolvable conflicts are reported and the execution stops immediately in such
170 Options that need perfect matching between both sides are marked as "strong" in
171 the following lists, others that may differ are marked as "weak". The way
172 Xenomai deals with tolerated discrepancies is decided on a case-by-case basis,
173 depending on the option considered. When not applicable, the binding type
176 For instance, UP and SMP-enabled kernels can run either UP or SMP-enabled
177 user-space applications indifferently, since the SMP option’s binding is weak.
178 On the other hand, x86-based applications linked against Xenomai libraries
179 which have been compiled with the x86-tsc option on, must run on a kernel built
180 with CONFIG_X86_TSC set, since the x86-tsc option’s binding is strong.
183 2.3.2. Generic configure options
184 --------------------------------
186 NAME DESCRIPTION [BINDING,]
189 --prefix Installation directory /usr/xenomai
191 --enable-debug Enable debug symbols (-g) disabled
193 --enable-smp Enable SMP support ^[a] weak, enabled
195 --with-atomic-ops Selects which implementation of atomic arch-dependent
196 = access operations shall be used within
199 --with-atomic-ops=builtins selects the GCC
200 builtins, i.e. _sync*() services.
202 --with-atomic-ops=ad-hoc selects the ad hoc
203 Xenomai implementation.
205 When this switch is not specified, a
206 conservative choice is made depending on
207 the target architecture.
209 Unless the GCC toolchain is outdated (i.e.
210 does not provide these operations) or
211 broken, --with-atomic-ops=builtins should
214 ^[a] The SMP switch is used to tell the build system whether CPU
215 synchronization instructions should be emitted in atomic constructs appearing
216 in some Xenomai libraries, enabling them for SMP execution. This feature is
217 turned on by default on all SMP-enabled architecture Xenomai supports, i.e.
218 x86_32/64, powerpc_32/64 and ARM. One may override this default setting by
219 passing --disable-smp explicitely for those architectures. SMP-enabled userland
220 code may run over SMP or UP kernels. However, Xenomai will deny running UP-only
221 userland code (i.e. when --disable-smp is in effect) over an SMP kernel.
224 2.3.3. Arch-specific configure options
225 --------------------------------------
227 NAME DESCRIPTION [BINDING,]
230 --enable-x86-sep Enable x86 SEP instructions for issuing strong,
231 syscalls. You will also need NPTL. enabled
233 --enable-x86-tsc Enable x86 TSC for timings You must have TSC strong,
236 --enable-arm-tsc Enable ARM TSC emulation. ^[b] weak, kuser
238 --enable-arm-quirks Enable quirks for specific ARM SOCs weak,
239 Currently sa1100 and xscale3 are supported. disabled
241 ^[a] Each option enabled by default can be forcibly disabled by passing
242 --disable-<option> to the configure script.
244 ^[b] In the unusual situation where Xenomai kernel support for the target SOC
245 does not support the kuser generic emulation, pass this option to use another
246 tsc emulation. See --help for a list of valid values.
249 2.3.4. Cross-compilation
250 ------------------------
252 In order to cross-compile Xenomai user-space support, you will need to pass a
253 --host and --build option to the configure script. The --host option allow to
254 select the architecture for which the libraries and programs are built. The
255 --build option allows to choose the architecture on which the compilation tools
256 are run, i.e. the system running the configure script.
258 Since cross-compiling requires specific tools, such tools are generally
259 prefixed with the host architecture name; for example, a compiler for the power
260 PC architecture may be named powerpc-405-linux-gnu-gcc.
262 When passing the option --host=powerpc-405-linux-gnu to configure, configure
263 will automatically use powerpc-405-linux-gnu- as a prefix to all compilation
264 tools names and infer the host architecture name from this prefix. If configure
265 is unable to infer the architecture name from the cross-compilation tools
266 prefix, you will have to manually pass the name of all compilation tools using
267 at least the CC and LD, variables on configure command line. See sections
268 "Building for the PowerPC architecture" and "Building for the Blackfin" for an
269 example using the CC and LD variable, or "Building for ARM" for an example
270 using the --host argument.
272 The easiest way to build a GNU cross-compiler might involve using crosstool-ng,
273 available here: "http://crosstool-ng.org/".
275 If you want to avoid to build your own cross compiler, you might if find easier
276 to use the ELDK. It includes the GNU cross development tools, such as the
277 compilers, binutils, gdb, etc., and a number of pre-built target tools and
278 libraries necessary to provide some functionality on the target system. See
279 here: "http://www.denx.de/wiki/DULG/ELDK" for further details.
281 Some other pre-built toolchains:
283 * Mentor Sourcery CodeBench Lite Edition, available here:
284 "http://www.mentor.com/embedded-software/sourcery-tools/sourcery-codebench/editions/lite-edition/";
285 * Linaro toolchain (for the ARM architecture), available here:
286 "https://launchpad.net/linaro-toolchain-binaries".
289 3. Typical installation procedures
290 ----------------------------------
292 The examples in following sections use the following conventions:
295 path to the target kernel sources
297 path to the Xenomai sources
299 path to a clean build directory
301 path to a directory that will hold the installed file temporarily before
302 they are moved to their final location; when used in a cross-compilation
303 setup, it is usually a NFS mount point from the target’s root directory to
304 the local build host, as a consequence of which running make DESTDIR=
305 $staging_dir install on the host immediately updates the target system with
306 the installed programs and libraries.
309 3.1. Building for x86_32/64bit
310 ------------------------------
312 Since Linux 2.6.24, x86_32 and x86_64 trees are merged. Therefore, building
313 Xenomai for 2.6.24 or later is almost the same, regardless of the 32/64bit
314 issue. You should note, however, that it is not possible to run xenomai
315 libraries compiled for x86_32 with a kernel compiled for x86_64.
317 Assuming that you want to build natively for a x86_64 system (x86_32
318 cross-build options from x86_64 appear between brackets), you would typically
321 $ $xenomai_root/scripts/prepare-kernel.sh --arch=x86 \
322 --adeos=$xenomai_root/ksrc/arch/x86/patches/adeos-ipipe-2.6.29.4-x86-X.Y-ZZ.patch \
325 $ make [ARCH=i386] xconfig/gconfig/menuconfig
327 …configure the kernel (see also the recommended settings here:
328 "http://www.xenomai.org/index.php/Configuring_x86_kernels").
330 Enable Xenomai options, then install as needed with:
332 $ make [ARCH=i386] bzImage modules
333 $ mkdir $build_root && cd $build_root
334 $ $xenomai_root/configure --enable-x86-sep \
335 [--host=i686-linux CFLAGS="-m32 -O2" LDFLAGS="-m32"]
338 Now, let’s say that you really want to build Xenomai for a Pentium-based x86
339 32bit platform running a legacy 2.6.23 kernel, using the native host toolchain;
340 the typical steps would be as follows:
342 $ $xenomai_root/scripts/prepare-kernel.sh --arch=i386 \
343 --adeos=$xenomai_root/ksrc/arch/x86/patches/adeos-ipipe-2.6.23-i386-X.Y-ZZ.patch \
346 $ make xconfig/gconfig/menuconfig
348 …configure the kernel (see also the recommended settings here:
349 "http://www.xenomai.org/index.php/Configuring_x86_kernels").
351 Enable Xenomai options, then install as needed with:
353 $ make bzImage modules
354 $ mkdir $build_root && cd $build_root
355 $ $xenomai_root/configure --enable-x86-sep
358 Similarly, for a legacy kernel on a 64bit platform, you would use:
360 $ $xenomai_root/scripts/prepare-kernel.sh --arch=x86_64 \
361 --adeos=$xenomai_root/ksrc/arch/x86/patches/adeos-ipipe-2.6.23-x86_64-X.Y-ZZ.patch \
364 $ make xconfig/gconfig/menuconfig
366 …configure the kernel (see also the recommended settings here:
367 "http://www.xenomai.org/index.php/Configuring_x86_kernels").
369 Enable Xenomai options, then install as needed with:
371 $ make bzImage modules
372 $ mkdir $build_root && cd $build_root
373 $ $xenomai_root/configure
376 Once the compilation has completed, /usr/xenomai should contain the user-space
377 librairies and header files you would use to build applications that call
378 Xenomai’s real-time support in kernel space.
380 The remaining examples illustrate how to cross-compile Xenomai for various
381 architectures. Of course, you will have to install the proper cross-compilation
382 toolchain for the target system first, in order to build Xenomai.
385 3.2. Building for the PowerPC architecture
386 ------------------------------------------
388 PowerPC has a legacy arch/ppc branch, and a newer, current arch/powerpc tree.
389 Xenomai supports both, but using arch/powerpc is definitely recommended. To
390 help the preparation script to pick the right one, you have to specify either
391 --arch=powerpc (current) or --arch=ppc (legacy). Afterwards, the rest should be
394 A typical cross-compilation setup, in order to build Xenomai for a lite5200
395 board running a recent 2.6.29.4 kernel. We use DENX’s ELDK cross-compiler:
397 $ $xenomai_root/scripts/prepare-kernel.sh --arch=powerpc \
398 --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.29.4-powerpc-2.6-00.patch \
401 $ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- xconfig/gconfig/menuconfig
403 …select the kernel and Xenomai options, save the configuration
405 $ make ARCH=powerpc CROSS_COMPILE=ppc_6xx- uImage modules
407 …manually install the u-boot image and modules to the proper location
410 $ $xenomai_root/configure --host=powerpc-unknown-linux-gnu \
411 CC=ppc_6xx-gcc AR=ppc_6xx-ar LD=ppc_6xx-ld
412 $ make DESTDIR=$staging_dir install
414 Another cross-compilation setup, in order to build Xenomai for a powerpc64
415 PA-Semi board running a recent 2.6.29.4 kernel:
417 $ $xenomai_root/scripts/prepare-kernel.sh --arch=powerpc \
418 --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.29.4-powerpc-2.6-00.patch \
421 $ make ARCH=powerpc CROSS_COMPILE=powerpc64-linux- xconfig/gconfig/menuconfig
423 …select the kernel and Xenomai options, save the configuration
425 $ make ARCH=powerpc CROSS_COMPILE=powerpc64-linux-
427 …manually install the vmlinux image and modules to the proper location
430 $ $xenomai_root/configure --host=powerpc64-linux \
431 CC=powerpc64-linux-gcc AR=powerpc64-linux-ar LD=powerpc64-linux-ld
432 $ make DESTDIR=$staging_dir install
434 Yet another cross-compilation setup, this time for building Xenomai for a
435 PowerPC-405-based system running a legacy arch/ppc 2.6.14 kernel (we do support
436 recent ones as well on this platform):
438 $ $xenomai_root/scripts/prepare-kernel.sh --arch=ppc \
439 --adeos=$xenomai_root/ksrc/arch/powerpc/patches/adeos-ipipe-2.6.14-ppc-1.5-*.patch \
441 $ mkdir -p $build_root/linux
443 $ make ARCH=ppc CROSS_COMPILE=ppc_4xx- O=$build_root/linux xconfig/gconfig/menuconfig
445 …select the kernel and Xenomai options, save the configuration
447 $ make ARCH=ppc CROSS_COMPILE=ppc_4xx- O=$build_root/linux bzImage modules
449 …manually install the kernel image, system map and modules to the proper
452 $ make $build_root/xenomai && cd $build_root/xenomai
453 $ $xenomai_root/configure --build=i686-pc-linux-gnu --host=ppc-unknown-linux-gnu \
454 CC=ppc_4xx-gcc LD=ppc_4xx-ld
455 $ make DESTDIR=$staging_dir install
458 3.3. Building for the Blackfin
459 ------------------------------
461 The Blackfin is an MMU-less, DSP-type architecture running uClinux.
463 $ $xenomai_root/scripts/prepare-kernel.sh --arch=blackfin \
464 --adeos=$xenomai_root/ksrc/arch/blackfin/patches/adeos-ipipe-bf53x-*.patch \
467 $ make ARCH=blackfin CROSS_COMPILE=bfin-uclinux- xconfig/gconfig/menuconfig
469 …select the kernel and Xenomai options, then compile with:
473 …then install as needed
475 $ cp images/linux /tftpboot/...
477 …build the user-space support
479 $ mkdir $build_root && cd $build_root
480 $ $xenomai_root/configure --host=blackfin-unknown-linux-gnu \
481 CC=bfin-linux-uclibc-gcc AR=bfin-linux-uclibc-ar LD=bfin-linux-uclibc-ld
482 $ make DESTDIR=$staging_dir install
484 You may also want to have a look at the hands-on description about configuring
485 and building a Xenomai system for the Blackfin architecture, available at this
486 address: "http://docs.blackfin.uclinux.org/doku.php?id=linux-kernel:adeos".
489 Xenomai uses the FDPIC shared library format on this architecture. In
490 case of problem running the testsuite, try restarting the last two build
491 steps, passing the --disable-shared option to the "configure" script.
494 3.4. Building for ARM
495 ---------------------
497 Using codesourcery toolchain named arm-none-linux-gnueabi-gcc and compiling for
498 a CSB637 board (AT91RM9200 based), a typical compilation will look like:
500 $ $xenomai_root/scripts/prepare-kernel.sh --arch=arm \
501 --adeos=$xenomai_root/ksrc/arch/arm/patches/adeos-ipipe-2.6.20-arm-* \
504 $ mkdir -p $build_root/linux
505 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- O=$build_root/linux \
507 $ make ARCH=arm CROSS_COMPILE=arm-none-linux-gnueabi- O=$build_root/linux \
510 …manually install the kernel image, system map and modules to the proper
513 $ mkdir $build_root/xenomai && cd $build_root/xenomai
514 $ $xenomai_root/configure CFLAGS="-march=armv4t" LDFLAGS="-march=armv4t" \
515 --build=i686-pc-linux-gnu --host=arm-none-linux-gnueabi
516 $ make DESTDIR=$staging_dir install
518 [Important] Important
519 Contrarily to previous releases, Xenomai no longer passes any arm
520 architecture specific flags, or FPU flags to gcc, so, users are
521 expected to pass them using the CFLAGS and LDFLAGS variables as
522 demonstrated above, where the AT91RM9200 is based on the ARM920T
523 core, implementing the armv4 architecture. The following table
524 summarizes the CFLAGS and options which were automatically passed
525 in previous revisions and which now need to be explicitely passed
526 to configure, for the supported SOCs:
528 Table 3.1. ARM configure options and compilation flags
530 SOC CFLAGS configure options
532 at91rm9200 -march=armv4t -msoft-float
534 at91sam9x -march=armv5 -msoft-float
536 imx1 -march=armv4t -msoft-float
538 imx21 -march=armv5 -msoft-float
540 imx31 -march=armv6 -mfpu=vfp
542 imx51/imx53 -march=armv7-a -mfpu=vfp3 ^[a]
544 imx6q -march=armv7-a -mfpu=vfp3 ^[a]
546 ixp4xx -march=armv5 -msoft-float
548 omap3 -march=armv7-a -mfpu=vfp3 ^[a]
550 omap4 -march=armv7-a -mfpu=vfp3 ^[a]
552 orion -march=armv5 -mfpu=vfp
554 pxa -march=armv5 -msoft-float
556 pxa3xx -march=armv5 -msoft-float --enable-arm-quirks=xscale3
558 s3c24xx -march=armv4t -msoft-float
560 sa1100 -march=armv4t -msoft-float --enable-arm-quirks=sa1100
562 ^[a] Depending on the gcc versions the flag for armv7 may be -march=armv7-a or
566 It is possible to build for an older architecture version (v6 instead of v7, or
567 v4 instead of v5), if your toolchain does not support the target architecture,
568 the only restriction being that if SMP is enabled, the architecture should not
572 3.5. Building for NIOS II
573 -------------------------
575 NIOS II is a softcore processor developped by Altera and is dedicated to the
576 Altera’s FPGA circuits.
578 NIOS II with no MMU enabled is supported by the uClinux distribution.
581 3.5.1. Minimum hardware requirements
582 ------------------------------------
584 You have to start with a minimal system with at least:
586 * A Nios II processor in f or s core version, with hardware multiplier,
587 (f-core suggested, s-core is slower) and with no MMU enabled.
588 * SDRAM (minimum requirement 8MB).
589 * One full featured timer named sys_clk_timer used for uClinux.
590 * A jtag/serial uart or a real serial uart (preferred).
592 Note in Linux, IRQ 0 means auto-detected, so you must not use IRQ 0 for ANY
595 The Xenomai port for NIOS II uses extra hardware that you have to add in SOPC
598 * A full featured 32-bit Timer named hrtimer with a 1 microsecond period.
599 * A full featured High Resolution 64-bit Timer named hrclock used for time
600 stamping (1 microsecond period for example).
602 [Important] Important
603 Please respect hrtimer and hrclock names, the Xenomai port depends
606 You have to use Altera’s Quartus II version 9.0 at least for synthesis.
608 A good start for your design is to use reference design shipped with your
611 For example, with an Altera’s board, you may use the standard design. Standard
612 reference designs for Altera’s boards are available here:
613 "http://www.altera.com/support/examples/nios2/exm-nios2.html".
616 3.5.2. Xenomai compilation for NIOS II
617 --------------------------------------
619 You should first verify that uClinux without Xenomai can run on the target
622 The typical actions for building the uClinux kernel for NIOS II (available
623 here: "http://www.nioswiki.com/") are:
625 If $uClinux-dist is the path of NIOS II uClinux release, for example:
627 /home/test/nios2-linux/uClinux-dist
631 $ make vendor_hwselect SYSPTF=<path to your system ptf>
634 If the NIOS II cross-compiler is called nios2-linux-gcc, a typical compilation
637 $ $xenomai_root/scripts/prepare-kernel.sh --arch=nios2 \
638 --adeos=$xenomai_root/ksrc/arch/nios2/patches/adeos-ipipe-2.6.26-rc6-nios2-* \
640 $ $xenomai_root/configure --host=nios2-linux
641 $ make install DESTDIR=$uClinux-dist/romf
646 4. Testing the installation
647 ---------------------------
650 4.1. Testing the kernel
651 -----------------------
653 In order to test the Xenomai installation, you should first try to boot the
654 patched kernel. The kernel boot logs should show messages like:
656 I-pipe: head domain Xenomai registered.
657 Xenomai: hal/<arch> started.
658 Xenomai: scheduling class idle registered.
659 Xenomai: scheduling class rt registered.
660 Xenomai: real-time nucleus v2.6.1 (Light Years Away) loaded.
661 Xenomai: debug mode enabled.
662 Xenomai: starting native API services.
663 Xenomai: starting POSIX services.
664 Xenomai: starting RTDM services.
666 Where <arch> is the architecture you are using. If the kernel fails to boot, or
667 the log messages indicates an error status instead, see the TROUBLESHOOTING
671 4.2. Testing the user-space support
672 -----------------------------------
674 In order to test Xenomai user-space support, launch the latency test:
678 The latency test should display a message every second with minimal, maximal
679 and average latency values, such as:
682 == Sampling period: 100 us
683 == Test mode: periodic user-mode task
684 == All results in microseconds
686 RTT| 00:00:01 (periodic user-mode task, 100 us period, priority 99)
687 RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst
688 RTD| 1.615| 1.923| 9.846| 0| 0| 1.615| 9.846
689 RTD| 1.615| 1.923| 9.692| 0| 0| 1.615| 9.846
690 RTD| 1.538| 1.923| 10.230| 0| 0| 1.538| 10.230
691 RTD| 1.615| 1.923| 10.384| 0| 0| 1.538| 10.384
692 RTD| 1.615| 1.923| 11.230| 0| 0| 1.538| 11.230
693 RTD| 1.615| 1.923| 9.923| 0| 0| 1.538| 11.230
694 RTD| 1.615| 1.923| 9.923| 0| 0| 1.538| 11.230
695 RTD| 1.615| 1.923| 11.076| 0| 0| 1.538| 11.230
696 RTD| 1.615| 1.923| 10.538| 0| 0| 1.538| 11.230
697 RTD| 1.615| 1.923| 11.076| 0| 0| 1.538| 11.230
698 RTD| 1.615| 1.923| 10.615| 0| 0| 1.538| 11.230
699 RTD| 1.615| 1.923| 10.076| 0| 0| 1.538| 11.230
700 RTD| 1.615| 1.923| 9.923| 0| 0| 1.538| 11.230
701 RTD| 1.538| 1.923| 10.538| 0| 0| 1.538| 11.230
702 RTD| 1.615| 1.923| 10.923| 0| 0| 1.538| 11.230
703 RTD| 1.538| 1.923| 10.153| 0| 0| 1.538| 11.230
704 RTD| 1.615| 1.923| 9.615| 0| 0| 1.538| 11.230
705 RTD| 1.615| 1.923| 10.769| 0| 0| 1.538| 11.230
706 RTD| 1.615| 1.923| 9.153| 0| 0| 1.538| 11.230
707 RTD| 1.538| 1.923| 10.307| 0| 0| 1.538| 11.230
708 RTD| 1.615| 1.923| 9.538| 0| 0| 1.538| 11.230
709 RTT| 00:00:22 (periodic user-mode task, 100 us period, priority 99)
710 RTH|----lat min|----lat avg|----lat max|-overrun|---msw|---lat best|--lat worst
711 RTD| 1.615| 1.923| 11.384| 0| 0| 1.538| 11.384
712 RTD| 1.615| 1.923| 10.076| 0| 0| 1.538| 11.384
713 RTD| 1.538| 1.923| 9.538| 0| 0| 1.538| 11.384
714 ---|-----------|-----------|-----------|--------|------|-------------------------
715 RTS| 1.538| 1.923| 11.384| 0| 0| 00:00:25/00:00:25
718 If the latency test displays an error message, hangs, or displays unexpected
719 values, see the TROUBLESHOOTING guide.
721 If the latency test succeeds, you should try next to run a latency test under
722 load to evaluate the latency test of your system, the xeno-test script allows
723 doing that. see xeno-test(1) manual page for more details.