[FE training-materials-updates] Misc improvements

michael.opdenacker at free-electrons.com michael.opdenacker at free-electrons.com
Wed Jun 27 07:35:06 CEST 2012


- Log -----------------------------------------------------------------
http://git.free-electrons.com/training-materials/commit/?id=313f5d7d1422a1d4fcd6f5a1c1b4519637dd07d7

commit 313f5d7d1422a1d4fcd6f5a1c1b4519637dd07d7
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 07:34:50 2012 +0200

    Misc improvements

diff --git a/labs/sysdev-application-debugging/sysdev-application-debugging.tex b/labs/sysdev-application-debugging/sysdev-application-debugging.tex
index 3fab455..9decd5a 100644
--- a/labs/sysdev-application-debugging/sysdev-application-debugging.tex
+++ b/labs/sysdev-application-debugging/sysdev-application-debugging.tex
@@ -46,8 +46,7 @@ Replace
 \begin{verbatim}
 ::askfirst:/bin/sh
 \end{verbatim}
-which implied using \code{/dev/console} by
-by
+which implied the use of the system console device by
 \begin{verbatim}
 ttyO2::askfirst:/bin/sh
 \end{verbatim}
diff --git a/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex b/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
index c6ecac4..397cc79 100644
--- a/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
+++ b/labs/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
@@ -59,7 +59,7 @@ Update your kernel image on flash.
 \section{MTD partitioning and flashing}
 
 Memory layout and partitioning can be defined inside kernel sources,
-naturally in the \code{arch/<arch>/<march>/<board>.c} since it is
+naturally in the \code{arch/<arch>/<march>/board-<name>.c} since it is
 board dependent. Nevertheless, during device development, it can be
 useful to define partitions at boot time, on the kernel command line.
 
