gator: ARM DS-5.3 Streamline gator driver
[android-sdk/arm-ds5-gator.git] / README_Streamline.txt
2 *** Purpose ***
4 Instructions on setting up ARM Streamline on the target.
5 The gator driver and gator daemon are required to run on the ARM linux target in order for ARM Streamline to operate.
6 The driver should be built as a module and the daemon must run with root permissions on the target.
8 *** Preparing and building the kernel ***
10 cd into the root source dir of the linux kernel
11 make ARCH=arm CROSS_COMPILE=${CROSS_TOOLS}/bin/arm-none-linux-gnueabi- <platform_defconfig> (choose the appropriate configuration for your board)
12 make ARCH=arm CROSS_COMPILE=${CROSS_TOOLS}/bin/arm-none-linux-gnueabi- menuconfig
14 Required Kernel Changes (depending on the kernel version, the location of these configuration settings within menuconfig may be different)
15 - General Setup
16   - [*] Profiling Support
17 - Kernel hacking
18   - [*] Tracers
19     - [*] Trace process context switches and events
20 - Kernel Features
21   - [*] High Resolution Timer Support
23 The "context switches and events" option will not be available if other trace configurations are enabled. Other trace configurations being enabled is sufficient to turn on context switches and events.
25 Optional Kernel Changes (depending on the kernel version, the location of these configuration settings within menuconfig may be different)
26 Note: Configurations may not be supported on all targets
27 - System Type
28   - [*] <SoC name> debugging peripherals (enable core performance counters on supported SoCs)  /* kernels before 2.6.35 */
30 make -j5 ARCH=arm CROSS_COMPILE=${CROSS_TOOLS}/bin/arm-none-linux-gnueabi- uImage
32 *** Building the gator module ***
34 To create the gator.ko module,
35         cd /ds-5-install-directory/arm/src
36         tar xzf gator-driver.tar.gz
37         cd gator-driver
38         make -C <kernel_build_dir> M=`pwd` ARCH=arm CROSS_COMPILE=<...> modules
39 for example
40         make -C /home/username/kernel_2.6.32/ M=`pwd` ARCH=arm CROSS_COMPILE=/home/username/CodeSourcery/Sourcery_G++_Lite/bin/arm-none-linux-gnueabi- modules
41 If successful, a gator.ko module should be generated
43 *** Compiling an application or shared library ***
45 Recommended compiler settings:
46         "-g": Debug symbols needed for best analysis results.
47         "-fno-inline": Speed improvement when processing the image files and most accurate analysis results.
48         "-fno-omit-frame-pointer": ARM EABI frame pointers (Code Sourcery cross compiler) allow the call stack to be recorded with each sample taken when in ARM state (i.e. not -mthumb).
50 *** Running gator ***
52 Load the kernel onto the target and copy gatord and gator.ko into the target's filesystem.
53 gatord is located in <installdir>/arm/armv5t/.
54 Ensure gatord has execute permissions
55         chmod +x gatord
56 gator.ko must be located in the same directory as gatord on the target.
57 With root privileges, run the daemon
58         sudo ./gatord &
60 *** Profiling the kernel (optional) ***
62 make ARCH=arm CROSS_COMPILE=$(CROSS_TOOLS}/bin/arm-none-linux-gnueabi- menuconfig
63 - Kernel Hacking
64   - [*] Compile the kernel with debug info
66 make -j5 ARCH=arm CROSS_COMPILE=${CROSS_TOOLS}/bin/arm-none-linux-gnueabi- uImage
67 Use vmlinux as the image for debug symbols in Streamline.
68 Drivers may be profiled using this method by statically linking the driver into the kernel image.
69 Note that the gator driver does not perform kernel call stack recording.
71 *** Automatically start gator on boot (optional) ***
73 cd /etc/init.d
74 vi rungator.sh
75         #!/bin/bash
76         /path/to/gatord &
77 update-rc.d rungator.sh defaults
79 *** Driver Sources ***
81 Gator Sources
82         backtrace.c
83         cpu_buffer.c
84         cpu_fifo.c
85         cpu_fifo.h
86         gator_annotate.c
87         gator_events_irq.c
88         gator_init.c
89         gator_interrupt.c
90         gator_pmnc_armv7.c
91         gator_pmnc_none.c
92         gator_schedtrace.c
93         gator_setup.c
94         gator_timer.c
95         gator_traceprobe.h
97 Oprofile Sources  // function names updated to avoid Oprofile collisions
98         buffer_sync.c
99         buffer_sync.h
100         cpu_buffer.h
101         event_buffer.c
102         event_buffer.h
103         oprof.h
104         oprofile.h
105         oprofile_files.c
106         oprofile_stats.c
107         oprofile_stats.h
108         timer_int.c
110 Modified Oprofile Sources
111         buffer_sync.c   // modify sample contract to allow bad 'mm' or cookie
112         oprofilefs.c    // gatorfs and magic number
113         oprof.c         // updated module name and author
115 *** GPL License ***
117 For license information, please see the file LICENSE.