summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDoug Deao2013-08-04 00:42:02 -0500
committerDoug Deao2013-08-04 00:46:07 -0500
commit656421425b7ca41064d4e726d8c6e6f453d83851 (patch)
tree45f734c6ed2afe248711f63be474a4e07916a336
downloadctprof_srv-656421425b7ca41064d4e726d8c6e6f453d83851.tar.gz
ctprof_srv-656421425b7ca41064d4e726d8c6e6f453d83851.tar.xz
ctprof_srv-656421425b7ca41064d4e726d8c6e6f453d83851.zip
Release 1.0. See the RELEASE_NOTES file for details.
-rw-r--r--RELEASE_NOTES91
-rw-r--r--common/error_handler.c123
-rw-r--r--common/error_handler.h56
-rw-r--r--common/logging.c154
-rw-r--r--common/logging.h82
-rw-r--r--ctprofsrv_1.0_Manifest.htm1826
-rw-r--r--example_app/ctprof_ex.c207
-rw-r--r--example_app/ctprof_utility.c184
-rw-r--r--example_app/ctprof_utility.h56
-rw-r--r--example_app/makefile71
-rw-r--r--server/ETBAddr.h418
-rw-r--r--server/ETBInterface.h506
-rw-r--r--server/TIETB.c2739
-rw-r--r--server/command_handler.c653
-rw-r--r--server/command_handler.h45
-rw-r--r--server/ctoolsprof.h92
-rw-r--r--server/ctoolsprof_srv_main.c439
-rw-r--r--server/error.c73
-rw-r--r--server/error.h82
-rw-r--r--server/etb_handler.c666
-rw-r--r--server/etb_handler.h56
-rw-r--r--server/makefile89
-rw-r--r--server/remote_commands.c1397
-rw-r--r--server/remote_commands.h71
-rw-r--r--server/signal_handler.c238
-rw-r--r--server/signal_handler.h47
-rw-r--r--server/socket.c483
-rw-r--r--server/socket.h56
28 files changed, 11000 insertions, 0 deletions
diff --git a/RELEASE_NOTES b/RELEASE_NOTES
new file mode 100644
index 0000000..60b59d2
--- /dev/null
+++ b/RELEASE_NOTES
@@ -0,0 +1,91 @@
1ctprof_srv
2
3Version 1.0
4Release Date: 7/32/2013
5
6Description
7===========
8
9Ctprof provides system level bus profiling use cases for any slave in the
10device that has a CP Tracer. Ctprof is made up of two components; ctprof
11which is the host client application, and ctprof_srv which is the target
12server application. The client is delivered with TI's CCS emupacks (see
13System Requirements for minimum emupack revision for this release) and can be
14installed independent of CCS. The server is delivered as source with an example
15application which also contains a small "C" file that can be integrated with
16your application for coordinating collection activity with ctprof_srv.
17
18Organization
19============
20
21The ctools_srv project is delivered as source in three directories:
22
23 server
24 common
25 example_app
26
27Both the server and example_app have makefiles.
28
29Make & Installation
30===================
31
32If using SC-MCSDK 02.02.00 then ctprof_srv and ctprof_ex should be
33pre-installed in the /usr directory. Otherwise:
34
35The server and example_app directories contain makefiles that utilizes the
36CROSS_COMPILE environment variable. Both release and debug versions can be made.
37The executable is saved in the release or debug directories.
38
39Examples:
40
41make clean debug
42make clean release
43make clean release install DESTDIR=/your/favorite/utility/dir
44make clean all (make both the debug and release versions)
45
46Typically the executable files will need to be copied to the appropriate target
47system's Linux bin directory.
48
49System Requirements
50===================
51
52- A Host Linux machine (Ubuntu 10.4 or higher) with emupack 5.1.NNN.0 installed.
53- A TCI6414 EVM or equivalent target system with a working network connection
54 (TCP is used).
55- Requires the SC-MCSDK 02.02.00 Linux image.
56
57Documentation
58=============
59
60The server should simply be run in the background from the console:
61
62$ctprof_srv &
63
64Use -h to see options.
65
66The client is then used from a host to connect to the server and issue
67use case commands (like measure utilized bandwidth or latency of a specific
68slave) that are serviced by ctprof_srv through a socket interface.
69
70See http://processors.wiki.ti.com/index.php/CToolsLib/ctoolsprof for
71documentation and examples.
72
73History
74=======
75
76July 31/2013 - First release
77
78
79Known Deficiencies
80==================
81
82Enhancements & New Features
83===========================
84
85Bug Fixes
86=========
87
88End of Document
89
90
91
diff --git a/common/error_handler.c b/common/error_handler.c
new file mode 100644
index 0000000..e3b6d22
--- /dev/null
+++ b/common/error_handler.c
@@ -0,0 +1,123 @@
1/*
2 * error_handler.c
3 *
4 * Ctools Profiler Common Implementation
5 *
6 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the
19 * distribution.
20 *
21 * Neither the name of Texas Instruments Incorporated nor the names of
22 * its contributors may be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37*/
38
39#include <stdio.h>
40#include <stdlib.h>
41#include <stdbool.h>
42#include <string.h>
43#include <errno.h>
44#include <semaphore.h>
45#include "error_handler.h"
46#include "logging.h"
47#include "ctoolsprof.h"
48
49/*****************************************************************************
50 * Note: This file must be compatible with c++
51 *
52 * TODO: need to add context msg for things like filenames operands
53 *****************************************************************************/
54char * error_type[] = {
55 /* [ERR_TYPE_SYSTEM] = */ "system",
56 /* [ERR_TYPE_LOCAL] = */ "ctoolsprof"
57};
58
59typedef enum {FATAL, NON_FATAL} error_prefix_t;
60
61char * error_prefix[] = {
62 /* [FATAL] = */ "Fatal Error",
63 /* [NON_FATAL] = */ "Non Fatal Error"
64};
65
66/******************************************************************************
67 * error_handler()
68 *
69 * - Print the error to stderr.
70 * - Log the error.
71 * - Clean-up if fatal and call exit().
72 *****************************************************************************/
73#if DEBUG
74void error_handler(error_type_t err_type, err_id_t err_id, const char * file,
75 const char * func, int line )
76#else
77void error_handler(error_type_t err_type, err_id_t err_id)
78#endif
79{
80 bool fatal;
81 char *msg_prefix;
82 char *err_msg;
83 char *sys_msg = "";
84 char * fmt;
85
86 LOGMSG2("Error id is %d\n", err_id);
87
88 if (g_interactive_mode && err_type == ERR_TYPE_LOCAL){
89 msg_prefix = (error_info[err_id].fatal) ? error_prefix[FATAL]
90 : error_prefix[NON_FATAL];
91 fatal = error_info[err_id].fatal;
92 err_msg = error_info[err_id].msg;
93 } else if (!g_interactive_mode && err_type == ERR_TYPE_LOCAL){
94 msg_prefix = error_prefix[FATAL];
95 fatal = true;
96 err_msg = error_info[err_id].msg;
97 } else {
98 msg_prefix = error_prefix[FATAL];
99 fatal = true;
100 sys_msg = strerror(errno);
101 err_msg = error_info[err_id].msg;
102 }
103
104#if DEBUG
105 fmt = "%s:%d:%s: %s: %s: %s: %s\n";
106 fprintf(stderr, fmt, file, line, func, error_type[err_type], msg_prefix,
107 sys_msg, err_msg);
108
109 LOGERR(fmt, file, line, func, error_type[err_type], msg_prefix, sys_msg,
110 err_msg);
111#else
112 fmt = "%s: %s: %s: %s\n";
113 fprintf(stderr, fmt, error_type[err_type], msg_prefix, sys_msg, err_msg);
114
115 LOGERR(fmt, error_type[err_type], msg_prefix, sys_msg, err_msg);
116#endif
117
118 if (fatal) {
119 clean_up();
120 exit(-1);
121 }
122}
123
diff --git a/common/error_handler.h b/common/error_handler.h
new file mode 100644
index 0000000..ab65071
--- /dev/null
+++ b/common/error_handler.h
@@ -0,0 +1,56 @@
1/*
2 * error_handler.h
3 *
4 * Ctools Profiler Common Implementation
5 *
6 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the
19 * distribution.
20 *
21 * Neither the name of Texas Instruments Incorporated nor the names of
22 * its contributors may be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37*/
38#ifndef ERRORHANDLER_H
39#define ERRORHANDLER_H
40
41#include "error.h"
42
43typedef enum { ERR_TYPE_SYSTEM, ERR_TYPE_LOCAL} error_type_t;
44
45#if DEBUG
46void error_handler(error_type_t err_type, err_id_t err_id, const char * file,
47 const char * func, int line );
48
49#define err_handler(x,y) error_handler(x,y, __FILE__, __func__, __LINE__)
50#else
51void error_handler(error_type_t err_type, err_id_t err_id);
52
53#define err_handler error_handler
54
55#endif
56#endif
diff --git a/common/logging.c b/common/logging.c
new file mode 100644
index 0000000..19fa5d4
--- /dev/null
+++ b/common/logging.c
@@ -0,0 +1,154 @@
1/*
2 * logging.c
3 *
4 * Ctools Profiler Common Implementation
5 *
6 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the
19 * distribution.
20 *
21 * Neither the name of Texas Instruments Incorporated nor the names of
22 * its contributors may be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37*/
38#include <stdio.h>
39#include <stdlib.h>
40#include <stdbool.h>
41#include <stdarg.h>
42#include <sys/time.h>
43#include <time.h>
44#include "error_handler.h"
45#include "logging.h"
46
47bool g_log_enable = false;
48int g_log_level = 0;
49
50static FILE *logout;
51
52#define time_buf_size 16
53static char time_buf[time_buf_size];
54/*****************************************************************************
55 * Internal Function Prototypes
56 * - See Private Function section below for implementations )
57 *****************************************************************************/
58char * get_timestamp();
59
60/*****************************************************************************
61 * Public functions
62 *****************************************************************************/
63/******************************************************************************
64 * log_handler() (for --logfile option)
65 *
66 * - Enable logging to ctprof_log.txt and set log level.
67 *****************************************************************************/
68void log_handler(void **argv, int argc)
69{
70
71 if ((int)argv[0] > 2) {
72 err_handler(ERR_TYPE_LOCAL, ERR_OPT_ARG);
73 }
74
75 if (g_log_enable == false) {
76 logout = fopen(LOG_FILENAME,"w");
77 if (logout == NULL) {
78 err_handler(ERR_TYPE_LOCAL, ERR_LOG_FILE);
79 return;
80 }
81 }
82
83 g_log_level = (int)argv[0];
84 g_log_enable = true;
85
86 fprintf(logout, "Log level set to %d\n", (int)argv[0]);
87
88}
89
90/******************************************************************************
91 * log_msg()
92 *
93 * - log message to logout with timestamp in milliseconds
94 * - Display format " M|F|E H:M:S:MS | Function:Line: Message"
95 * where:
96 * M - message
97 * F - function start
98 * E - error
99 *****************************************************************************/
100void log_msg( log_type_t log_type, const char * format, ...)
101{
102 char * prefix;
103 va_list marker;
104
105
106 switch (log_type) {
107 case LOG_MSG:
108 prefix = " M ";
109 break;
110 case LOG_ERR:
111 prefix = " E ";
112 break;
113 case LOG_FUNC:
114 prefix = " F ";
115 };
116
117 va_start( marker, format);
118 fprintf(logout, "%s %s | ", prefix, get_timestamp());
119 vfprintf(logout, format, marker);
120 fprintf(logout,"\n");
121 va_end(marker);
122 fflush(logout);
123
124}
125/*****************************************************************************
126 * Private functions
127 *****************************************************************************/
128/******************************************************************************
129 * -get_timestamp
130 * Provide timestamp string in H:M:S:MS
131 *
132 * TODO: Use of gettimeofday (which is part of the POSIX standard) works
133 * for Linux but not for Windows. For Windows we must implement our own version
134 * of gettimeofday per the guide at:
135 * http://suacommunity.com/dictionary/gettimeofday-entry.php
136 *****************************************************************************/
137char * get_timestamp()
138{
139
140 struct timeval tv;
141 time_t curtime;
142 int time_size = 0;
143
144 gettimeofday(&tv, NULL);
145 curtime = tv.tv_sec;
146
147 time_size = strftime(time_buf, time_buf_size, "%T", localtime(&curtime));
148 snprintf(time_buf + time_size, time_buf_size, ":%03ld", tv.tv_usec/1000);
149
150 return time_buf;
151}
152
153
154
diff --git a/common/logging.h b/common/logging.h
new file mode 100644
index 0000000..23f236f
--- /dev/null
+++ b/common/logging.h
@@ -0,0 +1,82 @@
1/*
2 * logging.h
3 *
4 * Ctools Profiler Common Implementation
5 *
6 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the
19 * distribution.
20 *
21 * Neither the name of Texas Instruments Incorporated nor the names of
22 * its contributors may be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37*/
38
39#ifndef LOGGING_H
40#define LOGGING_H
41
42extern bool g_log_enable;
43extern int g_log_level;
44
45#ifdef CLIENT
46#define LOG_FILENAME "ctprof_log.txt"
47#endif
48#ifdef SERVER
49#define LOG_FILENAME "ctprof_srv_log.txt"
50#endif
51
52typedef enum {LOG_MSG, LOG_ERR, LOG_FUNC} log_type_t;
53
54void log_handler(void **notused, int argc);
55void log_msg( log_type_t log_type, const char * format, ...);
56
57
58#define IF_LOGGING_ENABLED if (g_log_enable)
59
60#define LOGFUNC() if (g_log_enable && g_log_level > 0) { \
61 log_msg(LOG_FUNC,"%s", __func__); \
62 }
63
64#define LOGMSG0(...) if (g_log_enable && g_log_level >= 0) {\
65 log_msg(LOG_MSG, __VA_ARGS__); \
66 }
67
68#define LOGMSG1(...) if (g_log_enable && g_log_level >= 1) {\
69 log_msg(LOG_MSG, __VA_ARGS__); \
70 }
71
72
73#define LOGMSG2(...) if (g_log_enable && g_log_level >= 2) {\
74 log_msg(LOG_MSG, __VA_ARGS__); \
75 }
76
77
78#define LOGERR(...) if (g_log_enable) { \
79 log_msg(LOG_ERR, __VA_ARGS__); \
80 }
81#endif
82
diff --git a/ctprofsrv_1.0_Manifest.htm b/ctprofsrv_1.0_Manifest.htm
new file mode 100644
index 0000000..b86c8e3
--- /dev/null
+++ b/ctprofsrv_1.0_Manifest.htm
@@ -0,0 +1,1826 @@
1<html xmlns:v="urn:schemas-microsoft-com:vml"
2xmlns:o="urn:schemas-microsoft-com:office:office"
3xmlns:w="urn:schemas-microsoft-com:office:word"
4xmlns:m="http://schemas.microsoft.com/office/2004/12/omml"
5xmlns="http://www.w3.org/TR/REC-html40">
6
7<head>
8<meta http-equiv=Content-Type content="text/html; charset=windows-1252">
9<meta name=ProgId content=Word.Document>
10<meta name=Generator content="Microsoft Word 12">
11<meta name=Originator content="Microsoft Word 12">
12<link rel=File-List href="ctprofsrv_1.0_Manifest_files/filelist.xml">
13<link rel=Edit-Time-Data href="ctprofsrv_1.0_Manifest_files/editdata.mso">
14<!--[if !mso]>
15<style>
16v\:* {behavior:url(#default#VML);}
17o\:* {behavior:url(#default#VML);}
18w\:* {behavior:url(#default#VML);}
19.shape {behavior:url(#default#VML);}
20</style>
21<![endif]-->
22<title>ASP Software Manifest</title>
23<!--[if gte mso 9]><xml>
24 <o:DocumentProperties>
25 <o:Subject>Software Manifest</o:Subject>
26 <o:Author>Texas Instruments, Incorporated</o:Author>
27 <o:Keywords>Manifest Open Source License</o:Keywords>
28 <o:Description>This document lists the licensing for a specific software release.</o:Description>
29 <o:Template>Normal</o:Template>
30 <o:LastAuthor>a0343404</o:LastAuthor>
31 <o:Revision>4</o:Revision>
32 <o:TotalTime>69</o:TotalTime>
33 <o:LastPrinted>2011-06-27T19:49:00Z</o:LastPrinted>
34 <o:Created>2013-07-30T22:10:00Z</o:Created>
35 <o:LastSaved>2013-08-01T13:28:00Z</o:LastSaved>
36 <o:Pages>2</o:Pages>
37 <o:Words>803</o:Words>
38 <o:Characters>4580</o:Characters>
39 <o:Category>Manifest</o:Category>
40 <o:Company>Texas Instruments</o:Company>
41 <o:Lines>38</o:Lines>
42 <o:Paragraphs>10</o:Paragraphs>
43 <o:CharactersWithSpaces>5373</o:CharactersWithSpaces>
44 <o:Version>12.00</o:Version>
45 </o:DocumentProperties>
46 <o:OfficeDocumentSettings>
47 <o:RelyOnVML/>
48 <o:AllowPNG/>
49 </o:OfficeDocumentSettings>
50</xml><![endif]-->
51<link rel=themeData href="ctprofsrv_1.0_Manifest_files/themedata.thmx">
52<link rel=colorSchemeMapping
53href="ctprofsrv_1.0_Manifest_files/colorschememapping.xml">
54<!--[if gte mso 9]><xml>
55 <w:WordDocument>
56 <w:Zoom>110</w:Zoom>
57 <w:SpellingState>Clean</w:SpellingState>
58 <w:GrammarState>Clean</w:GrammarState>
59 <w:TrackMoves>false</w:TrackMoves>
60 <w:TrackFormatting/>
61 <w:PunctuationKerning/>
62 <w:ValidateAgainstSchemas/>
63 <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid>
64 <w:IgnoreMixedContent>false</w:IgnoreMixedContent>
65 <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText>
66 <w:DoNotPromoteQF/>
67 <w:LidThemeOther>EN-US</w:LidThemeOther>
68 <w:LidThemeAsian>X-NONE</w:LidThemeAsian>
69 <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript>
70 <w:Compatibility>
71 <w:BreakWrappedTables/>
72 <w:SnapToGridInCell/>
73 <w:WrapTextWithPunct/>
74 <w:UseAsianBreakRules/>
75 <w:DontGrowAutofit/>
76 <w:SplitPgBreakAndParaMark/>
77 <w:DontVertAlignCellWithSp/>
78 <w:DontBreakConstrainedForcedTables/>
79 <w:DontVertAlignInTxbx/>
80 <w:Word11KerningPairs/>
81 <w:CachedColBalance/>
82 </w:Compatibility>
83 <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel>
84 <m:mathPr>
85 <m:mathFont m:val="Cambria Math"/>
86 <m:brkBin m:val="before"/>
87 <m:brkBinSub m:val="&#45;-"/>
88 <m:smallFrac m:val="off"/>
89 <m:dispDef/>
90 <m:lMargin m:val="0"/>
91 <m:rMargin m:val="0"/>
92 <m:defJc m:val="centerGroup"/>
93 <m:wrapIndent m:val="1440"/>
94 <m:intLim m:val="subSup"/>
95 <m:naryLim m:val="undOvr"/>
96 </m:mathPr></w:WordDocument>
97</xml><![endif]--><!--[if gte mso 9]><xml>
98 <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false"
99 DefSemiHidden="false" DefQFormat="false" LatentStyleCount="267">
100 <w:LsdException Locked="true" QFormat="true" Name="Normal"/>
101 <w:LsdException Locked="true" QFormat="true" Name="heading 1"/>
102 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
103 QFormat="true" Name="heading 2"/>
104 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
105 QFormat="true" Name="heading 3"/>
106 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
107 QFormat="true" Name="heading 4"/>
108 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
109 QFormat="true" Name="heading 5"/>
110 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
111 QFormat="true" Name="heading 6"/>
112 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
113 QFormat="true" Name="heading 7"/>
114 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
115 QFormat="true" Name="heading 8"/>
116 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
117 QFormat="true" Name="heading 9"/>
118 <w:LsdException Locked="true" Name="toc 1"/>
119 <w:LsdException Locked="true" Name="toc 2"/>
120 <w:LsdException Locked="true" Name="toc 3"/>
121 <w:LsdException Locked="true" Name="toc 4"/>
122 <w:LsdException Locked="true" Name="toc 5"/>
123 <w:LsdException Locked="true" Name="toc 6"/>
124 <w:LsdException Locked="true" Name="toc 7"/>
125 <w:LsdException Locked="true" Name="toc 8"/>
126 <w:LsdException Locked="true" Name="toc 9"/>
127 <w:LsdException Locked="true" SemiHidden="true" UnhideWhenUsed="true"
128 QFormat="true" Name="caption"/>
129 <w:LsdException Locked="true" QFormat="true" Name="Title"/>
130 <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/>
131 <w:LsdException Locked="true" QFormat="true" Name="Subtitle"/>
132 <w:LsdException Locked="false" Priority="99" Name="Hyperlink"/>
133 <w:LsdException Locked="true" QFormat="true" Name="Strong"/>
134 <w:LsdException Locked="true" QFormat="true" Name="Emphasis"/>
135 <w:LsdException Locked="false" Priority="99" Name="HTML Preformatted"/>
136 <w:LsdException Locked="false" Priority="99" Name="No List"/>
137 <w:LsdException Locked="true" Name="Table Grid"/>
138 <w:LsdException Locked="false" Priority="99" SemiHidden="true"
139 Name="Placeholder Text"/>
140 <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/>
141 <w:LsdException Locked="false" Priority="60" Name="Light Shading"/>
142 <w:LsdException Locked="false" Priority="61" Name="Light List"/>
143 <w:LsdException Locked="false" Priority="62" Name="Light Grid"/>
144 <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/>
145 <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/>
146 <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/>
147 <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/>
148 <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/>
149 <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/>
150 <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/>
151 <w:LsdException Locked="false" Priority="70" Name="Dark List"/>
152 <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/>
153 <w:LsdException Locked="false" Priority="72" Name="Colorful List"/>
154 <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/>
155 <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/>
156 <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/>
157 <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/>
158 <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/>
159 <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/>
160 <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/>
161 <w:LsdException Locked="false" Priority="99" SemiHidden="true" Name="Revision"/>
162 <w:LsdException Locked="false" Priority="34" QFormat="true"
163 Name="List Paragraph"/>
164 <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/>
165 <w:LsdException Locked="false" Priority="30" QFormat="true"
166 Name="Intense Quote"/>
167 <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/>
168 <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/>
169 <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/>
170 <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/>
171 <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/>
172 <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/>
173 <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/>
174 <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/>
175 <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/>
176 <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/>
177 <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/>
178 <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/>
179 <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/>
180 <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/>
181 <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/>
182 <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/>
183 <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/>
184 <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/>
185 <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/>
186 <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/>
187 <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/>
188 <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/>
189 <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/>
190 <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/>
191 <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/>
192 <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/>
193 <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/>
194 <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/>
195 <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/>
196 <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/>
197 <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/>
198 <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/>
199 <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/>
200 <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/>
201 <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/>
202 <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/>
203 <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/>
204 <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/>
205 <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/>
206 <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/>
207 <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/>
208 <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/>
209 <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/>
210 <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/>
211 <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/>
212 <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/>
213 <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/>
214 <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/>
215 <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/>
216 <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/>
217 <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/>
218 <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/>
219 <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/>
220 <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/>
221 <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/>
222 <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/>
223 <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/>
224 <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/>
225 <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/>
226 <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/>
227 <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/>
228 <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/>
229 <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/>
230 <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/>
231 <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/>
232 <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/>
233 <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/>
234 <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/>
235 <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/>
236 <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/>
237 <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/>
238 <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/>
239 <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/>
240 <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/>
241 <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/>
242 <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/>
243 <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/>
244 <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/>
245 <w:LsdException Locked="false" Priority="19" QFormat="true"
246 Name="Subtle Emphasis"/>
247 <w:LsdException Locked="false" Priority="21" QFormat="true"
248 Name="Intense Emphasis"/>
249 <w:LsdException Locked="false" Priority="31" QFormat="true"
250 Name="Subtle Reference"/>
251 <w:LsdException Locked="false" Priority="32" QFormat="true"
252 Name="Intense Reference"/>
253 <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/>
254 <w:LsdException Locked="false" Priority="37" SemiHidden="true"
255 UnhideWhenUsed="true" Name="Bibliography"/>
256 <w:LsdException Locked="false" Priority="39" SemiHidden="true"
257 UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/>
258 </w:LatentStyles>
259</xml><![endif]-->
260<style>
261<!--
262 /* Font Definitions */
263 @font-face
264 {font-family:"MS Mincho";
265 panose-1:2 2 6 9 4 2 5 8 3 4;
266 mso-font-alt:"\FF2D\FF33 \660E\671D";
267 mso-font-charset:128;
268 mso-generic-font-family:modern;
269 mso-font-pitch:fixed;
270 mso-font-signature:-536870145 1791491579 18 0 131231 0;}
271@font-face
272 {font-family:"Cambria Math";
273 panose-1:2 4 5 3 5 4 6 3 2 4;
274 mso-font-charset:0;
275 mso-generic-font-family:roman;
276 mso-font-pitch:variable;
277 mso-font-signature:-536870145 1107305727 0 0 415 0;}
278@font-face
279 {font-family:Calibri;
280 panose-1:2 15 5 2 2 2 4 3 2 4;
281 mso-font-charset:0;
282 mso-generic-font-family:swiss;
283 mso-font-pitch:variable;
284 mso-font-signature:-520092929 1073786111 9 0 415 0;}
285@font-face
286 {font-family:Tahoma;
287 panose-1:2 11 6 4 3 5 4 4 2 4;
288 mso-font-charset:0;
289 mso-generic-font-family:swiss;
290 mso-font-pitch:variable;
291 mso-font-signature:-520081665 -1073717157 41 0 66047 0;}
292@font-face
293 {font-family:"\@MS Mincho";
294 panose-1:2 2 6 9 4 2 5 8 3 4;
295 mso-font-charset:128;
296 mso-generic-font-family:modern;
297 mso-font-pitch:fixed;
298 mso-font-signature:-536870145 1791491579 18 0 131231 0;}
299@font-face
300 {font-family:Consolas;
301 panose-1:2 11 6 9 2 2 4 3 2 4;
302 mso-font-charset:0;
303 mso-generic-font-family:modern;
304 mso-font-pitch:fixed;
305 mso-font-signature:-520092929 1073806591 9 0 415 0;}
306 /* Style Definitions */
307 p.MsoNormal, li.MsoNormal, div.MsoNormal
308 {mso-style-unhide:no;
309 mso-style-qformat:yes;
310 mso-style-parent:"";
311 margin:0in;
312 margin-bottom:.0001pt;
313 mso-pagination:widow-orphan;
314 font-size:10.0pt;
315 font-family:"Arial","sans-serif";
316 mso-fareast-font-family:"Times New Roman";
317 mso-font-kerning:11.0pt;}
318p.MsoFootnoteText, li.MsoFootnoteText, div.MsoFootnoteText
319 {mso-style-noshow:yes;
320 mso-style-unhide:no;
321 mso-style-link:"Footnote Text Char";
322 margin:0in;
323 margin-bottom:.0001pt;
324 mso-pagination:widow-orphan;
325 font-size:10.0pt;
326 font-family:"Arial","sans-serif";
327 mso-fareast-font-family:"Times New Roman";
328 mso-font-kerning:11.0pt;}
329p.MsoHeader, li.MsoHeader, div.MsoHeader
330 {mso-style-unhide:no;
331 mso-style-link:"Header Char";
332 margin:0in;
333 margin-bottom:.0001pt;
334 mso-pagination:widow-orphan;
335 tab-stops:center 3.0in right 6.0in;
336 font-size:10.0pt;
337 font-family:"Arial","sans-serif";
338 mso-fareast-font-family:"Times New Roman";
339 mso-font-kerning:11.0pt;}
340p.MsoFooter, li.MsoFooter, div.MsoFooter
341 {mso-style-unhide:no;
342 mso-style-link:"Footer Char";
343 margin:0in;
344 margin-bottom:.0001pt;
345 mso-pagination:widow-orphan;
346 tab-stops:center 3.0in right 6.0in;
347 font-size:10.0pt;
348 font-family:"Arial","sans-serif";
349 mso-fareast-font-family:"Times New Roman";
350 mso-font-kerning:11.0pt;}
351span.MsoFootnoteReference
352 {mso-style-noshow:yes;
353 mso-style-unhide:no;
354 font-family:"Times New Roman","serif";
355 mso-ascii-font-family:"Times New Roman";
356 mso-hansi-font-family:"Times New Roman";
357 mso-bidi-font-family:"Times New Roman";
358 vertical-align:super;}
359p.MsoBodyText, li.MsoBodyText, div.MsoBodyText
360 {mso-style-unhide:no;
361 mso-style-link:"Body Text Char";
362 margin-top:0in;
363 margin-right:0in;
364 margin-bottom:6.0pt;
365 margin-left:0in;
366 mso-pagination:widow-orphan;
367 font-size:10.0pt;
368 font-family:"Arial","sans-serif";
369 mso-fareast-font-family:"Times New Roman";
370 mso-font-kerning:11.0pt;}
371p.MsoBlockText, li.MsoBlockText, div.MsoBlockText
372 {mso-style-unhide:no;
373 margin-top:0in;
374 margin-right:1.0in;
375 margin-bottom:6.0pt;
376 margin-left:1.0in;
377 mso-pagination:widow-orphan;
378 font-size:10.0pt;
379 font-family:"Arial","sans-serif";
380 mso-fareast-font-family:"Times New Roman";
381 mso-font-kerning:11.0pt;}
382a:link, span.MsoHyperlink
383 {mso-style-priority:99;
384 mso-style-unhide:no;
385 color:blue;
386 text-decoration:underline;
387 text-underline:single;}
388a:visited, span.MsoHyperlinkFollowed
389 {mso-style-unhide:no;
390 color:purple;
391 mso-themecolor:followedhyperlink;
392 text-decoration:underline;
393 text-underline:single;}
394p.MsoDocumentMap, li.MsoDocumentMap, div.MsoDocumentMap
395 {mso-style-noshow:yes;
396 mso-style-unhide:no;
397 mso-style-link:"Document Map Char";
398 margin:0in;
399 margin-bottom:.0001pt;
400 mso-pagination:widow-orphan;
401 background:navy;
402 font-size:10.0pt;
403 font-family:"Tahoma","sans-serif";
404 mso-fareast-font-family:"Times New Roman";
405 mso-font-kerning:11.0pt;}
406pre
407 {mso-style-priority:99;
408 mso-style-unhide:no;
409 mso-style-link:"HTML Preformatted Char";
410 margin:0in;
411 margin-bottom:.0001pt;
412 mso-pagination:widow-orphan;
413 font-size:10.0pt;
414 font-family:"Courier New";
415 mso-fareast-font-family:Calibri;
416 mso-fareast-theme-font:minor-latin;}
417p.MsoAcetate, li.MsoAcetate, div.MsoAcetate
418 {mso-style-noshow:yes;
419 mso-style-unhide:no;
420 mso-style-link:"Balloon Text Char";
421 margin:0in;
422 margin-bottom:.0001pt;
423 mso-pagination:widow-orphan;
424 font-size:8.0pt;
425 font-family:"Tahoma","sans-serif";
426 mso-fareast-font-family:"Times New Roman";
427 mso-font-kerning:11.0pt;}
428span.HTMLPreformattedChar
429 {mso-style-name:"HTML Preformatted Char";
430 mso-style-priority:99;
431 mso-style-unhide:no;
432 mso-style-locked:yes;
433 mso-style-link:"HTML Preformatted";
434 font-family:"Courier New";
435 mso-ascii-font-family:"Courier New";
436 mso-fareast-font-family:Calibri;
437 mso-fareast-theme-font:minor-latin;
438 mso-hansi-font-family:"Courier New";
439 mso-bidi-font-family:"Courier New";}
440span.FootnoteTextChar
441 {mso-style-name:"Footnote Text Char";
442 mso-style-noshow:yes;
443 mso-style-unhide:no;
444 mso-style-locked:yes;
445 mso-style-link:"Footnote Text";
446 font-family:"Arial","sans-serif";
447 mso-ascii-font-family:Arial;
448 mso-hansi-font-family:Arial;
449 mso-bidi-font-family:Arial;
450 mso-font-kerning:11.0pt;}
451span.HeaderChar
452 {mso-style-name:"Header Char";
453 mso-style-noshow:yes;
454 mso-style-unhide:no;
455 mso-style-locked:yes;
456 mso-style-link:Header;
457 font-family:"Arial","sans-serif";
458 mso-ascii-font-family:Arial;
459 mso-hansi-font-family:Arial;
460 mso-bidi-font-family:Arial;
461 mso-font-kerning:11.0pt;}
462span.FooterChar
463 {mso-style-name:"Footer Char";
464 mso-style-noshow:yes;
465 mso-style-unhide:no;
466 mso-style-locked:yes;
467 mso-style-link:Footer;
468 font-family:"Arial","sans-serif";
469 mso-ascii-font-family:Arial;
470 mso-hansi-font-family:Arial;
471 mso-bidi-font-family:Arial;
472 mso-font-kerning:11.0pt;}
473span.BodyTextChar
474 {mso-style-name:"Body Text Char";
475 mso-style-noshow:yes;
476 mso-style-unhide:no;
477 mso-style-locked:yes;
478 mso-style-link:"Body Text";
479 font-family:"Arial","sans-serif";
480 mso-ascii-font-family:Arial;
481 mso-hansi-font-family:Arial;
482 mso-bidi-font-family:Arial;
483 mso-font-kerning:11.0pt;}
484span.DocumentMapChar
485 {mso-style-name:"Document Map Char";
486 mso-style-noshow:yes;
487 mso-style-unhide:no;
488 mso-style-locked:yes;
489 mso-style-link:"Document Map";
490 mso-ansi-font-size:1.0pt;
491 font-family:"Arial","sans-serif";
492 mso-ascii-font-family:Arial;
493 mso-hansi-font-family:Arial;
494 mso-bidi-font-family:Arial;
495 mso-font-kerning:11.0pt;}
496span.BalloonTextChar
497 {mso-style-name:"Balloon Text Char";
498 mso-style-noshow:yes;
499 mso-style-unhide:no;
500 mso-style-locked:yes;
501 mso-style-link:"Balloon Text";
502 mso-ansi-font-size:1.0pt;
503 font-family:"Arial","sans-serif";
504 mso-ascii-font-family:Arial;
505 mso-hansi-font-family:Arial;
506 mso-bidi-font-family:Arial;
507 mso-font-kerning:11.0pt;}
508p.EditorsComment, li.EditorsComment, div.EditorsComment
509 {mso-style-name:"Editors Comment";
510 mso-style-unhide:no;
511 mso-style-parent:"Block Text";
512 mso-style-next:"Body Text";
513 margin-top:0in;
514 margin-right:1.0in;
515 margin-bottom:6.0pt;
516 margin-left:1.0in;
517 mso-pagination:widow-orphan;
518 font-size:10.0pt;
519 font-family:"Arial","sans-serif";
520 mso-fareast-font-family:"Times New Roman";
521 mso-font-kerning:11.0pt;
522 font-style:italic;
523 mso-bidi-font-style:normal;}
524p.StyleEditorsCommentCustomColorRGB51153255, li.StyleEditorsCommentCustomColorRGB51153255, div.StyleEditorsCommentCustomColorRGB51153255
525 {mso-style-name:"Style Editors Comment + Custom Color\(RGB\(51153255\)\)";
526 mso-style-update:auto;
527 mso-style-unhide:no;
528 mso-style-parent:"Editors Comment";
529 margin-top:0in;
530 margin-right:1.0in;
531 margin-bottom:6.0pt;
532 margin-left:0in;
533 mso-pagination:widow-orphan;
534 font-size:10.0pt;
535 font-family:"Arial","sans-serif";
536 mso-fareast-font-family:"Times New Roman";
537 color:#3399FF;
538 mso-font-kerning:11.0pt;
539 font-style:italic;}
540span.1ParaChar
541 {mso-style-name:"1_Para Char";
542 mso-style-unhide:no;
543 mso-style-locked:yes;
544 mso-style-link:1_Para;
545 font-family:"Arial","sans-serif";
546 mso-ascii-font-family:Arial;
547 mso-hansi-font-family:Arial;
548 mso-bidi-font-family:Arial;
549 mso-font-kerning:10.0pt;
550 mso-ansi-language:EN-US;
551 mso-fareast-language:EN-US;
552 mso-bidi-language:AR-SA;}
553p.1Para, li.1Para, div.1Para
554 {mso-style-name:1_Para;
555 mso-style-unhide:no;
556 mso-style-parent:"";
557 mso-style-link:"1_Para Char";
558 margin-top:10.0pt;
559 margin-right:0in;
560 margin-bottom:6.0pt;
561 margin-left:0in;
562 text-align:justify;
563 line-height:11.0pt;
564 mso-line-height-rule:exactly;
565 mso-pagination:widow-orphan lines-together;
566 font-size:10.0pt;
567 font-family:"Arial","sans-serif";
568 mso-fareast-font-family:"Times New Roman";
569 mso-font-kerning:10.0pt;}
570span.SpellE
571 {mso-style-name:"";
572 mso-spl-e:yes;}
573span.GramE
574 {mso-style-name:"";
575 mso-gram-e:yes;}
576.MsoChpDefault
577 {mso-style-type:export-only;
578 mso-default-props:yes;
579 font-size:10.0pt;
580 mso-ansi-font-size:10.0pt;
581 mso-bidi-font-size:10.0pt;}
582@page WordSection1
583 {size:11.0in 8.5in;
584 mso-page-orientation:landscape;
585 margin:1.25in 1.0in 1.25in 1.0in;
586 mso-header-margin:.5in;
587 mso-footer-margin:.5in;
588 mso-paper-source:0;}
589div.WordSection1
590 {page:WordSection1;}
591-->
592</style>
593<!--[if gte mso 10]>
594<style>
595 /* Style Definitions */
596 table.MsoNormalTable
597 {mso-style-name:"Table Normal";
598 mso-tstyle-rowband-size:0;
599 mso-tstyle-colband-size:0;
600 mso-style-noshow:yes;
601 mso-style-priority:99;
602 mso-style-qformat:yes;
603 mso-style-parent:"";
604 mso-padding-alt:0in 5.4pt 0in 5.4pt;
605 mso-para-margin:0in;
606 mso-para-margin-bottom:.0001pt;
607 mso-pagination:widow-orphan;
608 font-size:10.0pt;
609 font-family:"Times New Roman","serif";}
610table.MsoTableGrid
611 {mso-style-name:"Table Grid";
612 mso-tstyle-rowband-size:0;
613 mso-tstyle-colband-size:0;
614 mso-style-unhide:no;
615 border:solid windowtext 1.0pt;
616 mso-border-alt:solid windowtext .5pt;
617 mso-padding-alt:0in 5.4pt 0in 5.4pt;
618 mso-border-insideh:.5pt solid windowtext;
619 mso-border-insidev:.5pt solid windowtext;
620 mso-para-margin:0in;
621 mso-para-margin-bottom:.0001pt;
622 mso-pagination:widow-orphan;
623 font-size:10.0pt;
624 font-family:"Times New Roman","serif";}
625</style>
626<![endif]--><!--[if gte mso 9]><xml>
627 <o:shapedefaults v:ext="edit" spidmax="9218"/>
628</xml><![endif]--><!--[if gte mso 9]><xml>
629 <o:shapelayout v:ext="edit">
630 <o:idmap v:ext="edit" data="1"/>
631 </o:shapelayout></xml><![endif]-->
632</head>
633
634<body lang=EN-US link=blue vlink=purple style='tab-interval:.5in'>
635
636<div class=WordSection1>
637
638<p class=MsoNormal style='mso-outline-level:1'><o:p>&nbsp;</o:p></p>
639
640<p class=MsoNormal style='mso-outline-level:1'><v:shapetype id="_x0000_t75"
641 coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
642 filled="f" stroked="f">
643 <v:stroke joinstyle="miter"/>
644 <v:formulas>
645 <v:f eqn="if lineDrawn pixelLineWidth 0"/>
646 <v:f eqn="sum @0 1 0"/>
647 <v:f eqn="sum 0 0 @1"/>
648 <v:f eqn="prod @2 1 2"/>
649 <v:f eqn="prod @3 21600 pixelWidth"/>
650 <v:f eqn="prod @3 21600 pixelHeight"/>
651 <v:f eqn="sum @0 0 1"/>
652 <v:f eqn="prod @6 1 2"/>
653 <v:f eqn="prod @7 21600 pixelWidth"/>
654 <v:f eqn="sum @8 21600 0"/>
655 <v:f eqn="prod @7 21600 pixelHeight"/>
656 <v:f eqn="sum @10 21600 0"/>
657 </v:formulas>
658 <v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect"/>
659 <o:lock v:ext="edit" aspectratio="t"/>
660</v:shapetype><v:shape id="Picture_x0020_1" o:spid="_x0000_i1025" type="#_x0000_t75"
661 alt="hdr_ti_logo" style='width:180pt;height:24.75pt;visibility:visible;
662 mso-wrap-style:square;mso-left-percent:-10001;mso-top-percent:-10001;
663 mso-position-horizontal:absolute;mso-position-horizontal-relative:char;
664 mso-position-vertical:absolute;mso-position-vertical-relative:line;
665 mso-left-percent:-10001;mso-top-percent:-10001'>
666 <v:textbox style='mso-rotate-with-shape:t'/>
667</v:shape><b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt'><span
668style='mso-spacerun:yes'>                                                                                   
669</span><span style='mso-spacerun:yes'>                     </span><span
670style='mso-spacerun:yes'>    </span>August 1, 2013<o:p></o:p></span></b></p>
671
672<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
673normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
674
675<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
676normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
677
678<p class=MsoNormal><v:line id="_x0000_s1028" style='position:absolute;flip:y;
679 z-index:1;mso-position-horizontal-relative:page;
680 mso-position-vertical-relative:page' from="396pt,-17.65pt" to="396pt,342.9pt"
681 strokecolor="white">
682 <w:wrap anchorx="page" anchory="page"/>
683 <w:anchorlock/>
684</v:line><span class=SpellE><span class=GramE><b style='mso-bidi-font-weight:
685normal'><span style='font-size:12.0pt'>ctprof_srv</span></b></span></span><b
686style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt'> Manifest<o:p></o:p></span></b></p>
687
688<p class=MsoNormal><o:p>&nbsp;</o:p></p>
689
690<p class=MsoNormal><o:p>&nbsp;</o:p></p>
691
692<p class=MsoNormal><o:p>&nbsp;</o:p></p>
693
694<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
695normal'><span style='font-size:12.0pt'>Legend <o:p></o:p></span></b></p>
696
697<p class=MsoNormal><o:p>&nbsp;</o:p></p>
698
699<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
700 style='border-collapse:collapse;border:none;mso-border-alt:solid windowtext .5pt;
701 mso-yfti-tbllook:480;mso-padding-alt:0in 5.4pt 0in 5.4pt;mso-border-insideh:
702 .5pt solid windowtext;mso-border-insidev:.5pt solid windowtext'>
703 <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes'>
704 <td width=131 valign=top style='width:98.1pt;border:solid windowtext 1.0pt;
705 mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
706 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
707 2.0pt;margin-left:0in'><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Software
708 Name </span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
709 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
710 </td>
711 <td width=748 valign=top style='width:560.7pt;border:solid windowtext 1.0pt;
712 border-left:none;mso-border-left-alt:solid windowtext .5pt;mso-border-alt:
713 solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
714 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
715 2.0pt;margin-left:0in'>The name of the application or file<span
716 style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-font-family:
717 Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
718 </td>
719 </tr>
720 <tr style='mso-yfti-irow:1'>
721 <td width=131 valign=top style='width:98.1pt;border:solid windowtext 1.0pt;
722 border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
723 padding:0in 5.4pt 0in 5.4pt'>
724 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
725 2.0pt;margin-left:0in'><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Version
726 </span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
727 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
728 </td>
729 <td width=748 valign=top style='width:560.7pt;border-top:none;border-left:
730 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
731 mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
732 mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
733 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
734 2.0pt;margin-left:0in'>Version of the application or file<span
735 style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-font-family:
736 Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
737 </td>
738 </tr>
739 <tr style='mso-yfti-irow:2'>
740 <td width=131 valign=top style='width:98.1pt;border:solid windowtext 1.0pt;
741 border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
742 padding:0in 5.4pt 0in 5.4pt'>
743 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
744 2.0pt;margin-left:0in'><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>License
745 Type</span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
746 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
747 </td>
748 <td width=748 valign=top style='width:560.7pt;border-top:none;border-left:
749 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
750 mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
751 mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
752 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
753 2.0pt;margin-left:0in'>Type of license(s) under which TI will be providing
754 software to the licensee (e.g. BSD, GPLv2, TI TSPA License, TI Commercial
755 License). See Open Source Reference License Disclaimer in the Disclaimers Section.<span
756 style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-font-family:
757 Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
758 </td>
759 </tr>
760 <tr style='mso-yfti-irow:3'>
761 <td width=131 valign=top style='width:98.1pt;border:solid windowtext 1.0pt;
762 border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
763 padding:0in 5.4pt 0in 5.4pt'>
764 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
765 2.0pt;margin-left:0in'><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Location
766 </span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
767 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
768 </td>
769 <td width=748 valign=top style='width:560.7pt;border-top:none;border-left:
770 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
771 mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
772 mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
773 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
774 2.0pt;margin-left:0in'>The directory name and path on the media (or in an
775 archive) where the Software is located.<span style='font-size:12.0pt;
776 font-family:"Times New Roman","serif";mso-fareast-font-family:Calibri;
777 mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
778 </td>
779 </tr>
780 <tr style='mso-yfti-irow:4'>
781 <td width=131 valign=top style='width:98.1pt;border:solid windowtext 1.0pt;
782 border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
783 padding:0in 5.4pt 0in 5.4pt'>
784 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
785 2.0pt;margin-left:0in'><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Delivered
786 As</span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
787 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
788 </td>
789 <td width=748 valign=top style='width:560.7pt;border-top:none;border-left:
790 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
791 mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
792 mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
793 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
794 2.0pt;margin-left:0in'>This field will either be “Source”, “Binary” or “Source
795 and Binary” and is the form the content of the Software is delivered
796 in.&nbsp; If the Software is delivered in an archive format, this field
797 applies to the contents of the archive. If the word Limited is used with
798 Source, as in “Limited Source” or “Limited Source and Binary” then only
799 portions of the Source for the application are provided.<span
800 style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-font-family:
801 Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
802 </td>
803 </tr>
804 <tr style='mso-yfti-irow:5'>
805 <td width=131 valign=top style='width:98.1pt;border:solid windowtext 1.0pt;
806 border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
807 padding:0in 5.4pt 0in 5.4pt'>
808 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
809 2.0pt;margin-left:0in'><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Modified
810 by TI</span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
811 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
812 </td>
813 <td width=748 valign=top style='width:560.7pt;border-top:none;border-left:
814 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
815 mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
816 mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
817 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
818 2.0pt;margin-left:0in'>This field will either be “Yes” or “No”. A “Yes” means
819 TI has made changes to the Software. A “No” means TI has not made any
820 changes. Note: This field is not applicable for Software “Obtained from” TI.<span
821 style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-font-family:
822 Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
823 </td>
824 </tr>
825 <tr style='mso-yfti-irow:6;mso-yfti-lastrow:yes'>
826 <td width=131 valign=top style='width:98.1pt;border:solid windowtext 1.0pt;
827 border-top:none;mso-border-top-alt:solid windowtext .5pt;mso-border-alt:solid windowtext .5pt;
828 padding:0in 5.4pt 0in 5.4pt'>
829 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
830 2.0pt;margin-left:0in'><b><span style='font-size:12.0pt;font-family:"Times New Roman","serif"'>Obtained
831 from</span></b><span style='font-size:12.0pt;font-family:"Times New Roman","serif";
832 mso-fareast-font-family:Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
833 </td>
834 <td width=748 valign=top style='width:560.7pt;border-top:none;border-left:
835 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
836 mso-border-top-alt:solid windowtext .5pt;mso-border-left-alt:solid windowtext .5pt;
837 mso-border-alt:solid windowtext .5pt;padding:0in 5.4pt 0in 5.4pt'>
838 <p class=MsoNormal style='margin-top:3.0pt;margin-right:0in;margin-bottom:
839 2.0pt;margin-left:0in'>This field specifies from where or from whom TI
840 obtained the Software. It may be a URL to an Open Source site, a 3<sup>rd</sup>
841 party licensor, or TI (if TI developed the software). If this field contains
842 a link to Open Source software, the date TI downloaded the Software is also
843 recorded. See Links Disclaimer in the Disclaimers Section.<span
844 style='font-size:12.0pt;font-family:"Times New Roman","serif";mso-fareast-font-family:
845 Calibri;mso-fareast-theme-font:minor-latin'><o:p></o:p></span></p>
846 </td>
847 </tr>
848</table>
849
850<p class=MsoNormal><o:p>&nbsp;</o:p></p>
851
852<p class=MsoNormal><o:p>&nbsp;</o:p></p>
853
854<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
855normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
856
857<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
858normal'><span style='font-size:12.0pt'>DISCLAIMERS<o:p></o:p></span></b></p>
859
860<p class=MsoNormal style='mso-outline-level:1'><o:p>&nbsp;</o:p></p>
861
862<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
863normal'><u>Export Control Classification Number (ECCN)<o:p></o:p></u></b></p>
864
865<p class=MsoNormal style='mso-outline-level:1'><o:p>&nbsp;</o:p></p>
866
867<p class=MsoNormal style='margin-left:.5in;mso-outline-level:1'>Any use of ECCNs
868listed in the Manifest is at the user’s risk and without recourse to TI.<span
869style='mso-spacerun:yes'>   </span>Your company, as the exporter of record, is
870responsible for determining the correct classification of any item at the time
871of export. Any export classification by TI of Software is for TI’s internal use
872only and shall not be construed as a representation or warranty regarding the
873proper export classification for such Software or whether an export license or
874other documentation is required for exporting such Software<b style='mso-bidi-font-weight:
875normal'><span style='font-size:12.0pt'>.<span style='mso-spacerun:yes'> 
876</span><o:p></o:p></span></b></p>
877
878<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
879normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
880
881<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
882normal'><u>Links in the Manifest<o:p></o:p></u></b></p>
883
884<p class=MsoNormal style='mso-outline-level:1'><o:p>&nbsp;</o:p></p>
885
886<p class=1Para style='margin-left:.5in'>Any links appearing on this Manifest
887(for example in the “Obtained from” field) were verified at the time the
888Manifest was created. TI makes no guarantee that any listed links will remain
889active in the future.</p>
890
891<p class=1Para><b style='mso-bidi-font-weight:normal'><u>Open Source License
892References<o:p></o:p></u></b></p>
893
894<p class=1Para style='margin-left:.5in'>Your company is responsible for
895confirming the applicable license terms for any open source Software listed in
896this Manifest that was not “Obtained from” TI.<span style='mso-spacerun:yes'> 
897</span>Any open source license specified in this Manifest for Software that was
898not “Obtained from” TI is for TI’s internal use only and shall not be construed
899as a representation or warranty regarding the proper open source license terms
900for such Software.</p>
901
902<b style='mso-bidi-font-weight:normal'><span style='font-size:12.0pt;
903font-family:"Arial","sans-serif";mso-fareast-font-family:"Times New Roman";
904mso-font-kerning:11.0pt;mso-ansi-language:EN-US;mso-fareast-language:EN-US;
905mso-bidi-language:AR-SA'><br clear=all style='mso-special-character:line-break;
906page-break-before:always'>
907</span></b>
908
909<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
910normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
911
912<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
913normal'><span style='font-size:12.0pt'>Export Information<o:p></o:p></span></b></p>
914
915<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
916normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
917
918<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho";mso-font-kerning:
9190pt;mso-fareast-language:JA'>ECCN for Software included in this release:<o:p></o:p></span></p>
920
921<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>Publically
922Available</span><span style='mso-fareast-font-family:"MS Mincho";mso-font-kerning:
9230pt;mso-fareast-language:JA'>&nbsp; <o:p></o:p></span></p>
924
925<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho";mso-font-kerning:
9260pt;mso-fareast-language:JA'><o:p>&nbsp;</o:p></span></p>
927
928<p class=MsoNormal><span style='mso-fareast-font-family:"MS Mincho";mso-font-kerning:
9290pt;mso-fareast-language:JA'>ECCN for Technology (e.g., user documentation,
930specifications) included in this release:<o:p></o:p></span></p>
931
932<p class=MsoNormal><span style='font-size:11.0pt;font-family:"Calibri","sans-serif"'>N/A</span><span
933style='mso-fareast-font-family:"MS Mincho";mso-font-kerning:0pt;mso-fareast-language:
934JA'><o:p></o:p></span></p>
935
936<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
937normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
938
939<p class=MsoNormal style='mso-outline-level:1'><o:p>&nbsp;</o:p></p>
940
941<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
942normal'><span style='font-size:12.0pt'>Manifest<o:p></o:p></span></b></p>
943
944<p class=MsoNormal><o:p>&nbsp;</o:p></p>
945
946<p class=MsoNormal>See Legend above for a description of the columns and
947possible values.</p>
948
949<p class=MsoNormal><o:p>&nbsp;</o:p></p>
950
951<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0 width=865
952 style='width:648.85pt;border-collapse:collapse;border:none;mso-border-alt:
953 solid windowtext .5pt;mso-yfti-tbllook:480;mso-padding-alt:0in 5.4pt 0in 5.4pt;
954 mso-border-insideh:.75pt solid windowtext;mso-border-insidev:.75pt solid windowtext'>
955 <thead>
956 <tr style='mso-yfti-irow:0;mso-yfti-firstrow:yes;page-break-inside:avoid'>
957 <td width=115 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
958 mso-border-top-alt:.5pt;mso-border-left-alt:.5pt;mso-border-bottom-alt:.75pt;
959 mso-border-right-alt:.75pt;mso-border-color-alt:windowtext;mso-border-style-alt:
960 solid;background:#E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
961 <p class=MsoNormal style='margin-top:3.0pt'><b style='mso-bidi-font-weight:
962 normal'>Software Name<o:p></o:p></b></p>
963 </td>
964 <td width=76 valign=top style='width:56.9pt;border:solid windowtext 1.0pt;
965 border-left:none;mso-border-left-alt:solid windowtext .75pt;mso-border-alt:
966 solid windowtext .75pt;mso-border-top-alt:solid windowtext .5pt;background:
967 #E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
968 <p class=MsoNormal style='margin-top:3.0pt'><b style='mso-bidi-font-weight:
969 normal'>Version<o:p></o:p></b></p>
970 </td>
971 <td width=89 valign=top style='width:66.4pt;border:solid windowtext 1.0pt;
972 border-left:none;mso-border-left-alt:solid windowtext .75pt;mso-border-alt:
973 solid windowtext .75pt;mso-border-top-alt:solid windowtext .5pt;background:
974 #E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
975 <p class=MsoNormal style='margin-top:3.0pt'><b style='mso-bidi-font-weight:
976 normal'>License Type<o:p></o:p></b></p>
977 </td>
978 <td width=84 valign=top style='width:63.0pt;border:solid windowtext 1.0pt;
979 border-left:none;mso-border-left-alt:solid windowtext .75pt;mso-border-alt:
980 solid windowtext .75pt;mso-border-top-alt:solid windowtext .5pt;background:
981 #E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
982 <p class=MsoNormal style='margin-top:3.0pt'><b style='mso-bidi-font-weight:
983 normal'>Delivered <o:p></o:p></b></p>
984 <p class=MsoNormal style='margin-top:3.0pt'><b style='mso-bidi-font-weight:
985 normal'>As <o:p></o:p></b></p>
986 </td>
987 <td width=108 valign=top style='width:81.0pt;border:solid windowtext 1.0pt;
988 border-left:none;mso-border-left-alt:solid windowtext .75pt;mso-border-alt:
989 solid windowtext .75pt;mso-border-top-alt:solid windowtext .5pt;background:
990 #E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
991 <p class=MsoNormal style='margin-top:3.0pt'><b style='mso-bidi-font-weight:
992 normal'>Modified by <o:p></o:p></b></p>
993 <p class=MsoNormal style='margin-top:3.0pt'><b style='mso-bidi-font-weight:
994 normal'>TI <o:p></o:p></b></p>
995 </td>
996 <td width=394 colspan=2 valign=top style='width:295.15pt;border:solid windowtext 1.0pt;
997 border-left:none;mso-border-left-alt:solid windowtext .75pt;mso-border-top-alt:
998 .5pt;mso-border-left-alt:.75pt;mso-border-bottom-alt:.75pt;mso-border-right-alt:
999 .5pt;mso-border-color-alt:windowtext;mso-border-style-alt:solid;background:
1000 #E6E6E6;padding:0in 5.4pt 0in 5.4pt'>
1001 <p class=MsoNormal style='margin-top:3.0pt;mso-outline-level:1'><b
1002 style='mso-bidi-font-weight:normal'><span style='font-size:9.0pt'><o:p>&nbsp;</o:p></span></b></p>
1003 </td>
1004 </tr>
1005 </thead>
1006 <tr style='mso-yfti-irow:1;page-break-inside:avoid'>
1007 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1008 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1009 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1010 0in 5.4pt 0in 5.4pt'>
1011 <p class=MsoNormal><span class=SpellE>ctprof_srv</span></p>
1012 </td>
1013 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1014 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1015 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1016 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1017 <p class=MsoNormal>1.0</p>
1018 </td>
1019 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1020 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1021 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1022 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1023 <p class=MsoNormal>BSD</p>
1024 </td>
1025 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1026 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1027 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1028 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1029 <p class=MsoNormal>“Source and Binary”</p>
1030 </td>
1031 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1032 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1033 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1034 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1035 <p class=MsoNormal>N/A</p>
1036 </td>
1037 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1038 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1039 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1040 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1041 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1042 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1043 </td>
1044 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1045 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1046 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1047 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1048 padding:0in 5.4pt 0in 5.4pt'>
1049 <p class=MsoNormal>./<span class=SpellE>ctoolsprof</span>/server</p>
1050 </td>
1051 </tr>
1052 <tr style='mso-yfti-irow:2;page-break-inside:avoid'>
1053 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1054 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1055 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1056 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1057 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1058 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1059 style='font-size:9.0pt'>Obtained from</span></b></p>
1060 </td>
1061 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1062 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1063 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1064 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1065 padding:0in 5.4pt 0in 5.4pt'>
1066 <p class=MsoNormal>TI</p>
1067 </td>
1068 </tr>
1069 <tr style='mso-yfti-irow:3;page-break-inside:avoid'>
1070 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1071 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1072 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1073 0in 5.4pt 0in 5.4pt'>
1074 <p class=MsoNormal><span class=SpellE>ctprof_ex</span></p>
1075 </td>
1076 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1077 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1078 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1079 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1080 <p class=MsoNormal>1.0</p>
1081 </td>
1082 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1083 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1084 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1085 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1086 <p class=MsoNormal>BSD</p>
1087 </td>
1088 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1089 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1090 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1091 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1092 <p class=MsoNormal>“Source and Binary”</p>
1093 </td>
1094 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1095 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1096 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1097 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1098 <p class=MsoNormal>N/A</p>
1099 </td>
1100 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1101 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1102 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1103 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1104 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1105 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1106 </td>
1107 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1108 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1109 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1110 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1111 padding:0in 5.4pt 0in 5.4pt'>
1112 <p class=MsoNormal>./<span class=SpellE>ctoolsprof</span>/<span class=SpellE>example_app</span></p>
1113 </td>
1114 </tr>
1115 <tr style='mso-yfti-irow:4;page-break-inside:avoid'>
1116 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1117 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1118 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1119 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1120 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1121 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1122 style='font-size:9.0pt'>Obtained from</span></b></p>
1123 </td>
1124 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1125 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1126 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1127 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1128 padding:0in 5.4pt 0in 5.4pt'>
1129 <p class=MsoNormal>TI</p>
1130 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1131 </td>
1132 </tr>
1133 <tr style='mso-yfti-irow:5;page-break-inside:avoid'>
1134 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1135 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1136 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1137 0in 5.4pt 0in 5.4pt'>
1138 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1139 </td>
1140 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1141 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1142 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1143 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1144 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1145 </td>
1146 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1147 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1148 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1149 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1150 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1151 </td>
1152 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1153 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1154 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1155 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1156 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1157 </td>
1158 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1159 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1160 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1161 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1162 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1163 </td>
1164 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1165 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1166 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1167 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1168 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1169 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1170 </td>
1171 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1172 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1173 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1174 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1175 padding:0in 5.4pt 0in 5.4pt'>
1176 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1177 </td>
1178 </tr>
1179 <tr style='mso-yfti-irow:6;page-break-inside:avoid'>
1180 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1181 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1182 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1183 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1184 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1185 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1186 style='font-size:9.0pt'>Obtained from</span></b></p>
1187 </td>
1188 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1189 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1190 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1191 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1192 padding:0in 5.4pt 0in 5.4pt'>
1193 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1194 </td>
1195 </tr>
1196 <tr style='mso-yfti-irow:7;page-break-inside:avoid'>
1197 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1198 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1199 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1200 0in 5.4pt 0in 5.4pt'>
1201 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1202 </td>
1203 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1204 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1205 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1206 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1207 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1208 </td>
1209 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1210 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1211 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1212 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1213 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1214 </td>
1215 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1216 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1217 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1218 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1219 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1220 </td>
1221 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1222 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1223 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1224 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1225 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1226 </td>
1227 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1228 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1229 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1230 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1231 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1232 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1233 </td>
1234 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1235 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1236 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1237 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1238 padding:0in 5.4pt 0in 5.4pt'>
1239 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1240 </td>
1241 </tr>
1242 <tr style='mso-yfti-irow:8;page-break-inside:avoid'>
1243 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1244 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1245 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1246 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1247 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1248 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1249 style='font-size:9.0pt'>Obtained from</span></b></p>
1250 </td>
1251 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1252 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1253 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1254 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1255 padding:0in 5.4pt 0in 5.4pt'>
1256 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1257 </td>
1258 </tr>
1259 <tr style='mso-yfti-irow:9;page-break-inside:avoid'>
1260 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1261 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1262 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1263 0in 5.4pt 0in 5.4pt'>
1264 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1265 </td>
1266 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1267 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1268 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1269 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1270 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1271 </td>
1272 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1273 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1274 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1275 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1276 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1277 </td>
1278 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1279 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1280 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1281 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1282 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1283 </td>
1284 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1285 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1286 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1287 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1288 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1289 </td>
1290 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1291 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1292 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1293 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1294 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1295 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1296 </td>
1297 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1298 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1299 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1300 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1301 padding:0in 5.4pt 0in 5.4pt'>
1302 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1303 </td>
1304 </tr>
1305 <tr style='mso-yfti-irow:10;page-break-inside:avoid'>
1306 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1307 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1308 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1309 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1310 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1311 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1312 style='font-size:9.0pt'>Obtained from</span></b></p>
1313 </td>
1314 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1315 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1316 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1317 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1318 padding:0in 5.4pt 0in 5.4pt'>
1319 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1320 </td>
1321 </tr>
1322 <tr style='mso-yfti-irow:11;page-break-inside:avoid'>
1323 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1324 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1325 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1326 0in 5.4pt 0in 5.4pt'>
1327 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1328 </td>
1329 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1330 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1331 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1332 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1333 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1334 </td>
1335 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1336 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1337 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1338 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1339 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1340 </td>
1341 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1342 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1343 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1344 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1345 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1346 </td>
1347 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1348 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1349 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1350 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1351 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1352 </td>
1353 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1354 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1355 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1356 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1357 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1358 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1359 </td>
1360 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1361 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1362 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1363 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1364 padding:0in 5.4pt 0in 5.4pt'>
1365 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1366 </td>
1367 </tr>
1368 <tr style='mso-yfti-irow:12;page-break-inside:avoid'>
1369 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1370 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1371 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1372 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1373 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1374 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1375 style='font-size:9.0pt'>Obtained from</span></b></p>
1376 </td>
1377 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1378 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1379 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1380 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1381 padding:0in 5.4pt 0in 5.4pt'>
1382 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1383 </td>
1384 </tr>
1385 <tr style='mso-yfti-irow:13;page-break-inside:avoid'>
1386 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1387 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1388 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1389 0in 5.4pt 0in 5.4pt'>
1390 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1391 </td>
1392 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1393 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1394 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1395 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1396 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1397 </td>
1398 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1399 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1400 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1401 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1402 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1403 </td>
1404 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1405 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1406 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1407 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1408 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1409 </td>
1410 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1411 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1412 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1413 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1414 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1415 </td>
1416 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1417 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1418 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1419 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1420 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1421 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1422 </td>
1423 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1424 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1425 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1426 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1427 padding:0in 5.4pt 0in 5.4pt'>
1428 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1429 </td>
1430 </tr>
1431 <tr style='mso-yfti-irow:14;page-break-inside:avoid'>
1432 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1433 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1434 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1435 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1436 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1437 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1438 style='font-size:9.0pt'>Obtained from</span></b></p>
1439 </td>
1440 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1441 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1442 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1443 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1444 padding:0in 5.4pt 0in 5.4pt'>
1445 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1446 </td>
1447 </tr>
1448 <tr style='mso-yfti-irow:15;page-break-inside:avoid'>
1449 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1450 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1451 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1452 0in 5.4pt 0in 5.4pt'>
1453 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1454 </td>
1455 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1456 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1457 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1458 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1459 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1460 </td>
1461 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1462 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1463 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1464 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1465 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1466 </td>
1467 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1468 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1469 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1470 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1471 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1472 </td>
1473 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1474 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1475 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1476 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1477 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1478 </td>
1479 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1480 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1481 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1482 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1483 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1484 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1485 </td>
1486 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1487 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1488 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1489 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1490 padding:0in 5.4pt 0in 5.4pt'>
1491 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1492 </td>
1493 </tr>
1494 <tr style='mso-yfti-irow:16;page-break-inside:avoid'>
1495 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1496 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1497 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1498 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1499 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1500 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1501 style='font-size:9.0pt'>Obtained from</span></b></p>
1502 </td>
1503 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1504 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1505 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1506 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1507 padding:0in 5.4pt 0in 5.4pt'>
1508 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1509 </td>
1510 </tr>
1511 <tr style='mso-yfti-irow:17;page-break-inside:avoid'>
1512 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1513 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-alt:
1514 solid windowtext .75pt;mso-border-left-alt:solid windowtext .5pt;padding:
1515 0in 5.4pt 0in 5.4pt'>
1516 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1517 </td>
1518 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1519 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1520 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1521 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1522 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1523 </td>
1524 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1525 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1526 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1527 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1528 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1529 </td>
1530 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1531 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1532 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1533 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1534 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1535 </td>
1536 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1537 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1538 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1539 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1540 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1541 </td>
1542 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1543 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1544 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1545 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1546 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1547 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1548 </td>
1549 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1550 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1551 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1552 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1553 padding:0in 5.4pt 0in 5.4pt'>
1554 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1555 </td>
1556 </tr>
1557 <tr style='mso-yfti-irow:18;page-break-inside:avoid'>
1558 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1559 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1560 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1561 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1562 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1563 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1564 style='font-size:9.0pt'>Obtained from</span></b></p>
1565 </td>
1566 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1567 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1568 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1569 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1570 padding:0in 5.4pt 0in 5.4pt'>
1571 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1572 </td>
1573 </tr>
1574 <tr style='mso-yfti-irow:19;page-break-inside:avoid'>
1575 <td width=115 rowspan=2 valign=top style='width:1.2in;border:solid windowtext 1.0pt;
1576 border-top:none;mso-border-top-alt:solid windowtext .75pt;mso-border-top-alt:
1577 .75pt;mso-border-left-alt:.5pt;mso-border-bottom-alt:.5pt;mso-border-right-alt:
1578 .75pt;mso-border-color-alt:windowtext;mso-border-style-alt:solid;padding:
1579 0in 5.4pt 0in 5.4pt'>
1580 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1581 </td>
1582 <td width=76 rowspan=2 valign=top style='width:56.9pt;border-top:none;
1583 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1584 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1585 mso-border-alt:solid windowtext .75pt;mso-border-bottom-alt:solid windowtext .5pt;
1586 padding:0in 5.4pt 0in 5.4pt'>
1587 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1588 </td>
1589 <td width=89 rowspan=2 valign=top style='width:66.4pt;border-top:none;
1590 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1591 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1592 mso-border-alt:solid windowtext .75pt;mso-border-bottom-alt:solid windowtext .5pt;
1593 padding:0in 5.4pt 0in 5.4pt'>
1594 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1595 </td>
1596 <td width=84 rowspan=2 valign=top style='width:63.0pt;border-top:none;
1597 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1598 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1599 mso-border-alt:solid windowtext .75pt;mso-border-bottom-alt:solid windowtext .5pt;
1600 padding:0in 5.4pt 0in 5.4pt'>
1601 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1602 </td>
1603 <td width=108 rowspan=2 valign=top style='width:81.0pt;border-top:none;
1604 border-left:none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1605 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1606 mso-border-alt:solid windowtext .75pt;mso-border-bottom-alt:solid windowtext .5pt;
1607 padding:0in 5.4pt 0in 5.4pt'>
1608 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1609 </td>
1610 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1611 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1612 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1613 mso-border-alt:solid windowtext .75pt;padding:0in 5.4pt 0in 5.4pt'>
1614 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1615 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'>Location<o:p></o:p></b></p>
1616 </td>
1617 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1618 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1619 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1620 mso-border-alt:solid windowtext .75pt;mso-border-right-alt:solid windowtext .5pt;
1621 padding:0in 5.4pt 0in 5.4pt'>
1622 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1623 </td>
1624 </tr>
1625 <tr style='mso-yfti-irow:20;mso-yfti-lastrow:yes;page-break-inside:avoid'>
1626 <td width=104 valign=top style='width:77.9pt;border-top:none;border-left:
1627 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1628 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1629 mso-border-alt:solid windowtext .75pt;mso-border-bottom-alt:solid windowtext .5pt;
1630 padding:0in 5.4pt 0in 5.4pt'>
1631 <p class=MsoNormal style='margin-top:2.0pt;margin-right:0in;margin-bottom:
1632 2.0pt;margin-left:0in'><b style='mso-bidi-font-weight:normal'><span
1633 style='font-size:9.0pt'>Obtained from</span></b></p>
1634 </td>
1635 <td width=290 valign=top style='width:217.25pt;border-top:none;border-left:
1636 none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
1637 mso-border-top-alt:solid windowtext .75pt;mso-border-left-alt:solid windowtext .75pt;
1638 mso-border-top-alt:.75pt;mso-border-left-alt:.75pt;mso-border-bottom-alt:
1639 .5pt;mso-border-right-alt:.5pt;mso-border-color-alt:windowtext;mso-border-style-alt:
1640 solid;padding:0in 5.4pt 0in 5.4pt'>
1641 <p class=MsoNormal><o:p>&nbsp;</o:p></p>
1642 </td>
1643 </tr>
1644</table>
1645
1646<p class=MsoNormal><o:p>&nbsp;</o:p></p>
1647
1648<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
1649normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
1650
1651<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
1652normal'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></b></p>
1653
1654<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
1655normal'><span style='font-size:12.0pt'>Credits <o:p></o:p></span></b></p>
1656
1657<p class=MsoNormal style='mso-outline-level:1'><span style='font-size:12.0pt'><o:p>&nbsp;</o:p></span></p>
1658
1659<p class=MsoNormal style='mso-outline-level:1'><o:p>&nbsp;</o:p></p>
1660
1661<p class=MsoNormal style='mso-outline-level:1'><b style='mso-bidi-font-weight:
1662normal'><span style='font-size:12.0pt'>Licenses <o:p></o:p></span></b></p>
1663
1664<p class=MsoNormal><o:p>&nbsp;</o:p></p>
1665
1666<p class=MsoNormal><o:p>&nbsp;</o:p></p>
1667
1668<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16690pt'>/*<o:p></o:p></span></p>
1670
1671<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16720pt'><span style='mso-spacerun:yes'> </span>* <span class=SpellE>ctoolsprof_srv_main.c</span><o:p></o:p></span></p>
1673
1674<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16750pt'><span style='mso-spacerun:yes'> </span>*<o:p></o:p></span></p>
1676
1677<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16780pt'><span style='mso-spacerun:yes'> </span>* <span class=SpellE>Ctools</span>
1679Profiler Server Implementation<o:p></o:p></span></p>
1680
1681<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16820pt'><span style='mso-spacerun:yes'> </span>*<o:p></o:p></span></p>
1683
1684<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16850pt'><span style='mso-spacerun:yes'> </span>* Copyright (C) 2013 Texas
1686Instruments Incorporated - http://www.ti.com/ <o:p></o:p></span></p>
1687
1688<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16890pt'><span style='mso-spacerun:yes'> </span>* <o:p></o:p></span></p>
1690
1691<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16920pt'><span style='mso-spacerun:yes'> </span>* <o:p></o:p></span></p>
1693
1694<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
16950pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1696style='mso-spacerun:yes'>  </span>Redistribution</span> and use in source and
1697binary forms, with or without <o:p></o:p></span></p>
1698
1699<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17000pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1701style='mso-spacerun:yes'>  </span>modification</span>, are permitted provided
1702that the following conditions <o:p></o:p></span></p>
1703
1704<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17050pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1706style='mso-spacerun:yes'>  </span>are</span> met:<o:p></o:p></span></p>
1707
1708<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17090pt'><span style='mso-spacerun:yes'> </span>*<o:p></o:p></span></p>
1710
1711<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17120pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1713</span>Redistributions of source code must retain the above copyright <o:p></o:p></span></p>
1714
1715<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17160pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1717</span><span class=GramE>notice</span>, this list of conditions and the
1718following disclaimer.<o:p></o:p></span></p>
1719
1720<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17210pt'><span style='mso-spacerun:yes'> </span>*<o:p></o:p></span></p>
1722
1723<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17240pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1725</span>Redistributions in binary form must reproduce the above copyright<o:p></o:p></span></p>
1726
1727<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17280pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1729</span><span class=GramE>notice</span>, this list of conditions and the
1730following disclaimer in the <o:p></o:p></span></p>
1731
1732<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17330pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1734</span><span class=GramE>documentation</span> and/or other materials provided
1735with the<span style='mso-spacerun:yes'>   </span><o:p></o:p></span></p>
1736
1737<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17380pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1739</span><span class=GramE>distribution</span>.<o:p></o:p></span></p>
1740
1741<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17420pt'><span style='mso-spacerun:yes'> </span>*<o:p></o:p></span></p>
1743
1744<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17450pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1746</span>Neither the name of Texas Instruments Incorporated nor the names of<o:p></o:p></span></p>
1747
1748<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17490pt'><span style='mso-spacerun:yes'> </span>*<span style='mso-spacerun:yes'>   
1750</span><span class=GramE>its</span> contributors may be used to endorse or
1751promote products derived<o:p></o:p></span></p>
1752
1753<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17540pt'><span style='mso-spacerun:yes'> </span>* <span
1755style='mso-spacerun:yes'>   </span><span class=GramE>from</span> this software
1756without specific prior written permission.<o:p></o:p></span></p>
1757
1758<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17590pt'><span style='mso-spacerun:yes'> </span>*<o:p></o:p></span></p>
1760
1761<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17620pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1763style='mso-spacerun:yes'>  </span>THIS</span> SOFTWARE IS PROVIDED BY THE
1764COPYRIGHT HOLDERS AND CONTRIBUTORS <o:p></o:p></span></p>
1765
1766<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17670pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1768style='mso-spacerun:yes'>  </span>&quot;</span>AS IS&quot; AND ANY EXPRESS OR
1769IMPLIED WARRANTIES, INCLUDING, BUT NOT <o:p></o:p></span></p>
1770
1771<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17720pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1773style='mso-spacerun:yes'>  </span>LIMITED</span> TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
1774AND FITNESS FOR<o:p></o:p></span></p>
1775
1776<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17770pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1778style='mso-spacerun:yes'>  </span>A</span> PARTICULAR PURPOSE ARE DISCLAIMED.
1779IN NO EVENT SHALL THE COPYRIGHT <o:p></o:p></span></p>
1780
1781<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17820pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1783style='mso-spacerun:yes'>  </span>OWNER</span> OR CONTRIBUTORS BE LIABLE FOR
1784ANY DIRECT, INDIRECT, INCIDENTAL, <o:p></o:p></span></p>
1785
1786<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17870pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1788style='mso-spacerun:yes'>  </span>SPECIAL</span>, EXEMPLARY, OR CONSEQUENTIAL
1789DAMAGES (INCLUDING, BUT NOT <o:p></o:p></span></p>
1790
1791<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17920pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1793style='mso-spacerun:yes'>  </span>LIMITED</span> TO, PROCUREMENT OF SUBSTITUTE
1794GOODS OR SERVICES; LOSS OF USE,<o:p></o:p></span></p>
1795
1796<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
17970pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1798style='mso-spacerun:yes'>  </span>DATA</span>, OR PROFITS; OR BUSINESS
1799INTERRUPTION) HOWEVER CAUSED AND ON ANY<o:p></o:p></span></p>
1800
1801<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
18020pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1803style='mso-spacerun:yes'>  </span>THEORY</span> OF LIABILITY, WHETHER IN
1804CONTRACT, STRICT LIABILITY, OR TORT <o:p></o:p></span></p>
1805
1806<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
18070pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1808style='mso-spacerun:yes'>  </span>(</span>INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
1809IN ANY WAY OUT OF THE USE <o:p></o:p></span></p>
1810
1811<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
18120pt'><span style='mso-spacerun:yes'> </span><span class=GramE>*<span
1813style='mso-spacerun:yes'>  </span>OF</span> THIS SOFTWARE, EVEN IF ADVISED OF
1814THE POSSIBILITY OF SUCH DAMAGE.<o:p></o:p></span></p>
1815
1816<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
18170pt'><span style='mso-spacerun:yes'> </span>*<o:p></o:p></span></p>
1818
1819<p class=MsoNormal><span style='font-family:Consolas;color:#3F7F5F;mso-font-kerning:
18200pt'>*/<o:p></o:p></span></p>
1821
1822</div>
1823
1824</body>
1825
1826</html>
diff --git a/example_app/ctprof_ex.c b/example_app/ctprof_ex.c
new file mode 100644
index 0000000..4e44a25
--- /dev/null
+++ b/example_app/ctprof_ex.c
@@ -0,0 +1,207 @@
1/*
2 * ctprof_ex.c
3 *
4 * Ctools Profiler Example Implementation
5 *
6 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the
19 * distribution.
20 *
21 * Neither the name of Texas Instruments Incorporated nor the names of
22 * its contributors may be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37*/
38
39#include <stdio.h>
40#include <stdlib.h>
41#include <stdbool.h>
42#include <getopt.h>
43#include <stdint.h>
44#include <sys/mman.h>
45#include <fcntl.h>
46#include "ctprof_utility.h"
47
48const int g_major_version = 0;
49const int g_minor_version = 1;
50const int g_copyright_year = 2013;
51
52FILE *g_stdout;
53FILE *g_stderr;
54char * g_whoami;
55
56struct memory_blk_t{
57 char * name;
58 uint32_t phy_addr;
59 void * v_addr;
60 size_t phy_size;
61};
62
63struct memory_blk_t memory_table[] = {
64 {"Corepac L2_0", 0x10800000, 0, 1024*1024}, /* Corepac 0 L2 */
65 {"Corepac L2_1", 0x11800000, 0, 1024*1024}, /* Corepac 1 L2 */
66 {"Corepac L2_2", 0x12800000, 0, 1024*1024}, /* Corepac 2 L2 */
67 {"Corepac L2_3", 0x13800000, 0, 1024*1024} /* Corepac 3 L2 */
68};
69
70const int zero_test_words = 65536;
71const int memory_table_elements = sizeof(memory_table)/sizeof(struct memory_blk_t);
72
73static struct option long_options[] = {
74 {"interations", required_argument, 0, 'i'},
75 {"quiet", no_argument, 0,'q'},
76 {"help", no_argument, 0, 'h'},
77 {"version", no_argument, 0, 'v'}
78};
79
80static char * short_options = "i:qhv";
81
82static int test_iterations = 1;
83
84
85#define USE_SIGNALS 1
86
87int main(int argc, char *argv[])
88{
89 /* Intialize globals */
90 g_stdout = stdout;
91 g_stderr = stderr;
92 g_whoami = argv[0];
93
94 /* evaluate commamnd line */
95 while (1) {
96
97 int option, option_index = 0;
98
99 option = getopt_long(argc, argv, short_options, long_options, &option_index);
100
101 if (option == -1) break;
102
103 switch (option) {
104 case 'i':
105 test_iterations = atoi(optarg);
106 break;
107 case 'q':
108 g_stdout = fopen("/dev/null", "w");
109 break;
110 case 'h':
111 fprintf(g_stdout, "Usage: ctprof_ex [ihqv]\n");
112 fprintf(g_stdout, " --iterations/-i <n> Run test n times\n");
113 fprintf(g_stdout, " --help/-h Print this\n");
114 fprintf(g_stdout, " --quiet/-q Send stdout to /dev/null\n");
115 fprintf(g_stdout, " --version/-v Print version\n");
116 fprintf(g_stdout, "\n");
117 exit(0);
118 case 'v':
119 fprintf(g_stdout, "ctprof_ex version %d.%d\n",
120 g_major_version, g_minor_version);
121 fprintf(g_stdout, "Copyright (C) %d Texas Instruments, Inc.\n",
122 g_copyright_year);
123 exit(0);
124 break;
125 default:
126 fprintf(g_stderr,"Invalid option - try -h\n");
127 exit(0);
128 } /* End of switch */
129
130 }/* end of while*/
131
132 /************************************************************/
133 /* Wait until ctprof is recording to start */
134 /************************************************************/
135 if (ctprof_pipe_open() == -1) {
136 fprintf(g_stderr, "Can't open pipe to ctprof\n");
137 exit(-1);
138 }
139
140#if USE_SIGNALS
141 ctprof_ready_wait();
142 ctprof_start_recording();
143#endif
144 ctprof_recording_wait();
145
146 /************************************************************/
147 /* Map each memory table element */
148 /************************************************************/
149 int mem_fd = open("/dev/mem", O_RDWR | O_SYNC | O_RSYNC );
150 if (mem_fd == -1) {
151 fprintf(g_stderr, "Can't open /dev/mem\n");
152 exit(-1);
153 }
154
155 for (int i = 0; i < memory_table_elements; i++) {
156 memory_table[i].v_addr = mmap(0, memory_table[i].phy_size,
157 PROT_READ | PROT_WRITE, MAP_SHARED, mem_fd,
158 memory_table[i].phy_addr);
159
160 mlock(memory_table[i].v_addr, memory_table[i].phy_size);
161 }
162
163 /************************************************************/
164 /* Test Loop */
165 /************************************************************/
166 while (test_iterations != 0) {
167
168 fprintf(g_stdout, "\r%s:Test Iterations left %d\n", g_whoami, test_iterations);
169
170 /* This test writes zero to the first 64K words of each memory_table element */
171 for (int i = 0; i < memory_table_elements; i++) {
172
173#if USE_SIGNALS
174 if (i == 2) {
175 ctprof_end_recording();
176 ctprof_stopped_wait();
177 }
178#endif
179 fprintf(g_stdout, "\r%s:Testing %d words of %s\n", g_whoami, zero_test_words, memory_table[i].name);
180
181 uint32_t * addr = (uint32_t *)memory_table[i].v_addr;
182 for (int n = 0; n < zero_test_words; n++) {
183 *addr++ = 0;
184 }
185
186 addr = (uint32_t *)memory_table[i].v_addr;
187 int test_failed_cnt = 0;
188
189 for (int n = 0; n < zero_test_words; n++) {
190 if (*addr++ != 0 ) {
191 test_failed_cnt++;
192 }
193 }
194
195 fprintf(g_stdout, "\r%s:%s had %d failures\n", g_whoami, memory_table[i].name, test_failed_cnt);
196
197 }
198 test_iterations--;
199
200 } /* End of while*/
201
202 fprintf(g_stdout, "\r%s:Exiting\n", g_whoami);
203 ctprof_pipe_close();
204 exit(0);
205}
206
207
diff --git a/example_app/ctprof_utility.c b/example_app/ctprof_utility.c
new file mode 100644
index 0000000..3d1320d
--- /dev/null
+++ b/example_app/ctprof_utility.c
@@ -0,0 +1,184 @@
1/*
2 * ctprof_utility.c
3 *
4 * Ctools Profiler Utility Implementation
5 *
6 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the
19 * distribution.
20 *
21 * Neither the name of Texas Instruments Incorporated nor the names of
22 * its contributors may be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37*/
38
39#include <stdio.h>
40#include <stdlib.h>
41#include <string.h>
42#include <stdbool.h>
43#include <unistd.h>
44#include <fcntl.h>
45#include <signal.h>
46#include "ctprof_utility.h"
47
48static char * fifo_filename = "ctprof_fifo";
49//static FILE * fp;
50static int ctprof_pipe_fd;
51static bool fifo_opened = false;
52static char readbuf[32];
53
54/* State definitions
55 * ready - ctprof_srv is ready for a signal
56 * recording - ctprof_srv is recording
57 * stopped - ctprof_srv has stopped recording
58 */
59static const char msg_recording[] = "ctprof recording\n";
60static const char msg_stopped[] = "ctprof stopped\n";
61static const char msg_ready[] = "ctprof ready\n";
62
63
64
65/* Note: This implementation uses named pipes for very
66 * simple ipc. This could be changed in the future to
67 * use sockets or some other ipc so check the requirements
68 * for the version of ctprof you are using
69 */
70
71static pid_t ctprof_srv_pid;
72
73int ctprof_pipe_open(void)
74{
75 /* If fifo can't be opend then return -1 */
76 if (!fifo_opened) {
77 if (-1 == (ctprof_pipe_fd = open(fifo_filename, O_RDONLY))) {
78 return -1;
79 }
80 fifo_opened = true;
81 }
82
83 read(ctprof_pipe_fd, &ctprof_srv_pid, sizeof(pid_t));
84
85}
86
87void ctprof_pipe_close(void)
88{
89 if (fifo_opened) {
90 close(ctprof_pipe_fd);
91 fifo_opened = false;
92 }
93
94}
95
96static pid_t ctprof_get_pid(void)
97{
98 if (fifo_opened) {
99 return ctprof_srv_pid;
100 } else {
101 return -1;
102 }
103}
104
105ctprof_state_t ctprof_get_state(void)
106{
107 /* If the fifo opened sucessfully, then fgets should block
108 * until data is avaiable.
109 */
110 if (fifo_opened) {
111 read(ctprof_pipe_fd, readbuf, sizeof(readbuf));
112
113 if (0 == strcmp(readbuf, msg_recording)) {
114 return CTPROF_RECORDING;
115 }
116 if (0 == strcmp(readbuf, msg_stopped)) {
117 return CTPROF_STOPPED;
118 }
119 if (0 == strcmp(readbuf, msg_ready)) {
120 return CTPROF_READY;
121 }
122 }
123
124 return -1;
125
126}
127
128void ctprof_ready_wait()
129{
130 ctprof_state_t ctprof_state;
131
132 do {
133
134 ctprof_state = ctprof_get_state();
135
136 if(ctprof_state == CTPROF_READY) {
137 break;
138 }
139
140 } while (1);
141}
142
143void ctprof_recording_wait()
144{
145 ctprof_state_t ctprof_state;
146
147 do {
148
149 ctprof_state = ctprof_get_state();
150
151 if(ctprof_state == CTPROF_RECORDING) {
152 break;
153 }
154
155 } while (1);
156}
157
158void ctprof_stopped_wait()
159{
160 ctprof_state_t ctprof_state;
161
162 do {
163
164 ctprof_state = ctprof_get_state();
165
166 if(ctprof_state == CTPROF_STOPPED) {
167 break;
168 }
169
170 } while (1);
171}
172
173/* Start recording with a signal*/
174void ctprof_start_recording()
175{
176 kill(ctprof_get_pid(), SIGUSR1);
177}
178
179/* End recording for this session*/
180void ctprof_end_recording()
181{
182 kill(ctprof_get_pid(), SIGUSR2);
183}
184
diff --git a/example_app/ctprof_utility.h b/example_app/ctprof_utility.h
new file mode 100644
index 0000000..e062dce
--- /dev/null
+++ b/example_app/ctprof_utility.h
@@ -0,0 +1,56 @@
1/*
2 * ctprof_utility.h
3 *
4 * Ctools Profiler Utility Interface
5 *
6 * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/
7 *
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions
11 * are met:
12 *
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 *
16 * Redistributions in binary form must reproduce the above copyright
17 * notice, this list of conditions and the following disclaimer in the
18 * documentation and/or other materials provided with the
19 * distribution.
20 *
21 * Neither the name of Texas Instruments Incorporated nor the names of
22 * its contributors may be used to endorse or promote products derived
23 * from this software without specific prior written permission.
24 *
25 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 *
37*/
38#ifndef CTPROF_UTILITY_H
39#define CTPROF_UTILITY_H
40
41typedef enum {
42 CTPROF_READY,
43 CTPROF_STOPPED,
44 CTPROF_RECORDING,
45} ctprof_state_t;
46
47int ctprof_pipe_open(void);
48void ctprof_pipe_close(void);
49ctprof_state_t ctprof_get_state(void);
50void ctprof_ready_wait();
51void ctprof_recording_wait();
52void ctprof_stopped_wait();
53void ctprof_start_recording();
54void ctprof_end_recording();
55
56#endif
diff --git a/example_app/makefile b/example_app/makefile
new file mode 100644
index 0000000..6371d48
--- /dev/null
+++ b/example_app/makefile
@@ -0,0 +1,71 @@
1#
2# makefile for ctoolsprof server
3#
4# examples:
5# make debug install
6# make release install
7# make clean debug install
8# make clean release install OR make all
9
10ifeq ($(findstring arm, $(MAKECMDGOALS)), arm)
11 CC= $(CROSS_COMPILE)gcc --static
12else
13 CC = gcc
14endif
15
16ifeq ($(findstring debug, $(MAKECMDGOALS)), debug)
17 CFLAGS= -std=c99 -c -g -Wall $(INC_PATH) -D DEBUG -D _GNU_SOURCE $(TEST)
18 OBJDIR= ./debug
19else
20 CFLAGS= -std=c99 -c -O2 $(INC_PATH) -D SERVER -D _GNU_SOURCE $(TEST)
21 OBJDIR= ./release
22endif
23LFLAGS =
24LIBS=
25LIB_PATH=
26INCLUDE_PATH = -I ../example_app
27
28.PHONY: clean debug release install arm
29
30all: clean release install
31
32#
33# Declare.c and .h dependencies
34#
35ctprof_ex.o: ctprof_ex.c
36ctprof_utility.o : ctprof_utility.h ctprof_utility.c
37
38#
39# Add objects
40#
41
42OBJECTS = $(addprefix $(OBJDIR)/, ctprof_ex.o ctprof_utility.o)
43
44#.c.o:
45# @echo "Compiling" $<
46# $(CC) $(CFLAGS) $<
47
48$(OBJDIR)/%.o: %.c
49 @echo "Compiling" $<
50 @mkdir -p $(OBJDIR)
51 $(CC) $(CFLAGS) $(INCLUDE_PATH) -o $@ $<
52
53ctprof_ex: $(OBJECTS)
54 @echo "Building target" $@
55 $(CC) $(LFLAGS) $(LIBS_PATH) -o $@ $(OBJECTS) $(LIBS)
56
57debug: ctprof_ex
58 @echo "debug build complete"
59
60release: ctprof_ex
61 @echo "release build complete"
62
63arm: ctprof_ex
64 @echo "ARM version built"
65
66install:
67 mv ctprof_ex ~/bin/ctprof_ex
68
69clean:
70 -rm $(OBJECTS)
71
diff --git a/server/ETBAddr.h b/server/ETBAddr.h
new file mode 100644
index 0000000..2c812c6
--- /dev/null
+++ b/server/ETBAddr.h
@@ -0,0 +1,418 @@
1/****************************************************************************
2CToolsLib - ETB Library
3
4Copyright (c) 2009-2012 Texas Instruments Inc. (www.ti.com)
5All rights reserved.
6
7Redistribution and use in source and binary forms, with or without
8modification, are permitted provided that the following conditions
9are met:
101. Redistributions of source code must retain the above copyright
11 notice, this list of conditions and the following disclaimer.
122. Redistributions in binary form must reproduce the above copyright
13 notice, this list of conditions and the following disclaimer in the
14 documentation and/or other materials provided with the distribution.
153. The name of the author may not be used to endorse or promote products
16 derived from this software without specific prior written permission.
17
18THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
19IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
20OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
21IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
22INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
23NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
24DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
25THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
26(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
27THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
28****************************************************************************/
29#ifndef __ETB_ADDR_H
30#define __ETB_ADDR_H
31
32#ifdef __cplusplus
33extern "C" {
34#endif
35
36/*! \file CSETBAddr.h
37 \version 1.2
38
39 This file contains the ETB and TI Data Trace Formatter addresses.
40 The "n" parameter used for the address is a CPU enumeration for homogeneous multi-core devices.
41 For example, TCI6488 has n values as 0,1,3 for the three DSPs.
42 If a device does not have such multiple cores and associated ETBs, n is unused and should be 0.
43 where ETB is being programmed and accessed.
44 */
45
46/**************************************************************************
47 Device specific information
48 A new device can be supported by adding a device preprocessor
49 block specifying base addresses.
50**************************************************************************/
51
52#if defined(TCI6612) || defined(TCI6614) || defined(TCI6616) || defined(TCI6618) \
53|| defined(C6657) || defined(C6670) || defined(C6671) || defined(C6672) || defined(C6674) || defined(C6678) || defined(C66AK2Hxx) || defined(C66AK2Exx) && !defined(C66x)
54
55#define C66x
56
57#endif
58
59#if defined(TCI6486)
60 #define NUM_ETB_INSTANCES 6
61 #define DTF_PRESENT 1
62 #define SYSETB_PRESENT 0
63
64 /* ETB base address for different device types */
65 #define _ETB_BaseAddress(n) ( 0x02C40000 + (n<<12) ) /* Base Address for ETB MMRs associated with GEMx */
66 /* DTF MMR address. */
67 #define DTF_CNTL(n) ( 0x02A80100 + (n << 4)) /* memory mapped address for DTF Control register for GEMx */
68
69#elif defined(TCI6488)
70 #define NUM_ETB_INSTANCES 3
71 #define DTF_PRESENT 1
72 #define SYSETB_PRESENT 0
73
74 /* ETB base address for different device types */
75 #define _ETB_BaseAddress(n) ( 0x02AD0000 + (n<<15) ) /* Base Address for ETB MMRs associated with GEMx */
76 /* DTF MMR address. */
77 #define DTF_CNTL(n) (0x02880400 + (n << 2)) /* memory mapped address for DTF Control register for GEMx */
78
79#elif defined(TCI6484)
80 #define NUM_ETB_INSTANCES 1
81 #define DTF_PRESENT 1
82 #define SYSETB_PRESENT 0
83
84 /* ETB base address for different device types */
85 #define _ETB_BaseAddress(n) (0x02AD0000) /* Base Address for ETB MMRs associated with GEMx */
86 /* DTF MMR address */
87 #define DTF_BASE(n) (0x02AD1000)
88 #define DTF_CNTL(n) (DTF_BASE(n) + 0x000) /* memory mapped address for DTF Control register for GEMx */
89 #define TAGSET(n) (DTF_BASE(n) + 0xFA0) /* memory mapped address for DTF Control register for GEMx */
90 #define TAGCLR(n) (DTF_BASE(n) + 0xFA4) /* memory mapped address for DTF Control register for GEMx */
91 #define DTF_LOCK(n) (DTF_BASE(n) + 0xFB0) /* memory mapped address for DTF Control register for GEMx */
92 #define DTF_LOCK_STATUS(n) (DTF_BASE(n) + 0xFB4) /* memory mapped address for DTF Control register for GEMx */
93 #define ID(n) (DTF_BASE(n) + 0xFC8) /* memory mapped address for DTF Control register for GEMx */
94 /* PSC MMR address */
95 #define PSC_BASE (0x02AC0000)
96 #define PSC_MDCTL(n) (PSC_BASE+ 0xA00 + (4*n)) /* memory mapped address for Module Control Register for clock, reset and EMU behavior control */
97 #define PSC_MDSTAT(n) (PSC_BASE+ 0x800 + (4*n)) /* memory mapped address for Module status register */
98 #define PSC_PTCMD (PSC_BASE+ 0x120) /* memory mapped address for transition command register */
99 #define PSC_PTSTAT (PSC_BASE+ 0x128) /* memory mapped address for transition command status register */
100
101#elif defined(C66x)
102 #define NUM_ETB_INSTANCES 9 /* For 6616, there are 4 DSP ETB and 1 SYS ETB. For 6678/6608, there are 8 DSP ETB and 1 SYS ETB */
103 #define SYSETB_PRESENT 1
104 #define SYS_ETB_ID 8 /* calculated to get system etb base address using _ETB_BaseAddress(n). For keystone2 devices, SYS_ETB_ID (TBR)
105 is not used to get system etb base address using _ETB_BaseAddress(n). */
106#ifndef __linux
107 #define DTF_PRESENT 1
108 #define DMA_SUPPORT
109#endif
110
111#if defined(C66AK2Hxx) || defined(C66AK2Exx)
112 /* Get ETB base address for different cores and system ETB */
113 #define _ETB_BaseAddress(n) ((n==SYS_ETB_ID)?(0x03019000):(0x027D0000 + (n << 16))) /* Base Address for ETB MMRs associated with CorePACx and SYS ETB (TBR) */
114#else
115#ifdef __linux
116 #define ETB_BaseAddress(n) (0x027D0000 + (n << 16))
117 #define _ETB_BaseAddress(n) virtural_ETB_BaseAddress[n]
118 #define SIZEOF_ETB_SPACE 4096
119#else
120 /* Get ETB base address for different cores and system ETB */
121 #define _ETB_BaseAddress(n) (0x027D0000 + (n << 16)) /* Base Address for ETB MMRs associated with CorePACx and SYS ETB*/
122#endif
123#endif
124
125 /* Debug SS MIPI STM TBR DMA slave port address */
126 #define TBR_RBD (0x02850000)
127
128 /* DTF MMR address */
129#ifdef __linux
130 #define DTF_BaseAddress(n) (0x02440000 + (n << 16))
131 #define DTF_BASE(n) virtural_DTF_BaseAddress[n]
132 #define SIZEOF_DTF_SPACE 4096
133#else
134 #define DTF_BASE(n) (0x02440000 + (n << 16))
135#endif
136 #define DTF_CNTL(n) (DTF_BASE(n) + 0x000) /* memory mapped address for DTF Control register for C66x */
137 #define TAGSET(n) (DTF_BASE(n) + 0xFA0) /* memory mapped address for DTF Control register for C66x */
138 #define TAGCLR(n) (DTF_BASE(n) + 0xFA4) /* memory mapped address for DTF Control register for C66x */
139 #define DTF_LOCK(n) (DTF_BASE(n) + 0xFB0) /* memory mapped address for DTF Control register for C66x */
140 #define DTF_LOCK_STATUS(n) (DTF_BASE(n) + 0xFB4) /* memory mapped address for DTF Control register for C66x */
141 #define ID(n) (DTF_BASE(n) + 0xFC8) /* memory mapped address for DTF Control register for C66x */
142
143 /* PSC MMR address */
144#ifdef __linux
145 #define PSC_BaseAddress (0x02350000)
146 #define PSC_BASE virtural_PSC_BaseAddress
147 #define SIZEOF_PSC_SPACE 4096
148#else
149 #define PSC_BASE (0x02350000)
150#endif
151#define PSC_PDSTAT(n) (PSC_BASE + 0x200 + (4*n))
152 #define PSC_PDCTL(n) (PSC_BASE + 0x300 + (4*n)) /* memory mapped address for Power Domain Control Register */
153 #define PSC_MDCTL(n) (PSC_BASE + 0xA00 + (4*n)) /* memory mapped address for Module Control Register for clock, reset and EMU behavior control */
154 #define PSC_MDSTAT(n) (PSC_BASE+ 0x800 + (4*n)) /* memory mapped address for Module status register */
155 #define PSC_PTCMD (PSC_BASE + 0x120) /* memory mapped address for transition command register */
156 #define PSC_PTSTAT (PSC_BASE + 0x128) /* memory mapped address for transition command status register */
157
158#elif defined(TI816x)
159 #define NUM_ETB_INSTANCES 1
160 #define SYSETB_PRESENT 1
161 #define SYS_ETB_ID 1
162
163 /* ETB base address for different device types */
164 // the variable 'n' is used as a dummy and always 'zero' is added to the base address. This is done to remove a compiler warning
165 #define _ETB_BaseAddress(n) ( 0x4B162000 + (0 << n) ) /* Base Address for ETB MMRs associated with TI81x - one ETB*/
166
167 #if defined(ETM)
168 #define DTF_PRESENT 0
169 #elif defined(DSP)
170 #define DTF_PRESENT 1
171 #elif defined(STM)
172 #define DTF_PRESENT 0
173 #endif
174
175 /* DTF MMR address */
176 #define DTF_BASE(n) (0x4B166000 + (n << 16))
177 #define DTF_CNTL(n) (DTF_BASE(n) + 0x000) /* memory mapped address for DTF Control register for C66x */
178 #define TAGSET(n) (DTF_BASE(n) + 0xFA0) /* memory mapped address for DTF Control register for C66x */
179 #define TAGCLR(n) (DTF_BASE(n) + 0xFA4) /* memory mapped address for DTF Control register for C66x */
180 #define DTF_LOCK(n) (DTF_BASE(n) + 0xFB0) /* memory mapped address for DTF Control register for C66x */
181 #define DTF_LOCK_STATUS(n) (DTF_BASE(n) + 0xFB4) /* memory mapped address for DTF Control register for C66x */
182 #define ID(n) (DTF_BASE(n) + 0xFC8) /* memory mapped address for DTF Control register for C66x */
183
184#elif defined(OMAP3x)//OMAP3
185 #define DTF_PRESENT 0
186 #error Need to find out ETB base address from device data sheet for this device.
187
188#elif defined(_OMAP) || defined(_OMAP54xx)
189 #define NUM_ETB_INSTANCES 1
190 #define SYSETB_PRESENT 1
191 #define SYS_ETB_ID 1
192
193#ifdef _OMAP
194 /* ETB base address for OMAP devices */
195 // the variable 'n' is used as a dummy and always 'zero' is added to the base address. This is done to remove a compiler warning
196 #define _ETB_BaseAddress(n) ( 0x54162000 + (0 << n) ) /* Base Address for ETB MMRs - one ETB */
197#endif
198
199#ifdef _OMAP54xx
200 /* TBR base address for OMAP54xx ES2 devices */
201 /* Note that for OMAP5 ES1 the OMAP4430 A9 build will work - _OMAP */
202 #define _ETB_BaseAddress(n) ( 0x54167000 ) /* Base Address for ETB MMRs - one ETB */
203#endif
204
205 #if defined(ETM)
206 #define DTF_PRESENT 0
207 #elif defined(DSP)
208 #define DTF_PRESENT 1
209 #elif defined(STM)
210 #define DTF_PRESENT 0
211 #endif
212
213#ifdef _OMAP54xx
214 #define ENABLE_ETB_FORMATTER
215#endif
216 /* DTF (Trace Funnel) MMR address, Registers defined in CoreSight Components TRM */
217 #define DTF_BASE(n) (0x54164000 + (n << 16))
218 #define DTF_CNTL(n) (DTF_BASE(n) + 0x000) /* Funnel control register */
219 #define TAGSET(n) (DTF_BASE(n) + 0xFA0) /* Claim Tag Set register */
220 #define TAGCLR(n) (DTF_BASE(n) + 0xFA4) /* Claim Tag Clear register */
221 #define DTF_LOCK(n) (DTF_BASE(n) + 0xFB0) /* Lock Access - WO */
222 #define DTF_LOCK_STATUS(n) (DTF_BASE(n) + 0xFB4) /* Lock Status - RO */
223 #define ID(n) (DTF_BASE(n) + 0xFC8) /* Device ID */
224
225#elif defined(TCI6612_CSETB) || defined(TCI6614_CSETB)
226 #define NUM_ETB_INSTANCES 1
227 #define SYSETB_PRESENT 1
228 #define SYS_ETB_ID 1
229 #define DTF_PRESENT 0
230
231 /* ETB base address for TCI6614 device */
232 // the variable 'n' is used as a dummy and always 'zero' is added to the base address. This is done to remove a compiler warning
233 #define _ETB_BaseAddress(n) ( 0x025A6000 + (0 << n) ) /* Base Address for CS-ETB */
234
235#elif defined(C66AK2Hxx_CSSTM_ETB) || defined(C66AK2Exx_CSSTM_ETB)
236
237 #define NUM_ETB_INSTANCES 1
238 #define SYSETB_PRESENT 1
239 #define SYS_ETB_ID 1
240 #define DTF_PRESENT 0
241 #define DMA_SUPPORT
242
243 /* CSSTM ETB base address for Keystone2 devices */
244 #define _ETB_BaseAddress(n) (0x03020000 + (n << 12)) /* Base Address for CSSTM-ETB, 'n' is the A15 MPU SS id. For keystone2, there is only one A15 MPU SS and n=0 */
245
246 /* CSSTM TBR DMA slave port address */
247 #define TBR_RBD (0x027D4000)
248
249#if defined(C66AK2Hxx_CSSTM_ETB)
250#define C66AK2Hxx
251#elif defined(C66AK2Exx_CSSTM_ETB)
252#define C66AK2Exx
253#endif
254
255#elif defined(C66AK2Hxx_CSSTM_ETB) || defined(C66AK2Exx_CSSTM_ETB)
256
257 #define NUM_ETB_INSTANCES 1
258 #define SYSETB_PRESENT 1
259 #define SYS_ETB_ID 1
260 #define DTF_PRESENT 0
261
262 /* CSSTM ETB base address for Keystone2 devices */
263 #define _ETB_BaseAddress(n) (0x03020000 + (n << 12)) /* Base Address for CSSTM-ETB, 'n' is the A15 MPU SS id. For keystone2, there is only one A15 MPU SS and n=0 */
264
265 /* CSSTM TBR DMA slave port address */
266 #define TBR_RBD (0x027D4000)
267
268#if defined(C66AK2Hxx_CSSTM_ETB)
269#define C66AK2Hxx
270#elif defined(C66AK2Exx_CSSTM_ETB)
271#define C66AK2Exx
272#endif
273
274#else
275 #error No device type preprocessor defined for the ETBLib
276#endif
277
278
279
280
281/**************************************************************************
282 No changes need to be made below this point to support a new device
283**************************************************************************/
284
285/* Registers common for both TI-ETB and TBR implementations*/
286
287/* ETB RAM Depth Register RDP */
288/* TBR RAM Size Register */
289#define ETB_RDP(n) (_ETB_BaseAddress(n) + 0x004)
290/* ETB Status Register STS */
291/* TBR Status Register */
292#define ETB_STS(n) (_ETB_BaseAddress(n) + 0x00C)
293/* ETB/TBR RAM Read Data Register RRD */
294#define ETB_RRD(n) (_ETB_BaseAddress(n) + 0x010)
295/* ETB/TBR RAM Read Pointer Register RRP */
296#define ETB_RRP(n) (_ETB_BaseAddress(n) + 0x014)
297/* ETB/TBR RAM Write Pointer Register RWP */
298#define ETB_RWP(n) (_ETB_BaseAddress(n) + 0x018)
299/* ETB/TBR Trigger counter register */
300#define ETB_TRIG(n) (_ETB_BaseAddress(n) + 0x01C)
301/* ETB/TBR Control Register CTL */
302#define ETB_CTL(n) (_ETB_BaseAddress(n) + 0x020)
303/* ETB/TBR RAM Write Data Register RWD */
304#define ETB_RWD(n) (_ETB_BaseAddressn(n)+ 0x024)
305/* ETB Formatter and Flush Status Register FFSR */
306/* TBR Operation Status Register OPSTAT */
307#define ETB_FFSR(n) (_ETB_BaseAddress(n) + 0x300)
308/* ETB Formatter and Flush Control Register FFCR */
309/* TBR Operations Control Register OPCTRL*/
310#define ETB_FFCR(n) (_ETB_BaseAddress(n) + 0x304)
311/* ETB/TBR Lock Access Register */
312#define ETB_LOCK(n) (_ETB_BaseAddress(n) + 0xFB0)
313/* ETB/TBR Lock Status Register */
314#define ETB_LOCK_STATUS(n) (_ETB_BaseAddress(n) + 0xFB4)
315/* ETB/TBR device ID Register */
316#define ETB_DEVID(n) (_ETB_BaseAddress(n) + 0xFC8)
317
318/* Registers specific to TI-ETB implementation*/
319#define ETB_WIDTH(n) (_ETB_BaseAddress(n) + 0x008) /* ETB RAM Width Register STS */
320#define ETB_RBD(n) (_ETB_BaseAddress(n) + 0xA00) /* ETB RAM burst read Register */
321#define ETB_TI_CTL(n) (_ETB_BaseAddress(n) + 0xE20) /* ETB TI Control Register */
322#define ETB_IRST(n) (_ETB_BaseAddress(n) + 0xE00) /* ETB TI Interrupt Raw Status Register */
323#define ETB_ICST(n) (_ETB_BaseAddress(n) + 0xE04) /* ETB TI Interrupt Raw Status Register */
324#define ETB_IER(n) (_ETB_BaseAddress(n) + 0xE0C) /* ETB TI Interrupt Enable Register */
325#define ETB_IECST(n) (_ETB_BaseAddress(n) + 0xE10) /* Clear interrupt enable bits */
326
327/* Registers specific to TBR implementation */
328#define TBR_FIFOSZ(n) (_ETB_BaseAddress(n) + 0x008) /*TBR Output FIFO Size Register */
329#define TBR_OUTLVL(n) (_ETB_BaseAddress(n) + 0x100) /*Output FIFO Trigger Level Register */
330#define TBR_SICTRL(n) (_ETB_BaseAddress(n) + 0x104) /*TBR System Interface Control */
331#define TBR_IDPERIOD(n) (_ETB_BaseAddress(n) + 0x108) /*ID Repeat Period Register */
332#define TBR_SEQCNTL(n) (_ETB_BaseAddress(n) + 0x10C) /*Message Sequence Insertion Control */
333#define TBR_EOI(n) (_ETB_BaseAddress(n) + 0x120) /*TBR EOI register */
334#define TBR_IRQSTATUS_RAW(n) (_ETB_BaseAddress(n) + 0x124) /*TBR IRQ Status (Raw) register */
335#define TBR_IRQSTATUS(n) (_ETB_BaseAddress(n) + 0x128) /*TBR IRQ Status register */
336#define TBR_IRQENABLE_SET(n) (_ETB_BaseAddress(n) + 0x12C) /*TBR IRQ Enable set register */
337#define TBR_IRQENABLE_CLR(n) (_ETB_BaseAddress(n) + 0x130) /*TBR IRQ Enable clear register */
338#define TBR_CLAIMSET(n) (_ETB_BaseAddress(n) + 0xFA0) /*Claim Tag Set Register */
339#define TBR_CLAIMCLR(n) (_ETB_BaseAddress(n) + 0xFA4) /*Claim Tag Clear Register */
340#define TBR_AUTHSTAT(n) (_ETB_BaseAddress(n) + 0xFB8) /*Authorization Status Register */
341
342
343/* ETB enable bit */
344#define ETB_ENABLE 0x00000001
345/* ETB Status Register Bit definitions */
346#define ETB_STS_ACQCOMP 0x00000004 /* bit 2: 1=acquisition complete */
347#define ETB_STS_FULL 0x00000001 /* bit 0: 1=RAM full */
348/* ETB Formatter and Flush Status Register bits */
349#define ETB_FLUSH_INPROGRESS 0x00000001 /* bit 0: 1 = flush in progress */
350/* ETB unlock value */
351#define ETB_UNLOCK_VAL 0xC5ACCE55 /* Value to unlock ETB for register accesses */
352
353/* DTF values */
354#define LOCK_STATUS_IMP_BIT (1<<0)
355#define LOCK_STATUS_STAT_BIT (1<<1)
356#define DTF_ID_MAJOR_MASK (0xF<<4)
357#define DTF_ID_MAJOR_VER1 (0x1<<4)
358#define DTF_ID_MAJOR_VER2 (0x2<<4)
359#define TI_ETB_CIRCULARMODE_BIT (0x1<<1)
360#define TI_ETB_TI_MODE (0x1<<0)
361
362#define TBR_BRIDGE_MODE (0x1<<1)
363#define TBR_BUFFER_MODE (0xFFFFFFFD)
364
365#define DTF_VER2_FLUSH_BIT (1<<7)
366
367#define TI_ETB_IRST_UNDERFLOW (1 << 3)
368#define TI_ETB_IRST_OVERFLOW (1 << 2)
369#define TI_ETB_IRST_FULL (1 << 1)
370#define TI_ETB_IRST_HALF_FULL (1 << 0)
371
372#define TBR_IRST_AQCMP (1 << 1)
373#define TBR_IRST_DAV (1 << 0)
374#define TBR_STP_FULL (1 << 15)
375
376#define TBR_TWP_DISABLE (0xFFFFFFFE)
377#define TBR_TWP_ENABLE (0x1)
378
379#define TBR_TWP_IDPERIOD (0x8)
380
381#define TBR_TWP_SEQATBID (0x6F << 16)
382#define TBR_TWP_SEQPERIOD (0x10)
383
384/* TBR Operations Control Register (OPCTRL)bits */
385#define TBR_OUTFLUSH_INPROGRESS (1<<16) /* bit 16: 1 = output flush in progress */
386#define TBR_OUTFLUSH_START (1<<16) /* set bit 16 = 1 : output flush in started */
387
388/* TBR Status Register(STAT) bits */
389#define TBR_DRAIN_INPROGRESS (1<<4) /* bit 4: 1 = DMA drain in progress */
390
391/* TBR System interface control (SICTRL) register */
392#define TBR_READ_REQ_PENDING (1<<1)
393
394#if defined(C66AK2Hxx_CSSTM_ETB) || defined(C66AK2Exx_CSSTM_ETB)
395
396#define TBR_NUMBLOCK (0xF)
397#define TBR_BLOCKSZ (0x1F)
398
399#else
400
401#define TBR_NUMBLOCK (0xF)
402#define TBR_BLOCKSZ (0x3F)
403
404#endif
405
406/* TI-ETB and TBR device identifiers */
407#define ETB_DEVICE_ID (0x20)
408#define TBR_DEVICE_ID (0x11)
409
410
411/* ETB Maximum Burst Size value */
412#define ETB_BURST_SIZE 0x400
413
414#ifdef __cplusplus
415}
416#endif
417
418#endif //__ETB_ADDR_H
diff --git a/server/ETBInterface.h b/server/ETBInterface.h
new file mode 100644
index 0000000..7e5ce61
--- /dev/null
+++ b/server/ETBInterface.h
@@ -0,0 +1,506 @@
1#ifndef __ETB_INTERFACE_H
2#define __ETB_INTERFACE_H
3
4#include <stdint.h> /*ANSI C99 specific type definitions */
5/*
6 * Embedded Trace Buffer (ETB) API
7 *
8 * Copyright (C) 2009-2012 Texas Instruments Incorporated - http://www.ti.com/
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions
12 * are met:
13 * Redistributions of source code must retain the above copyright
14 * notice, this list of conditions and the following disclaimer.
15 * Redistributions in binary form must reproduce the above copyright
16 * notice, this list of conditions and the following disclaimer in the
17 * documentation and/or other materials provided with the
18 * distribution.
19 * Neither the name of Texas Instruments Incorporated nor the names of
20 * its contributors may be used to endorse or promote products derived
21 * from this software without specific prior written permission.
22 *
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27 * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 *
35*/
36
37#ifdef __cplusplus
38extern "C" {
39#endif
40
41/*! \file ETBInterface.h
42 \version 1.7
43 Application Access to Embedded Trace Buffer.
44
45 This module allows users to program ETB debug hardware.
46*/
47/* The mainpage for doxygen has been added to the end of this file */
48
49/*! \par ETBLIB_MAJOR_VERSION
50 ETBLib major revision. This number will be changed for API modifications.
51*/
52#define ETBLIB_MAJOR_VERSION (0x1)
53
54/*! \par ETBLIB_MINOR_VERSION
55 ETBLib minor revision. This number will be changed for bug fixes.
56*/
57#define ETBLIB_MINOR_VERSION (0xD)
58
59/*! \par SYS_ETB
60 If the ETB is for System Trace (STM), use SYS_ETB as a coreID.
61*/
62#define SYS_ETB 0xFF
63
64#if defined(TCI6612) || defined(TCI6614) || defined(TCI6616) || defined(TCI6618) && !defined(C6670)
65#define C6670
66#endif
67
68#if defined(C6671) || defined(C6672) || defined(C6674) && !defined(C6678)
69#define C6678
70#endif
71
72
73/*! \par eETB_Error
74 Common function return error enumeration.
75*/
76typedef enum _eETB_Error
77{
78
79 eETB_Success = 0, /*!< Function completed successfully */
80 eETB_Error_Bad_Param = -1, /*!< Error, method parameter error */
81 eETB_Error_Program = -2, /*!< Error, Error programming hardware */
82 eETB_Error_Cannot_Own = -3, /*!< Error, Error programming hardware, ownership cannot be taken */
83 eETB_Error_Cannot_Read = -4, /*!< Error, Cannot read ETB as ETB is not in a readable state */
84 eETB_Error_Cannot_Write = -5, /*!< Error, Cannot write ETB as ETB is not in a writabe state */
85 eETB_Error_Psc_Enabling = -6, /*!< Error, Error programming hardware, Cannot enable PSC modules for ETB */
86 eETB_Overflow = -7, /*!< Error, Read Overflow - TI Mode only */
87 eETB_Underflow = -8 /*!< Error. Read Underflow - TI Mode only */
88} eETB_Error ;
89
90
91/*! \par ETB_errorCallback
92 The callback function is called with the function's exit status. Note that this function is not exported
93 by the interface, but is used as a parameter for calls.
94
95 \param[in] eETB_Error error returned by calling routine.
96 \return void
97
98 \par Details:
99 \details
100 This is a user provided callback normally used to centralize error handling and error is desired to be handled in a
101 callback routine provided by the caller instead a return error code.
102*/
103typedef void(*ETB_errorCallback)(eETB_Error);
104
105
106/*! \par eETB_Mode
107 Type of ETB mode. This is used to define ETB mode during an ETB_open call.
108 This mode should be very carefully selected as per the actual ETB on chip.
109*/
110typedef enum _eETB_Mode
111{
112 eETB_Circular = 0, /*!< Circular mode for ETB11, CSETB, TI ETB. Only circular buffer mode and can't be read while capturing*/
113 eETB_TI_Mode = 1, /*!< For TI-ETB implemetation, this is TI ETB mode (simultaneneous read/write) with a circular buffer mode
114 For Keystone2 SYS ETB and CSSTM ETB, provides circular buffer mode with no support for simultaneneous read/write of ETB buffer*/
115 eETB_Stop_Buffer = 2, /*!< Stop on buffer full mode*/
116 eETB_TI_Mode_AND_Stop_Buffer = 3 /*!< For TI-ETB implemetation, this is TI ETB mode (simultaneneous read/write) with stop on buffer full mode
117 For Keystone2 SYS ETB and CSSTM ETB, provides stop on buffer full mode with no support for simultaneneous read/write of ETB buffer */
118} eETB_Mode ;
119
120/*! \par eDMA_Mode
121 Type of DMA mode. This is used to define the DMA mode during a DMA configuraion.
122*/
123typedef enum _eDMA_Mode
124{
125 eDMA_Circular = 0, /*!< Circular mode */
126 eDMA_Stop_Buffer = 1 /*!< Stop on buffer full mode */
127} eDMA_Mode ;
128
129/*! \par eCIC_Select
130 The Chip-level Interrupt Controller number values.
131*/
132typedef enum _eCIC_Select
133{
134 eCIC_0,
135 eCIC_1,
136 eCIC_2,
137 eCIC_3
138} eCIC_Select;
139
140/*! \par DMAConfig
141 \brief DMA configuration structure
142*/
143typedef struct _DMAConfig
144{
145#if defined(C6670) || defined(C6678)
146
147 uint32_t cc; /*!< EDMA3 channel controller number. Only applicable for C6670 and C6678 devices. */
148 uint16_t clrChannel; /*!< 1st DMA channel number for DMA draining (needs to
149 be able to access CPINTC). Application must have
150 configured the channel to PaRAM mapping for this
151 channel before using this API. Only applicable for C6670 and C6678 devices.
152 */
153 uint16_t etbChannel; /*!< 2nd DMA channel number for DMA draining (needs to
154 be able to access the ETB). Application must have
155 configured the channel to PaRAM mapping for this
156 channel before using this API. Only applicable for C6670 and C6678 devices.
157 */
158 eCIC_Select cic; /*!< External chip level interrupt controller INTCx,
159 also called Chip Interrupt Controller CICx.
160 Selection from the eCIC_Select enumeration.
161 Only applicable for C6670 and C6678 devices.
162 */
163
164#endif
165
166 uint16_t linkparam[3]; /*!< 3 additional parameter RAM entry numbers (used for
167 linking by the library). Thses must be different
168 PaRAM entries than thos mapped to channel 1 & 2.
169 */
170 uint32_t dbufAddress; /*!< DMA Drain buffer address */
171 uint32_t dbufWords; /*!< DMA Drain buffer size in 32-bit words */
172 eDMA_Mode mode; /*!< DMA Drain buffer mode (only eDMA_Circular and
173 eDMA_Stop_Buffer are valid values)
174 */
175} DMAConfig;
176
177/*! \par DMAStatus
178 \brief DMA status structure
179 \details
180 This structure is populated in the ETB_flush_dma function to provide the
181 address for the beginning of the circular buffer and the number of words
182 that have been transferred into it. The buffer address and size that are
183 provided in the DMA configuration structure is duplicated here to provide
184 all of the information required to manage reading the circular buffer.
185*/
186typedef struct _DMAStatus
187{
188 uint32_t startAddr; /*!< Current starting lcoation address in DMA drain
189 buffer.
190 */
191 uint32_t availableWords; /*!< Total number of 32-bit words that have been written
192 into the DMA drain buffer.
193 */
194 uint32_t isWrapped; /*!< DMA Drain buffer is full and has started writing
195 over previously written words.
196 */
197 uint32_t dbufAddress; /*!< DMA Drain buffer address */
198 uint32_t dbufWords; /*!< DMA Drain buffer size in 32-bit words */
199 uint32_t flushRequired; /*!< Only allow flushing ETB once related to DMA */
200} DMAStatus;
201
202/*! \par ETBHandle
203 ETB Handle object. This is an incomplete structure, thus making the actual implementation
204 private to the ETBLib.
205*/
206
207typedef struct _ETBHandle_t ETBHandle;
208
209/*! \par ETBHandle_Pntr
210 Pointer to a ETB Handle object
211*/
212
213typedef ETBHandle * ETBHandle_Pntr;
214
215/*! \par ETBStatus
216 \brief ETB status structure definition.
217*/
218typedef struct _ETBStatus
219{
220 uint8_t canRead; /*!< ETB can be read*/
221 uint8_t isWrapped; /*!< ETB is wrapped */
222 uint32_t availableWords; /*!< ETB has the available words to be read */
223 uint32_t ETB_TraceCaptureEn; /*!< ETB trace capture is enabled or not */
224 uint32_t overflow; /*!< ETB overflow occurred (only used if trying to read
225 while writting the ETB in non-DMA mode) */
226} ETBStatus;
227
228/*! \par ETBCapability
229 \brief ETB status structure definition.
230*/
231typedef struct _ETBProperties
232{
233 uint8_t is_dma_supported; /*!< ETB-EDMA extension supported or not*/
234
235}ETBProperties;
236
237/*! \par ETB_open
238 \brief Open and initialize ETB.
239
240 \param[in] pErrCallBack is called if not NULL and this function returns any eETB_Error value other than eETB_Success.
241 \param[in] mode is the mode in which ETB should be used. Most commonly it is eETB_Circular.
242 \param[in] coreID core ID (0,1,2....) for a device with homogeneous DSPs or CPUs. For example, TCI6488 would have this parameter as 0,1, or 2. For device with no such multiple cores and associated ETBs, its should be defeulted to 0.
243 If the ETB is for System Trace (STM), use SYS_ETB as a coreID.
244 \param[out] ppHandle is pointer to a ETBhandle pointer, the pointer is allocated by the ETBLib so caller should not allocate the pointer. This should be passed back to "ETB_close()" call, once done.
245 \param[out] pETBSizeInWords contains size of ETB buffer in 32 bit words, if successfully opened.
246 \return eETB_Error.
247
248 \par Details:
249 \details
250 This function must be called as the very first call to initialize ETB module access.
251 The return value is NULL, if failed.
252 An allocated handle pointer is returned, if success.
253*/
254eETB_Error ETB_open(ETB_errorCallback pErrCallBack, eETB_Mode mode, uint8_t coreID, ETBHandle** ppHandle, uint32_t* pETBSizeInWords);
255
256
257/*! \par ETB_enable
258 Enable ETB to start capturing data.
259
260 \param[in] pETBHandle ETB Handle pointer.
261 \param[in] triggerCount is number of words written to ETB RAM following a trigger event. This is only used for ARM. Use 0 for DSP.
262 \return eETB_Error.
263
264 \par Details:
265 \details
266 This function enables ETB. As soon as ETB is enabled, it starts capturing trace data.
267 The ETB should be enabled after trace export, clocks and data trace formatter (if applicable) has been programmed.
268*/
269eETB_Error ETB_enable(ETBHandle* pETBHandle, uint32_t triggerCount);
270
271/*! \par ETB_disable
272 Disable ETB to stop capturing data.
273
274 \param[in] pETBHandle ETB Handle pointer.
275 \return eETB_Error.
276
277 \par Details:
278 \details
279 This function disables ETB. As soon as ETB is disabled, it stops capturing trace data.
280 A CoreSight ETB is ready to be read once it is disabled.
281 A TI ETB in TI_ETB mode does not need to be disabled before reading out the ETB contents.
282*/
283eETB_Error ETB_disable(ETBHandle* pETBHandle);
284
285/*! \par ETB_status
286 Function to check the ETB status to check if it is ready to be read.
287
288 \param[in] pETBHandle ETB Handle pointer.
289 \param[out] status contains ETB status parameters.
290 \return eETB_Error.
291
292 \par Details:
293 \details
294 This function provides information ETB state.
295 Before making a call to ETB_read , it is expected to call this method to get the state of the ETB.
296*/
297eETB_Error ETB_status(ETBHandle* pETBHandle, ETBStatus* status);
298
299/*! \par ETB_read
300 Function to read out ETB RAM contents.
301
302 \param[in] pETBHandle ETB Handle pointer.
303 \param[in] pBuffer an allocated buffer pointer passed in that would contain ETB buffer on return.
304 \param[in] bufferLength is the size of the allocated buffer in 32 bit long words unit.
305 \param[in] startWord is the index (0 based) of the ETB word to start reading. ETB_canread() provides number of available words. Use 0 for reading from a valid start of buffer.
306 \param[in] requestSize is the requested number of words to be read from the ETB.
307 \param[out] pRetSize contains the actual number of read words and retured as part of pBuffer.
308 \return eETB_Error.
309
310 \par Details:
311 \details
312 This function reads ETB contents, if the ETB can be read.
313 Caller of this function is responsible to allocate and deallocate the buffer.
314 If the request size is more than available ETB words and the buffer size is at least the request size, request sise is returned.
315 If the buffer is NULL or allocated size is less than the requested words, an error is returned.
316
317 \note
318 If using the DMA drain buffer, ETB_flush_dma <b>MUST</b> be called before
319 using this read function.
320
321*/
322eETB_Error ETB_read(ETBHandle* pETBHandle, uint32_t *pBuffer, uint32_t bufferLength, uint32_t startWord, uint32_t requestSize, uint32_t* pRetSize);
323
324/*! \par ETB_close
325 Function to close the ETB and relese ETB handle pointer.
326
327 \param[in] pETBHandle ETB Handle pointer.
328 \return eETB_Error
329
330 \par Details:
331 \details
332 This function should be the last call made once your are done with the ETB.
333 After closing th ETB, ETB_open call is requuired before ETB can be used again.
334*/
335eETB_Error ETB_close(ETBHandle* pETBHandle);
336
337/*! \par ETB_flush
338 Flush the ETB.
339
340 \param[in] pHandle ETB Handle pointer.
341 \return eETB_Error.
342
343 \par Details:
344 \details
345 This function flushes the ETB input buffer and ADTF. If you have temporarily stopped trace export
346 with TEND, the flush will provide the end of the current trace packet, avoiding the "insufficient
347 data" error when decoding.
348
349 If DSP Core-ETB is configured in EDMA mode, the ADTF is both flushed and stopped by ETB_flush().
350 If DSP Core-ETB is configured in non-EDMA mode, only the ADTF is flushed by ETB_flush(). In this case
351 the ADTF is stopped in the ETB_disable function.
352 If System ETB is configured either in EDMA or non-EDMA mode, STM data is flushed to the ETB by ETB_flush().
353
354 This function is only valid if the library has been opened in TI mode.
355 Note that if you are not in TI mode the ETB_disable function performs the flush operation.
356
357 Note: When the ETB is configured in EDMA mode, ETB_flush() must be called prior to ETB_flush_dma().
358
359*/
360eETB_Error ETB_flush(ETBHandle* pHandle);
361
362/*! \par ETB_config_dma
363 Configure the DMA used to interface with the ETB.
364
365 \param[in] pHandle
366 \param[in] pConfig
367 \return eETB_Error.
368
369 \par Details:
370 \details
371 This function is passed a configuration structure that is used to setup the
372 EDMA3 to transfer data written into the ETB to a location in memory. The
373 ETB half-full and full interrupts are used as system events to start each
374 transaction. The interrupts are routed from the ETB through the chip-level
375 INTCx (interrupt controller) to an input event in the EDMA3. Two DMA channels
376 are required, one for clearing the INTCx system interrupt status register,
377 and the second for transferring data from the ETB to the drain buffer in
378 memory.
379
380 ETB_open must be called before this configuration function with the option
381 eETB_TI_Mode. Any other option will cause this function to return in error.
382
383 \note The application is responsible for all DMA channel and parameter
384 RAM mapping and configuration.
385
386*/
387
388eETB_Error ETB_config_dma(ETBHandle* pHandle, const DMAConfig *pConfig);
389
390/*! \par ETB_flush_dma
391 Configure a DMA transfer to flush remaining words in ETB to memory buffer.
392
393 \param[in] pHandle
394 \param[in] pStatus
395 \return eETB_Error.
396
397 \par Details:
398 \details
399 This function is used to copy any remaining information in the ETB that
400 has not reached the half-full or full mark in the buffer. Status information
401 is populated in the DMAStatus structure that can be used to manage collecting
402 information from the drain buffer in memory.
403
404 The DMA drain functions will only use a multiple of half of the the ETB
405 size. If the number of words that is passed as part of the DMA configuration
406 is not a multiple of half the ETB size, the DMA status value in the handle
407 will get set to the number of words that are actually being used.
408
409
410 \note
411 The application must have stopped all tracing and ETB_flush function must be
412 called before this function.
413
414*/
415eETB_Error ETB_flush_dma(ETBHandle* pHandle, DMAStatus *pStatus);
416
417/*! \par ETB_setDmaStatus
418 Set the DMAStatus structure used by the DMA library functions.
419
420 \param[in] pHandle
421 \param[in] pStatus
422
423 \par Details:
424 \details
425 When using the DMA drain functionality with multiple DMA buffers, this
426 function is required to set the correct status parameters before making
427 dependent API calls such as ETB_read.
428
429*/
430void ETB_setDmaStatus(ETBHandle* pHandle, DMAStatus *pStatus);
431
432/*! \par ETB_getProperties
433 Set the properties(capabilties supported) by the ETB.
434