diff --git a/slides/kernel-driver-development-architecture-drivers/kernel-driver-development-architecture-drivers.tex b/slides/kernel-driver-development-architecture-drivers/kernel-driver-development-architecture-drivers.tex
index 3b32a27..2ced16a 100644
--- a/slides/kernel-driver-development-architecture-drivers/kernel-driver-development-architecture-drivers.tex
+++ b/slides/kernel-driver-development-architecture-drivers/kernel-driver-development-architecture-drivers.tex
@@ -403,7 +403,7 @@ static int rtl8150_probe(struct usb_interface *intf,
     export such information to userspace
   \item Used for example by udev to provide automatic module loading,
     firmware loading, device file creation, etc.
-  \item \code{sysfs} is usually mounted in /sys
+  \item \code{sysfs} is usually mounted in \code{/sys}
     \begin{itemize}
     \item \code{/sys/bus/} contains the list of buses
     \item \code{/sys/devices/} contains the list of devices
diff --git a/slides/sysdev-application-development/sysdev-application-development.tex b/slides/sysdev-application-development/sysdev-application-development.tex
index c802ffa..a1c9a14 100644
--- a/slides/sysdev-application-development/sysdev-application-development.tex
+++ b/slides/sysdev-application-development/sysdev-application-development.tex
@@ -401,13 +401,13 @@ See our Linux kernel and driver development training materials\\
 \begin{frame}
   \frametitle{Remote debugging}
   \begin{itemize}
-  \item In a non-embedded environment, debugging takes place using gdb
-    or one of its front-end.
-  \item gdb has direct access to the binary and libraries compiled
+  \item In a non-embedded environment, debugging takes place using \code{gdb}
+    or one of its front-ends.
+  \item \code{gdb} has direct access to the binary and libraries compiled
     with debugging symbols.
   \item However, in an embedded context, the target platform
     environment is often too limited to allow direct debugging with
-    gdb (2.4 MB on x86).
+    \code{gdb} (2.4 MB on x86).
   \item Remote debugging is preferred
     \begin{itemize}
     \item \code{gdb} is used on the development workstation, offering
@@ -431,19 +431,19 @@ See our Linux kernel and driver development training materials\\
 \begin{frame}
   \frametitle{Remote debugging: usage}
   \begin{itemize}
-  \item On the target, run a program through gdbserver.\\
+  \item On the target, run a program through \code{gdbserver}.\\
     Program execution will not start immediately.\\
     \code{gdbserver localhost:<port> <executable> <args>}
     \code{gdbserver /dev/ttyS0 <executable> <args>}
-  \item Otherwise, attach gdbserver to an already running program:\\
+  \item Otherwise, attach \code{gdbserver} to an already running program:\\
     \code{gdbserver --attach localhost:<port> <pid>}
-  \item Then, on the host, run \code{ARCH-linux-gdb} program,\\
-    and use the following gdb commands:
+  \item Then, on the host, run the \code{ARCH-linux-gdb} program,\\
+    and use the following \code{gdb} commands:
     \begin{itemize}
     \item To connect to the target:\\
-      \code{gdb> target remote <target>:<port>} (networking)\\
+      \code{gdb> target remote <ip-addr>:<port>} (networking)\\
       \code{gdb>  target remote /dev/ttyS0} (serial link)
-    \item To tell gdb where shared libraries are:\\
+    \item To tell \code{gdb} where shared libraries are:\\
       \code{gdb> set sysroot <library-path>} (without \code{lib/})
     \end{itemize}
   \end{itemize}
diff --git a/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex b/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
index 55292e4..6166411 100644
--- a/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
+++ b/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
@@ -15,7 +15,7 @@
     \begin{itemize}
     \item Hard disks, floppy disks, RAM disks
     \item USB keys, Compact Flash, SD card, these are based on
-      flashes, but have an integrated controller that emulates a block
+      flash storage, but have an integrated controller that emulates a block
       device
     \end{itemize}
   \item {\bf Flash devices} can be read, but writing requires erasing,
@@ -109,13 +109,14 @@ major minor #blocks name
 \end{frame}
 
 \begin{frame}
-  \frametitle{Creating ext2/ext3 volumes}
+  \frametitle{Creating ext2/ext3/ext4 volumes}
   \begin{itemize}
-  \item To create an empty ext2/ext3 filesystem on a block device or
+  \item To create an empty ext2/ext3/ext4 filesystem on a block device or
     inside an already-existing image file
     \begin{itemize}
     \item \code{mkfs.ext2 /dev/hda3}
     \item \code{mkfs.ext3 /dev/sda2}
+    \item \code{mkfs.ext4 /dev/sda3}
     \item \code{mkfs.ext2 disk.img}
     \end{itemize}
   \item To create a filesystem image from a directory containing all
diff --git a/slides/sysdev-bootloaders-u-boot/sysdev-bootloaders-u-boot.tex b/slides/sysdev-bootloaders-u-boot/sysdev-bootloaders-u-boot.tex
index e5a20b2..71abdb6 100644
--- a/slides/sysdev-bootloaders-u-boot/sysdev-bootloaders-u-boot.tex
+++ b/slides/sysdev-bootloaders-u-boot/sysdev-bootloaders-u-boot.tex
@@ -27,7 +27,7 @@
     \begin{itemize}
     \item It defines the CPU type, the peripherals and their configuration, the
       memory mapping, the U-Boot features that should be compiled in, etc.
-    \item It is a simple \code{.h} file that sets pre-processor
+    \item It is a simple \code{.h} file that sets C pre-processor
       constants. See the \code{README} file for the documentation of
       these constants.
     \end{itemize}
@@ -281,7 +281,7 @@ u-boot # saveenv
   \item \code{netmask}, the network mask to contact the server
   \item \code{ethaddr}, the MAC address, can only be set once
   \item \code{bootdelay}, the delay in seconds before which U-Boot
-    runs bootcmd
+    runs \code{bootcmd}
   \item \code{autostart}, if yes, U-Boot starts automatically an image
     that has been loaded into memory
   \end{itemize}
diff --git a/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex b/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex
index 38c21c0..046146f 100644
--- a/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex
+++ b/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex
@@ -1136,7 +1136,7 @@ met:
   \item Each open-source component comes with a mechanism to
     configure, compile and install it
     \begin{itemize}
-    \item A basic simple \code{Makefile}
+    \item A basic \code{Makefile}
       \begin{itemize}
       \item Need to read the \code{Makefile} to understand how it
         works and how to tweak it for cross-compilation
@@ -1242,7 +1242,7 @@ met:
     \code{CPP}, \code{CXX}, \code{STRIP}, \code{OBJCOPY} must be
     defined to point to the proper cross-compilation tools. The host
     tuple is also by default used as prefix.
-  \item The \code{--host} argument must be passed to the configure script.
+  \item The \code{--host} argument must be passed to the \code{configure} script.
     \begin{itemize}
     \item \code{--build} argument is automatically detected
     \item \code{--target} is only for tools generating code.
@@ -1256,7 +1256,7 @@ met:
 \begin{frame}[fragile]
   \frametitle{Configuring and compiling: cross case (2)}
   \begin{itemize}
-  \item If one simply runs make install, the software will be
+  \item If one simply runs \code{make install}, the software will be
     installed in the directory passed as \code{--prefix}. For
     cross-compiling, one must pass the \code{DESTDIR} argument to
     specify where the software must be installed.
@@ -1362,7 +1362,7 @@ Contents of \code{usr/lib} after installation of {\em libpng} and {\em
     on libraries
   \item The database is made of \code{.pc} files, installed by default in
     \code{<prefix>/lib/pkgconfig/}.
-  \item \code{pkg-config} is used by the configure scripts to get the
+  \item \code{pkg-config} is used by the \code{configure} script to get the
     library configurations
   \item It can also be used manually to compile an application:\\
     \code{arm-linux-gcc -o test test.c $(pkg-config --libs --cflags thelib)}
@@ -1632,7 +1632,8 @@ $(eval $(call AUTOTARGETS))
     \item Good solution for mobile multimedia devices. Getting ready
       for ARM servers too.
     \item Training participants - try Ubuntu on your IGEPv2 board:\\
-      \url{http://releases.linaro.org/images/11.10/oneiric/ubuntu-desktop/}
+      Run the \code{linaro-media-create} utility with images found on
+      \url{http://releases.linaro.org/12.03/ubuntu/oneiric-images/ubuntu-desktop/}
     \end{itemize}
     \column{0.2\textwidth}
     \includegraphics[width=\textwidth]{slides/sysdev-embedded-linux/ubuntu.png}\\
@@ -1710,7 +1711,7 @@ $(eval $(call AUTOTARGETS))
   \end{itemize}
 }
 
-\subsection{Commercial Linux solutions}
+\subsection{Commercial embedded Linux solutions}
 
 \begin{frame}
   \frametitle{Commercial embedded Linux solutions}
diff --git a/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex b/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
index f907d62..e340e2b 100644
--- a/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
+++ b/slides/sysdev-flash-filesystems/sysdev-flash-filesystems.tex
@@ -62,8 +62,7 @@
   MTD partitions are defined in the kernel, in the board
   definitions. Example from
   \code{arch/arm/mach-omap2/board-igep0020.c}:
-\scriptsize
-\begin{verbatim}
+\begin{minted}[fontsize=\scriptsize]{c}
 static struct mtd_partition igep2_flash_partitions[] = {
     {
         .name   = "X-Loader",
@@ -82,7 +81,7 @@ static struct mtd_partition igep2_flash_partitions[] = {
         .size   = MTDPART_SIZ_FULL,
     },
 };
-\end{verbatim}
+\end{minted}
 \end{frame}
 
 \begin{frame}[fragile]
@@ -93,7 +92,8 @@ static struct mtd_partition igep2_flash_partitions[] = {
   \item First need to find the name of the MTD device. Look at the
     kernel log at boot time. In our case, the MTD device name is
     \code{omap2-nand.0}:
-\small
+\end{itemize}
+\tiny
 \begin{verbatim}
 NAND device: Manufacturer ID: 0x2c, Chip ID: 0xbc (Micron NAND 512MiB 1,8V 16-bit)
 Creating 5 MTD partitions on "omap2-nand.0":
@@ -103,7 +103,6 @@ Creating 5 MTD partitions on "omap2-nand.0":
 0x000000280000-0x000000580000 : "Kernel"
 0x000000580000-0x000020000000 : "File System"
 \end{verbatim}
-  \end{itemize}
 \end{frame}
 
 \begin{frame}
@@ -204,8 +203,8 @@ Creating 5 MTD partitions on "omap2-nand.0":
     Caution: unlike some \code{mkfs} commands, it doesn't create a
     filesystem, but a filesystem image.
   \item First, find the erase block size (on the target running Linux):\\
-    \code{cat /sys/class/mtd/mtdx/erasesize} \\
-    \code{262144} (256 KiB)
+    \code{cat /proc/mtd} \\
+    For example: \code{00040000} (256 KiB)
   \item Then create the image on your workstation:\\
     \code{mkfs.jffs2 --pad --no-cleanmarkers --eraseblock=256 -d rootfs/ -o rootfs.jffs2}
   \item The \code{--pad} option pads the jffs2 image contents\\
@@ -285,7 +284,7 @@ Creating 5 MTD partitions on "omap2-nand.0":
     \code{flash_eraseall /dev/mtd2}
   \item The filesystem is automatically formatted at the first mount:\\
     \code{mount -t yaffs2 /dev/mtdblock2 /mnt/flash}
-  \item Images can be created with the mkyaffs tool, from \code{yaffs-utils}\\
+  \item Images can be created with the \code{mkyaffs} tool, from \code{yaffs-utils}\\
     \url{http://code.google.com/p/yaffs2utils/}
   \end{itemize}
 \end{frame}
@@ -363,7 +362,7 @@ Creating 5 MTD partitions on "omap2-nand.0":
     \item \code{ubimkvol /dev/ubi0 -N test -s 116MiB}
     \item \code{ubimkvol /dev/ubi0 -N test -m} (max available size)
     \item The volume is then identified as \code{ubi0:test} for the
-      mount/umount commands
+      \code{mount}/\code{umount} commands
     \end{itemize}
   \item Volume removal with \code{ubirmvol}
     \begin{itemize}
@@ -402,9 +401,9 @@ Creating 5 MTD partitions on "omap2-nand.0":
   \frametitle{Ubinize}
   \begin{itemize}
   \item Images of a full UBI space, containing several volumes can be
-    created using the ubinize utility
+    created using the \code{ubinize} utility
     \begin{itemize}
-    \item Can be written to a raw MTD using \code{nand write} in U-boot.
+    \item Can be written to a raw MTD partition using \code{nand write} in U-boot.
     \item Caution: \code{nand erase} will also erase the Erase
       Counters
     \end{itemize}
diff --git a/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex b/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex
index b334784..61618fe 100644
--- a/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex
+++ b/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex
@@ -37,8 +37,8 @@
     \begin{itemize}
     \item Force these two variables in the main kernel \code{Makefile}
 \begin{verbatim}
-ARCH?= arm
-CROSS_COMPILE?= arm-linux-
+ARCH ?= arm
+CROSS_COMPILE ?= arm-linux-
 \end{verbatim}
     \item Pass \code{ARCH} and \code{CROSS_COMPILE} on the \code{make}
       command line
diff --git a/slides/sysdev-linux-intro-modules/sysdev-linux-intro-modules.tex b/slides/sysdev-linux-intro-modules/sysdev-linux-intro-modules.tex
index 1858b67..812576b 100644
--- a/slides/sysdev-linux-intro-modules/sysdev-linux-intro-modules.tex
+++ b/slides/sysdev-linux-intro-modules/sysdev-linux-intro-modules.tex
@@ -111,9 +111,9 @@ $ dmesg
   \begin{itemize}
   \item Find available parameters:\\
     \code{modinfo snd-intel8x0m}
-  \item Through insmod:\\
+  \item Through \code{insmod}:\\
     \code{sudo insmod ./snd-intel8x0m.ko index=-2}
-  \item Through modprobe:\\
+  \item Through \code{modprobe}:\\
     Set parameters in \code{/etc/modprobe.conf} or in any file in \code{/etc/modprobe.d/}:\\
     \code{options snd-intel8x0m index=-2}
   \item Through the kernel command line, when the driver is built statically into the kernel:\\
diff --git a/slides/sysdev-realtime/sysdev-realtime.tex b/slides/sysdev-realtime/sysdev-realtime.tex
index 2b350af..73a6f17 100644
--- a/slides/sysdev-realtime/sysdev-realtime.tex
+++ b/slides/sysdev-realtime/sysdev-realtime.tex
@@ -134,7 +134,7 @@
   \begin{itemize}
   \item In Linux, many interrupt handlers are split in two parts
     \begin{itemize}
-    \item A top-half, started by the CPU as soon as interrupt are
+    \item A top-half, started by the CPU as soon as interrupts are
       enabled. It runs with the interrupt line disabled and is
       supposed to complete as quickly as possible.
     \item A bottom-half, scheduled by the top-half, which starts after
@@ -344,10 +344,10 @@
   process becomes runnable, no more need to wait for kernel code
   (typically a system call) to return before running the scheduler.
   \begin{itemize}
-  \item Exception: kernel critical sections (holding spinlocks), but a
-    rescheduling point occurs when exiting the outer critical section,
-    in case a preemption opportunity would have been signaled while in
-    the critical section.
+  \item Exception: kernel critical sections (holding spinlocks).
+    In a case you hold a spinlock on a uni-processor system, kernel preemption
+    could run another process, which would loop forever if it
+    tried to acquire the same spinlock.
   \item Typically for desktop or embedded systems with latency
     requirements in the milliseconds range.
   \item Still a relatively minor impact on throughput.
@@ -637,7 +637,7 @@ pthread_join(pthread_t *thread, void **value_ptr);
   \frametitle{Scheduling classes (2)}
   \begin{itemize}
   \item An existing program can be started in a specific scheduling
-    class with a specific priority using the chrt command line tool
+    class with a specific priority using the \code{chrt} command line tool
     \begin{itemize}
     \item Example: \code{chrt -f 99 ./myprog}
     \end{itemize}
@@ -698,8 +698,8 @@ pthread_attr_setschedparam(&attr, &parm);
     \item Locks all the memory of the current address space, for
       currently mapped pages and pages mapped in the future
     \end{itemize}
-  \item Other, less useful parts of the API: munlockall, mlock,
-    munlock.
+  \item Other, less useful parts of the API: \code{munlockall}, \code{mlock},
+    \code{munlock}.
   \item Watch out for non-currently mapped pages
     \begin{itemize}
     \item Stack pages
@@ -1176,7 +1176,7 @@ echo 0 > /debug/tracing/tracing_enabled
     \end{itemize}
   \item The \code{xeno-config} script, installed when installing
     Xenomai user-space support helps you to compile your own programs.
-  \item See Xenomai's examples directory.
+  \item See Xenomai's \code{examples} directory.
   \item Installation details may be found in the \code{README.INSTALL}
     guide.
   \item For an introduction on programming with the native API, see:\\
diff --git a/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex b/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex
index 842b5f0..664db8b 100644
--- a/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex
+++ b/slides/sysdev-root-filesystem-principles/sysdev-root-filesystem-principles.tex
@@ -167,7 +167,7 @@ Kernel panic - not syncing: VFS: Unable to mount root fs on unknown block(0,0)
   \begin{itemize}
   \item Install an NFS server (example: Debian, Ubuntu)\\
     \code{sudo apt-get install nfs-kernel-server}
-  \item Add the exported directory to your /etc/exports file:\\
+  \item Add the exported directory to your \code{/etc/exports} file:\\
     \code{/home/tux/rootfs 192.168.1.111(rw,no_root_squash,no_subtree_check)}
     \begin{itemize}
     \item \code{192.168.1.111} is the client IP address

http://git.free-electrons.com/training-materials/commit/?id=4916aacf0fd5ee300398d4e5dcdda1924131f758

commit 4916aacf0fd5ee300398d4e5dcdda1924131f758
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 07:34:19 2012 +0200

    Migrated to Linux 2.6.38.8 and Xenomai 2.6.0

diff --git a/labs/sysdev-real-time/sysdev-real-time.tex b/labs/sysdev-real-time/sysdev-real-time.tex
index fd23c3c..e1caca9 100644
--- a/labs/sysdev-real-time/sysdev-real-time.tex
+++ b/labs/sysdev-real-time/sysdev-real-time.tex
@@ -13,30 +13,28 @@ After this lab, you will:
 
 Go to the \code{/home/<user>/felabs/realtime/rttest} directory.
 
-For this lab, download the latest 2.6.35.x kernel sources, which 
-are the most recent ones we tested with Xenomai.
+For this lab, download the latest 2.6.38.8 kernel sources, which 
+are the most recent ones that Xenomai supports, at least on ARM.
 
-Configure your kernel with the default configuration for the IGEPv2
-board, (named \code{igep0020_defconfig}, the generic \code{omap2plus_defconfig}
-didn't exist in 2.6.35).
+Please stay with the exact 2.6.38.8 version. You will have trouble
+applying Xenomai kernel patches otherwise.
 
-You can try to run \code{make xconfig}, but you will find that
-it fails because of missing Qt3 headers. To keep things simple, use 
-\code{make menuconfig} instead. 
+Configure your kernel with the default configuration for the IGEPv2
+board.
 
-In the \code{menuconfig} interface, remove support for the 
-{\em Libertas} wireless modules (\code{CONFIG_LIBERTAS}). 
-For the moment, also remove the \code{CONFIG_HIGH_RES_TIMERS}
-option, to test the kernel without high-resolution timers first.
+In the kernel configuration interface:
+\begin{itemize}
+\item Enable \code{CONFIG_DEVTMPFS} and \code{CONFIG_DEVTMPFS_MOUNT}
+      The root filesystem that we use has an empty \code{/dev}
+      directory, and we let the kernel populate it with the devices
+      present on the system.
+\item For the moment, remove \code{CONFIG_HIGH_RES_TIMERS},
+      to start by testing the kernel without high-resolution timers.
+\end{itemize}
 
 Boot the IGEP board by mounting the root filesystem available at
-\code{/home/<user>/felabs/realtime/rttest/nfsroot/} with NFS. Note
-that in 2.6.35.9, the OMAP serial ports were named \code{ttyS}, not
-\code{ttyO}, so you must adjust your \code{console=} argument to use
-\code{ttyS2}. As usual, login as \code{root}, there is no password.
-
-Please stay with a 2.6.35.x version, as this is the most recent
-version with Xenomai support.
+\code{/home/<user>/felabs/realtime/rttest/nfsroot/} with NFS.
+As usual, login as \code{root}, there is no password.
 
 Install netcat on your host, by running:
 \begin{verbatim}
@@ -92,10 +90,10 @@ Now, do the following tests:
   and using \code{netcat 192.168.0.100 5566} on your workstation when
   you see the message \code{Listening on any address 5566} in order to
   flood the network interface of the IGEP board (where 192.168.0.100
-  is the IP address of the IGEP board)
+  is the IP address of the IGEP board).
 \item Test your program again with the workload, but by running the
   program in the \code{SCHED_FIFO} scheduling class at priority 99,
-  using the chrt command.
+  using the \code{chrt} command.
 \end{itemize}
 
 \section{Testing the preemptible kernel}
@@ -104,7 +102,7 @@ Recompile your kernel with \code{CONFIG_PREEMPT} enabled, which
 enables kernel preemption (except for critical sections protected by
 spinlocks).
 
-Re-do the simple tests with this new preemptible kernel and compare
+Run the simple tests again with this new preemptible kernel and compare
 the results.
 
 \section{Testing Xenomai scheduling latency}
@@ -114,30 +112,30 @@ Get the latest Xenomai 2.6.x release from its download area at
 
 Prepare the kernel for Xenomai compilation:
 \begin{verbatim}
-./scripts/prepare-kernel.sh --arch=arm --linux=/path/to/linux-2.6.35
+./scripts/prepare-kernel.sh --arch=arm --linux=/path/to/linux-2.6.38.8
 \end{verbatim}
 
-You can reuse the kernel configuration from a previous compile job,
-then launch the kernel configuration tool again and enable the following
-options:
+Now, run the kernel configuration interface, and make sure that
+the below options are enabled, taking your time to read their
+description:
+
 \begin{itemize}
 \item \code{CONFIG_XENOMAI}
 \item \code{CONFIG_XENO_DRIVERS_TIMERBENCH}
-\end{itemize}
-
-Other options of interest (ARM specific) are:
-\begin{itemize}
 \item \code{CONFIG_XENO_HW_UNLOCKED_SWITCH}
 \end{itemize}
 
-Read the help message associated with these options, decide whether you want
-to enable them.
+Now, you also have to disable \code{CONFIG_ARCH_OMAP2},
+and \code{CONFIG_ARCH_OMAP4}. Xenomai doesn't seem to support
+the OMAP2 and OMAP4 boards, and the kernel won't build
+if you don't disable the above options. 
 
-Compile \code{rttest} for the Xenomai POSIX skin:
+Compile your kernel, and in the meantime,
+compile \code{rttest} for the Xenomai POSIX skin:
 
 \begin{verbatim}
-DESTDIR=/home/<user>/felabs/realtime/rttest/nfsroot/
-export DESTDIR
+cd $HOME/felabs/realtime/rttest/nfsroot/root
+export DESTDIR=$HOME/felabs/realtime/rttest/nfsroot/
 CFL=`$DESTDIR/usr/bin/xeno-config --skin=posix --cflags`
 LDF=`$DESTDIR/usr/bin/xeno-config --skin=posix --ldflags`
 arm-none-linux-gnueabi-gcc $CFL -o rttest rttest.c $LDF

http://git.free-electrons.com/training-materials/commit/?id=9bb94e16d311c03d21cda5937f1938b28687e2ae

commit 9bb94e16d311c03d21cda5937f1938b28687e2ae
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 07:29:47 2012 +0200

    DRAM -> SDRAM (for U-boot)

diff --git a/slides/sysdev-bootloaders-sequence/omap-boot.dia b/slides/sysdev-bootloaders-sequence/omap-boot.dia
index b3af016..ffeebf4 100644
--- a/slides/sysdev-bootloaders-sequence/omap-boot.dia
+++ b/slides/sysdev-bootloaders-sequence/omap-boot.dia
@@ -446,7 +446,7 @@ in the CPU#</dia:string>
         <dia:point val="27.75,11.65"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="23.8125,10.9461;31.7089,12.7851"/>
+        <dia:rectangle val="23.8125,10.9675;31.6875,12.7422"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
@@ -486,7 +486,7 @@ runs from SRAM#</dia:string>
         <dia:composite type="text">
           <dia:attribute name="string">
             <dia:string>#stored in NAND or SD
-runs from DRAM#</dia:string>
+runs from SDRAM#</dia:string>
           </dia:attribute>
           <dia:attribute name="font">
             <dia:font family="sans" style="0" name="Helvetica"/>

http://git.free-electrons.com/training-materials/commit/?id=1f716316cb85e428649d24f1e2de2459f09d59b1

commit 1f716316cb85e428649d24f1e2de2459f09d59b1
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 06:41:55 2012 +0200

    libvwworks -> libvxworks

diff --git a/slides/sysdev-realtime/xenomai-architecture.dia b/slides/sysdev-realtime/xenomai-architecture.dia
index ded0464..cdcb5d6 100644
--- a/slides/sysdev-realtime/xenomai-architecture.dia
+++ b/slides/sysdev-realtime/xenomai-architecture.dia
@@ -386,13 +386,13 @@
         <dia:point val="34.25,10.75"/>
       </dia:attribute>
       <dia:attribute name="obj_bb">
-        <dia:rectangle val="32.7388,10.204;35.7613,11.296"/>
+        <dia:rectangle val="32.7388,10.1842;35.7744,11.3158"/>
       </dia:attribute>
       <dia:attribute name="text">
         <dia:composite type="text">
           <dia:attribute name="string">
             <dia:string>#Xenomai skin
-libvwworks#</dia:string>
+libvxworks#</dia:string>
           </dia:attribute>
           <dia:attribute name="font">
             <dia:font family="sans" style="0" name="Helvetica"/>
@@ -401,7 +401,7 @@ libvwworks#</dia:string>
             <dia:real val="0.56444442272186279"/>
           </dia:attribute>
           <dia:attribute name="pos">
-            <dia:point val="34.25,10.624"/>
+            <dia:point val="34.25,10.6174"/>
           </dia:attribute>
           <dia:attribute name="color">
             <dia:color val="#000000"/>

http://git.free-electrons.com/training-materials/commit/?id=3f73efe75550b11211858447c567e9c0e48c70ff

commit 3f73efe75550b11211858447c567e9c0e48c70ff
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 04:50:27 2012 +0200

    Mention squashfs XZ support

diff --git a/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex b/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
index fcf2b68..55292e4 100644
--- a/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
+++ b/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
@@ -159,6 +159,8 @@ major minor #blocks name
   \item Supports LZO compression for better performance on embedded
     systems with slow CPUs (at the expense of a slightly degraded
     compression rate)
+  \item Now supports XZ encryption, for a much better compression rate,
+        at the expense of higher CPU usage and time.
   \end{itemize}
   Benchmarks: (roughly 3 times smaller than ext3, and 2-4 times faster)\\
   \url{http://elinux.org/Squash_Fs_Comparisons}

http://git.free-electrons.com/training-materials/commit/?id=c3e1f53ff67ec6077b1664373284d6823c8e0735

commit c3e1f53ff67ec6077b1664373284d6823c8e0735
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 04:31:47 2012 +0200

    More punctuation fixes

diff --git a/labs/sysdev-real-time/sysdev-real-time.tex b/labs/sysdev-real-time/sysdev-real-time.tex
index 7124af7..fd23c3c 100644
--- a/labs/sysdev-real-time/sysdev-real-time.tex
+++ b/labs/sysdev-real-time/sysdev-real-time.tex
@@ -25,7 +25,7 @@ it fails because of missing Qt3 headers. To keep things simple, use
 \code{make menuconfig} instead. 
 
 In the \code{menuconfig} interface, remove support for the 
-\em{Libertas} wireless modules (\code{CONFIG_LIBERTAS}). 
+{\em Libertas} wireless modules (\code{CONFIG_LIBERTAS}). 
 For the moment, also remove the \code{CONFIG_HIGH_RES_TIMERS}
 option, to test the kernel without high-resolution timers first.
 
diff --git a/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex b/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex
index 91fb017..d728fda 100644
--- a/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex
+++ b/slides/kernel-driver-development-debugging/kernel-driver-development-debugging.tex
@@ -7,7 +7,7 @@
     \begin{itemize}
     \item The old \code{printk()}, no longer recommended for new debugging
       messages
-    \item The \code{pr_*()} family of functions : \code{pr_emerg()},
+    \item The \code{pr_*()} family of functions: \code{pr_emerg()},
       \code{pr_alert()}, \code{pr_crit()}, \code{pr_err()},
       \code{pr_warning()}, \code{pr_notice()}, \code{pr_info()},
       \code{pr_cont()} and the special \code{pr_debug()}
@@ -15,7 +15,7 @@
       \item They take a classic format string with arguments
       \item defined in \code{include/linux/printk.h}
       \end{itemize}
-    \item The \code{dev_*()} family of functions : \code{dev_emerg()},
+    \item The \code{dev_*()} family of functions: \code{dev_emerg()},
       \code{dev_alert()}, \code{dev_crit()}, \code{dev_err()},
       \code{dev_warning()}, \code{dev_notice()}, \code{dev_info()} and
       the special \code{dev_dbg()}
diff --git a/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex b/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex
index bf029ad..903be9e 100644
--- a/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex
+++ b/slides/kernel-driver-development-interrupts/kernel-driver-development-interrupts.tex
@@ -250,7 +250,7 @@ somewhere function(...) {
   \item Workqueues are a general mechanism for deferring work. It is
     not limited in usage to handling interrupts.
   \item The function registered as workqueue is executed in a thread,
-    which means :
+    which means:
     \begin{itemize}
     \item All interrupts are enabled
     \item Sleeping is allowed
diff --git a/slides/kernel-porting-content/kernel-porting-content.tex b/slides/kernel-porting-content/kernel-porting-content.tex
index 30b4a9f..4e28129 100644
--- a/slides/kernel-porting-content/kernel-porting-content.tex
+++ b/slides/kernel-porting-content/kernel-porting-content.tex
@@ -35,7 +35,7 @@
     \end{itemize}
   \item And many directories for different SoC families
     \begin{itemize}
-    \item \code{mach-*} directories : \code{mach-pxa} for PXA CPUs,
+    \item \code{mach-*} directories: \code{mach-pxa} for PXA CPUs,
       \code{mach-imx} for Freescale iMX CPUs, etc.
     \item Each of these directories contain
       \begin{itemize}
diff --git a/slides/kernel-resources-references/kernel-resources-references.tex b/slides/kernel-resources-references/kernel-resources-references.tex
index 1cdd82d..333d1bc 100644
--- a/slides/kernel-resources-references/kernel-resources-references.tex
+++ b/slides/kernel-resources-references/kernel-resources-references.tex
@@ -25,7 +25,7 @@
       \item \url{http://free-electrons.com/redirect/eldd-book.html}
       \item By Sreekrishnan Venkateswaran, an embedded IBM engineer
         with more than 10 years of experience
-      \item Covers a wide range of topics not covered by LDD : serial
+      \item Covers a wide range of topics not covered by LDD: serial
         drivers, input drivers, I2C, PCMCIA and Compact Flash, PCI,
         USB, video drivers, audio drivers, block drivers, network
         drivers, Bluetooth, IrDA, MTD, drivers in userspace, kernel
diff --git a/slides/kernel-serial-drivers-content/kernel-serial-drivers-content.tex b/slides/kernel-serial-drivers-content/kernel-serial-drivers-content.tex
index ee3bfe5..928ba07 100644
--- a/slides/kernel-serial-drivers-content/kernel-serial-drivers-content.tex
+++ b/slides/kernel-serial-drivers-content/kernel-serial-drivers-content.tex
@@ -31,18 +31,18 @@
 \begin{frame}
   \frametitle{Data Structures}
   \begin{itemize}
-  \item A data structure representing a driver : \code{uart_driver}
+  \item A data structure representing a driver: \code{uart_driver}
     \begin{itemize}
     \item Single instance for each driver
     \item \code{uart_register_driver()} and
       \code{uart_unregister_driver()}
     \end{itemize}
-  \item A data structure representing a port : \code{uart_port}
+  \item A data structure representing a port: \code{uart_port}
     \begin{itemize}
     \item One instance for each port (several per driver are possible)
     \item \code{uart_add_one_port()} and \code{uart_remove_one_port()}
     \end{itemize}
-  \item A data structure containing the pointers to the operations :
+  \item A data structure containing the pointers to the operations:
     \code{uart_ops}
     \begin{itemize}
     \item Linked from \code{uart_port} through the \code{ops} field
diff --git a/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex b/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
index 3302aa3..4a10bf7 100644
--- a/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
+++ b/slides/kernel-source-code-drivers/kernel-source-code-drivers.tex
@@ -181,7 +181,7 @@
   \begin{itemize}
   \item It is illegal to distribute a binary kernel that includes
     statically compiled proprietary drivers
-  \item The kernel modules are a gray area : are they derived works of
+  \item The kernel modules are a gray area: are they derived works of
     the kernel or not?
     \begin{itemize}
     \item The general opinion of the kernel community is that

http://git.free-electrons.com/training-materials/commit/?id=762d2bbdfd875427bf11c92b071fcdf465b18081

commit 762d2bbdfd875427bf11c92b071fcdf465b18081
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 04:11:21 2012 +0200

    Punctuation fixes

diff --git a/labs/kernel-debugging/kernel-debugging.tex b/labs/kernel-debugging/kernel-debugging.tex
index 478ed4f..8e20ec2 100644
--- a/labs/kernel-debugging/kernel-debugging.tex
+++ b/labs/kernel-debugging/kernel-debugging.tex
@@ -10,7 +10,7 @@ add a similar \code{pr_debug()} call in your interrupt handler to show
 each character being received.
 
 Check what happens with your module. Do you see the debugging messages
-that you added ? Your kernel probably does not have
+that you added? Your kernel probably does not have
 \code{CONFIG_DYNAMIC_DEBUG} set and your driver is not compiled with
 \code{DEBUG} defined., so you shouldn't see any message.
 
diff --git a/slides/sysdev-application-development/sysdev-application-development.tex b/slides/sysdev-application-development/sysdev-application-development.tex
index 2725a30..c802ffa 100644
--- a/slides/sysdev-application-development/sysdev-application-development.tex
+++ b/slides/sysdev-application-development/sysdev-application-development.tex
@@ -73,7 +73,7 @@
 \end{frame}
 
 \begin{frame}
-  \frametitle{C library or higher-level libraries ?}
+  \frametitle{C library or higher-level libraries?}
   \begin{itemize}
   \item For many applications, the C library already provides a
     relatively large set of features
diff --git a/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex b/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
index 3c74dd7..fcf2b68 100644
--- a/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
+++ b/slides/sysdev-block-filesystems/sysdev-block-filesystems.tex
@@ -144,7 +144,7 @@ major minor #blocks name
   \item This is possible thanks to \code{loop}, which is a kernel
     driver that emulates a block device with the contents of a file.
   \item Do not forget to run \code{umount} before using the filesystem
-    image !
+    image!
   \end{itemize}
 \end{frame}
 
diff --git a/slides/sysdev-bootloaders-lab/sysdev-bootloaders-lab.tex b/slides/sysdev-bootloaders-lab/sysdev-bootloaders-lab.tex
index 11d427b..8e21296 100644
--- a/slides/sysdev-bootloaders-lab/sysdev-bootloaders-lab.tex
+++ b/slides/sysdev-bootloaders-lab/sysdev-bootloaders-lab.tex
@@ -1,11 +1,11 @@
 \setuplabframe
 {U-Boot}
 {
-  Time to start the practical lab !
+  Time to start the practical lab!
   \begin{itemize}
   \item Communicate with the board using a serial console
   \item Configure, build and install {\em X-Loader} and {\em U-Boot}
   \item Learn {\em U-Boot} commands
   \item Set up {\em TFTP} communication with the board
   \end{itemize}
-}
\ No newline at end of file
+}
diff --git a/slides/sysdev-busybox/sysdev-busybox.tex b/slides/sysdev-busybox/sysdev-busybox.tex
index 4ca01f4..2cd84dd 100644
--- a/slides/sysdev-busybox/sysdev-busybox.tex
+++ b/slides/sysdev-busybox/sysdev-busybox.tex
@@ -1,7 +1,7 @@
 \section{Busybox}
 
 \begin{frame}
-  \frametitle{Why Busybox ?}
+  \frametitle{Why Busybox?}
   \begin{itemize}
   \item A Linux system needs a basic set of programs to work
     \begin{itemize}
diff --git a/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex b/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex
index a3eeaff..38c21c0 100644
--- a/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex
+++ b/slides/sysdev-embedded-linux/sysdev-embedded-linux.tex
@@ -85,7 +85,7 @@
       in proprietary applications.
     \item {\bf Technical requirements}. Of course, the component must
       match your technical requirements. But don't forget that you can
-      improve the existing components if a feature is missing !
+      improve the existing components if a feature is missing!
     \end{itemize}
   \end{itemize}
 \end{frame}
@@ -316,7 +316,7 @@ met:
     \item GPL-violations.org, \url{http://www.gpl-violations.org}
     \item Software Freedom Law Center, \url{http://www.softwarefreedom.org/}
     \end{itemize}
-  \item Ask your legal department !
+  \item Ask your legal department!
   \end{itemize}
 \end{frame}
 
diff --git a/slides/sysdev-intro/sysdev-intro.tex b/slides/sysdev-intro/sysdev-intro.tex
index 173dfbc..0e9ca22 100644
--- a/slides/sysdev-intro/sysdev-intro.tex
+++ b/slides/sysdev-intro/sysdev-intro.tex
@@ -19,7 +19,7 @@
 \end{frame}
 
 \begin{frame}
-  \frametitle{Free software ?}
+  \frametitle{Free software?}
   \begin{itemize}
   \item A program is considered {\bf free} when its license offers to
     all its users the following {\bf four} freedoms
@@ -33,11 +33,11 @@
     non-commercial use
   \item They imply the availability of source code, software can be
     modified and distributed to customers
-  \item {\bf Good match for embedded systems !}
+  \item {\bf Good match for embedded systems!}
   \end{itemize}
 \end{frame}
 
-\begin{frame}{What is embedded Linux ?}
+\begin{frame}{What is embedded Linux?}
   \huge
   \begin{center}
     Embedded Linux is the usage of the {\bf Linux kernel} and various
@@ -45,7 +45,7 @@
   \end{center}
 \end{frame}
 
-\subsection[Why embedded Linux ?]{Advantages of Linux and open-source
+\subsection[Why embedded Linux?]{Advantages of Linux and open-source
   for embedded systems}
 
 \begin{frame}
diff --git a/slides/sysdev-linux-intro-compilation/sysdev-linux-intro-compilation.tex b/slides/sysdev-linux-intro-compilation/sysdev-linux-intro-compilation.tex
index d10eae8..8b60b73 100644
--- a/slides/sysdev-linux-intro-compilation/sysdev-linux-intro-compilation.tex
+++ b/slides/sysdev-linux-intro-compilation/sysdev-linux-intro-compilation.tex
@@ -9,7 +9,7 @@
     \item in the main kernel source directory
     \item Remember to run \code{make -j 4} if you have multiple CPU
       cores to speed up the compilation process
-    \item No need to run as root !
+    \item No need to run as root!
     \end{itemize}
   \item Generates
     \begin{itemize}
diff --git a/slides/sysdev-linux-intro-configuration/sysdev-linux-intro-configuration.tex b/slides/sysdev-linux-intro-configuration/sysdev-linux-intro-configuration.tex
index 28a0d60..fcf8eda 100644
--- a/slides/sysdev-linux-intro-configuration/sysdev-linux-intro-configuration.tex
+++ b/slides/sysdev-linux-intro-configuration/sysdev-linux-intro-configuration.tex
@@ -63,7 +63,7 @@
 \end{frame}
 
 \begin{frame}
-  \frametitle{Kernel or module ?}
+  \frametitle{Kernel or module?}
   \begin{itemize}
   \item The {\bf kernel image} is a {\bf single file}, resulting from
     the linking of all object files that correspond to features
diff --git a/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex b/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex
index 8c12c32..b334784 100644
--- a/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex
+++ b/slides/sysdev-linux-intro-cross-compilation/sysdev-linux-intro-cross-compilation.tex
@@ -67,7 +67,7 @@ CROSS_COMPILE?= arm-linux-
   \item To load a default configuration file, just run\\
     \code{make acme_defconfig}
     \begin{itemize}
-    \item This will overwrite your existing \code{.config} !
+    \item This will overwrite your existing \code{.config} file!
     \end{itemize}
   \item To create your own default configuration file
     \begin{itemize}
diff --git a/slides/sysdev-linux-intro-lab-sources/sysdev-linux-intro-lab-sources.tex b/slides/sysdev-linux-intro-lab-sources/sysdev-linux-intro-lab-sources.tex
index dffd1c7..48cbeeb 100644
--- a/slides/sysdev-linux-intro-lab-sources/sysdev-linux-intro-lab-sources.tex
+++ b/slides/sysdev-linux-intro-lab-sources/sysdev-linux-intro-lab-sources.tex
@@ -1,7 +1,7 @@
 \setuplabframe
 {Kernel sources}
 {
-  Time to start the practical lab !
+  Time to start the practical lab!
   \begin{itemize}
   \item Get the Linux kernel sources
   \item Apply patches
diff --git a/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex b/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex
index ada1ed6..c143fce 100644
--- a/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex
+++ b/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex
@@ -66,8 +66,7 @@
     \item \code{ar}, \code{ranlib}, to generate \code{.a} archives,
       used for libraries
     \item \code{objdump}, \code{readelf}, \code{size}, \code{nm},
-      \code{strings}, to inspect binaries. Very useful analysis tools
-      !
+      \code{strings}, to inspect binaries. Very useful analysis tools!
     \item \code{strip}, to strip useless parts of binaries in order to
       reduce their size
     \end{itemize}

http://git.free-electrons.com/training-materials/commit/?id=3734a35699c5e6fcf9da0b332372b3ec1a7b04ca

commit 3734a35699c5e6fcf9da0b332372b3ec1a7b04ca
Author: Michael Opdenacker <michael.opdenacker at free-electrons.com>
Date:   Wed Jun 27 04:11:04 2012 +0200

    RT lab improvements

diff --git a/labs/sysdev-real-time/sysdev-real-time.tex b/labs/sysdev-real-time/sysdev-real-time.tex
index d4bede0..7124af7 100644
--- a/labs/sysdev-real-time/sysdev-real-time.tex
+++ b/labs/sysdev-real-time/sysdev-real-time.tex
@@ -35,7 +35,7 @@ that in 2.6.35.9, the OMAP serial ports were named \code{ttyS}, not
 \code{ttyO}, so you must adjust your \code{console=} argument to use
 \code{ttyS2}. As usual, login as \code{root}, there is no password.
 
-Please stay with a 2.6.35.9 version, as this is the most recent
+Please stay with a 2.6.35.x version, as this is the most recent
 version with Xenomai support.
 
 Install netcat on your host, by running:
@@ -79,7 +79,7 @@ let's enable the following options in the kernel configuration:
 \code{CONFIG_HIGH_RES_TIMERS}.
 
 Recompile your kernel, boot your IGEP board with the new version, and
-check the new resolution. Better, isn't it ?
+check the new resolution. Better, isn't it?
 
 \section{Testing the non-preemptible kernel}
 
@@ -109,16 +109,17 @@ the results.
 
 \section{Testing Xenomai scheduling latency}
 
-Get Xenomai from its download area at
+Get the latest Xenomai 2.6.x release from its download area at
 \url{http://download.gna.org/xenomai/stable/} and untar Xenomai.
 
 Prepare the kernel for Xenomai compilation:
 \begin{verbatim}
-./scripts/prepare-kernel.sh --arch=arm --linux=/path/to/linux-2.6.35.9
+./scripts/prepare-kernel.sh --arch=arm --linux=/path/to/linux-2.6.35
 \end{verbatim}
 
 You can reuse the kernel configuration from a previous compile job,
-then launch kernel configuration tool again and enable the options:
+then launch the kernel configuration tool again and enable the following
+options:
 \begin{itemize}
 \item \code{CONFIG_XENOMAI}
 \item \code{CONFIG_XENO_DRIVERS_TIMERBENCH}
@@ -129,7 +130,7 @@ Other options of interest (ARM specific) are:
 \item \code{CONFIG_XENO_HW_UNLOCKED_SWITCH}
 \end{itemize}
 
-Read the help associated with these options, decide whether you want
+Read the help message associated with these options, decide whether you want
 to enable them.
 
 Compile \code{rttest} for the Xenomai POSIX skin:
@@ -158,7 +159,7 @@ specifically for each system. By disabling this feature, we will have
 raw Xenomai results, that could be further improved by doing proper
 calibration of this compensation mechanism.
 
-Re-run the tests, compare the results.
+Run the tests again, compare the results.
 
 \section{Testing Xenomai interrupt latency}
 

-----------------------------------------------------------------------

Summary of changes:
 labs/kernel-debugging/kernel-debugging.tex         |    2 +-
 .../sysdev-application-debugging.tex               |    3 +-
 .../sysdev-flash-filesystems.tex                   |    2 +-
 labs/sysdev-real-time/sysdev-real-time.tex         |   73 ++++++++++----------
 ...nel-driver-development-architecture-drivers.tex |    2 +-
 .../kernel-driver-development-debugging.tex        |    4 +-
 .../kernel-driver-development-interrupts.tex       |    2 +-
 .../kernel-porting-content.tex                     |    2 +-
 .../kernel-resources-references.tex                |    2 +-
 .../kernel-serial-drivers-content.tex              |    6 +-
 .../kernel-source-code-drivers.tex                 |    2 +-
 .../sysdev-application-development.tex             |   22 +++---
 .../sysdev-block-filesystems.tex                   |   11 +--
 .../sysdev-bootloaders-lab.tex                     |    4 +-
 slides/sysdev-bootloaders-sequence/omap-boot.dia   |    4 +-
 .../sysdev-bootloaders-u-boot.tex                  |    4 +-
 slides/sysdev-busybox/sysdev-busybox.tex           |    2 +-
 .../sysdev-embedded-linux.tex                      |   17 ++---
 .../sysdev-flash-filesystems.tex                   |   21 +++---
 slides/sysdev-intro/sysdev-intro.tex               |    8 +--
 .../sysdev-linux-intro-compilation.tex             |    2 +-
 .../sysdev-linux-intro-configuration.tex           |    2 +-
 .../sysdev-linux-intro-cross-compilation.tex       |    6 +-
 .../sysdev-linux-intro-lab-sources.tex             |    2 +-
 .../sysdev-linux-intro-modules.tex                 |    4 +-
 slides/sysdev-realtime/sysdev-realtime.tex         |   18 ++---
 slides/sysdev-realtime/xenomai-architecture.dia    |    6 +-
 .../sysdev-root-filesystem-principles.tex          |    2 +-
 .../sysdev-toolchains-definition.tex               |    3 +-
 29 files changed, 119 insertions(+), 119 deletions(-)


More information about the training-materials-updates mailing list