=========================================================================
Using the Linux Trace Tool kit (LTT) on DENX Linux 2.4.x with RTAI 24.1.x
=========================================================================
This README briefly describes how to install and use LTT 0.9.5 on a
PowerPC cross development environment. Traces are taken on the PowerPC
target and visualized on the host.
This installation assumes that you use the Embedded Linux Development
Kit (ELDK), see http://www.denx.de/re/ELDK.html). Check also the files
../README and README.install.
Installation and Usage:
-----------------------
The following sample installation is for a CPCI405 module (IBM 405GP),
which requires the kernel source tree "linuxppc_2_4_devel" checked out
with the revision tag "LABEL_2003_05_04_1125":
1. Checkout the DENX Linux kernel source tree with the specified date.
When prompted for a password for anonymous, simply press the Enter
key:
$ cd <path>
$ LINUX_TREE="linuxppc_2_4_devel"
$ CVS_TAG="LABEL_2003_05_04_1125"
$ cvs -d :pserver:anonymous@www.denx.de:/cvsroot login
$ cvs -z6 -d :pserver:anonymous@www.denx.de:/cvsroot \
co -P -r $CVS_TAG $LINUX_TREE
$ export LINUX_ROOT=$PWD/$LINUX_TREE
2. Get and apply the RTAI-LTT kernel patch. You may first want to use
the option "--dry-run" to check if it applies flawlessly:
$ KERNEL_PATCH="patch-denx-${LINUX_TREE}-${CVS_TAG}-ltt"
$ URL="ftp://ftp.denx.de/pub/RTAI/24.1.11"
$ wget $URL/$KERNEL_PATCH
$ cd $LINUX_ROOT
$ patch -b -z.PRE_RTAI_LTT -p1 < ../$KERNEL_PATCH
3. Configure and make the Linux kernel with RTAI and LTT support:
$ export CROSS_COMPILE=ppc_4xx-
$ make cpci405_config
$ make menuconfig
... make additional configuration ...
For tracing RTAI you must select the following options:
select "Kernel tracing --->"
select " <M> Kernel events tracing support"
select " [*] RTAI event tracing support"
...
$ make dep
$ make pImage
$ cp -p arch/ppc/boot/images/pImage /tftpboot
4. Unfold, configure and make RTAI. [Instead of using the Validated
Release you could also checkout "rtai4" from the CVS repository.]
Usually the default configuration is OK. Note: for the IBM 405GP
you _must_ disable the floating point support manually.
$ cd <directory-shared-with-target>
$ wget $URL/rtai-24.1.11-denx.tar.bz2
$ bzip2 -dc rtai-24.1.11-denx.tar.bz2 | tar xf -
$ cd rtai-24.1.11
$ export CROSS_COMPILE=ppc_4xx-
$ make
...
Enter location of Linux source tree [...]: <path>/linuxppc_2_4_devel
...
Enable floating point support (CONFIG_RTAI_FPU_SUPPORT) [Y/n/?] n
...
$ make
5. Get and unfold the LTT distribution and define LTT_ROOT:
$ cd <path>
$ wget http://www.opersys.com/ftp/pub/LTT/TraceToolkit-0.9.5a.tgz
$ gzip -dc TraceToolkit-0.9.5a.tgz | tar xf -
$ export LTT_ROOT=$PWD/TraceToolkit-0.9.5
6. Patch, configure and build LTT:
First we make and save the "tracedaemon" for the target:
$ cd $LTT_ROOT
$ export CROSS_COMPILE=ppc_4xx-
$ ./configure --prefix=/usr/local
$ make -C LibUserTrace CC=${CROSS_COMPILE}gcc
$ make -C Daemon CC=${CROSS_COMPILE}gcc
$ cp -p LibUserTrace/.libs/libusertrace.so.0 Daemon/.libs/tracedaemon \
<directory-shared-with-target>
Then we make the "tracevisualizer" for the host:
$ make -C LibLTT
$ make -C Visualizer
You may want to install the Visualizer in /usr/local (as defined
above with --prefix). Alternatively you can use the application
"Visualizer/.libs/tracevisualizer" directly:
$ su
Passwort <your-password>
# make install
7. Boot the target and take a trace with LTT. The demo script
"load-ltt" available at $URL takes a trace of the RTAI
exampe module "sw". Before running it you may need to adjust
the TARGET_ROOT. There are more instructions inside "load-ltt":
cpci405 login: root
Last login: Mon Nov 29 19:00:42 on ttyS0
bash-2.04# cd <directory-shared-with-host>
. load-ltt
Load RTAI modules
rtai: mount done
==== RT memory manager v1.3 Loaded. ====
***** STARTING THE UP REAL TIME SCHEDULER WITH LINUX *****
***** FP SUPPORT AND READY FOR A PERIODIC TIMER *****
***<> LINUX TICK AT 100 (HZ) <>***
***<> CALIBRATED CPU FREQUENCY 198000000 (HZ) <>***
***<> CALIBRATED TIMER-INTERRUPT-TO-SCHEDULER LATENCY 2500 (ns) <>***
***<> CALIBRATED ONE SHOT SETUP TIME 500 (ns) <>***
Load RTAI demo 'sw'
Start tracing
bash-2.04# TraceDaemon: Output file ready
TraceDaemon: Trace driver open
TraceDaemon: Trace buffers are 1000000 bytes
TraceDaemon: Fetching eip for syscall on depth : 0
TraceDaemon: Daemon wil run for : (20, 0)
TraceDaemon: Done mapping /proc
TraceDaemon: End of tracing
8. Visualize the trace out.trace, out.proc on the host using
the GTK graphical user interface. Please consult the LTT
help for further information:
$ export PATH=$PATH:$LTT_ROOT/Visualizer/.libs
$ export LD_LIBRARY_PATH=$LTT_ROOT/LibLTT/.libs
$ cd <directory-shared-with-target>
$ tracevisualizer
... use the graphical user interface ...
Tips, Tricks and Remarks:
-------------------------
o You can visualize the trace host with the program
TraceToolkit-0.9.5/Visualizer/tracevisualizer.
Please consult the LTT help for further information.
o Warning: tracing with LTT puts some additional load
and requires larger stack sizes. Though, if you see
weired system crashes and hangups try to increase the
task stack size first. If it does not help you should
increase the period time.
o Currently, the timer interrupt (decrementer trap) is
handled like a normal interrupt with the number 255.