Using Code Composer Studio

Using Code Composer Studio
Chapter 2
C6000 Integration Workshop
T TO
Technical Training
Organization
Copyright © 2005 Texas Instruments. All rights reserved.
Outline







T TO
Technical Training
Organization
Code Composer Studio (CCS)
Projects
Build Options
Build Configurations
Configuration Tool
C – Data Types and Header Files
Lab 2
Code Composer Studio
Standard
Runtime
Libraries
Compiler
Asm Opto
SIM
DSK
Asm
Edit
Link
.out
Debug
EVM
DSP/BIOS
Config
Tool
T TO
Technical Training
Organization
DSP/BIOS
Libraries
Third
Party
DSK’s Code Composer Studio Includes:
 Integrated Edit / Debug GUI  Simulator
 Code Generation Tools
 BIOS: Real-time kernel
Real-time analysis
XDS
DSP
Board
CCS is Project centric ...
Outline
 Code Composer Studio (CCS)






T TO
Technical Training
Organization
Projects
Build Options
Build Configurations
Configuration Tool
C – Data Types and Header Files
Lab 2
What is a Project?
Project (.PJT) file contain:
References to files:



Source
Libraries
Linker, etc …
Project settings:



T TO
Technical Training
Organization
Compiler Options
DSP/BIOS
Linking, etc …
Let’s look more closely at Build Options and Configurations …
Compiler Build Options

Nearly one-hundred compiler options available to tune your
code's performance, size, etc.

Following table lists most commonly used options:
Options
Description
-mv6700
Generate ‘C67x code (‘C62x is default)
-mv67p
Generate ‘C672x code
-mv6400
Generate 'C64x code
-mv6400+
Generate 'C64x+ code
-fr <dir>
Directory for object/output files
-fs <dir>
Directory for assembly files
-g
Enables src-level symbolic debugging
Debug
-ss
Interlist C statements into assembly listing
-o3
Invoke optimizer (-o0, -o1, -o2/-o, -o3)
Optimize
(release)
-k
Keep asm files, but don't interlist
 Debug and Optimize options conflict with each other, therefore
they should be not be used together
T TO
These can be set/modified by …
Technical Training
Organization
Build Options GUI
-g -fr“$(Proj_dir)\Debug" -d"_DEBUG" -mv6700



GUI has 8 pages of
options for code
generation tools
Default build options
for a new project are
shown
Basic page defaults
are -g -mv6700
T TO
Technical Training
Organization
To make options easier, TI recommends using …
Build Configurations
-g -fr“$(Proj_dir)\Debug" -d"_DEBUG" -mv6700

-o3 -fr“$(Proj_dir)\Release" -mv6700
For new projects, CCS
automatically creates two
build configurations:
 Debug
(unoptimized)
 Release
(optimized)
Build Configurations
-g -fr“$(Proj_dir)\Debug" -d"_DEBUG" -mv6700

-o3 -fr“$(Proj_dir)\Release" -mv6700
$(Proj_dir)
Indicates the current project
directory. This aids in project
portability. See SPRA913
(Portable CCS Projects) for
more information.
For new projects, CCS
automatically creates two
build configurations:
 Debug
(unoptimized)
 Release
(optimized)
Two Default Build Configurations
-g -fr“$(Proj_dir)\Debug" -d"_DEBUG" -mv6700

For new projects, CCS
automatically creates two
build configurations:
 Debug
(unoptimized)
 Release
(optimized)

Use the drop-down to
quickly select build config.
-o3 -fr“$(Proj_dir)\Release" -mv6700
Two Default Build Configurations
-g -fr“$(Proj_dir)\Debug" -d"_DEBUG" -mv6700

For new projects, CCS
automatically creates two
build configurations:
 Debug
(unoptimized)
 Release
(optimized)

Use the drop-down to
quickly select build config.

Add/Remove build config's
with Project Configurations
dialog (on project menus)

Edit a configuration:
1. Set it active
2. Modify build options
(shown previously)
3. Save project
-o3 -fr“$(Proj_dir)\Release" -mv6700
T TO
Technical Training
Organization
Linker Options
Options
Description
-o<filename>
-m<filename>
-c
-x
Output file name
Map file name
Auto-initialize global/static C variables
Exhaustively read libs (resolve back ref's)
-c -m "$(Proj_dir)\Debug\lab.map" -o"$(Proj_dir)\De
$(Proj_dir)\Debug\lab.out
$(Proj_dir)\Debug\lab.map

By default, linker options
include the –o option

We recommend you add
the –m option

“$(Proj_dir)\Debug\"
indicates one subfolder
level below project (.pjt)
location

Run-time Autoinit (-c) tells
compiler to initialize
global/static variables
before calling main()

Autoinit discussed in Ch 3
Run-time Autoinitialization
T TO
Technical Training
Organization
Outline







T TO
Technical Training
Organization
Code Composer Studio (CCS)
Projects
Build Options
Build Configurations
Configuration Tool
C – Data Types and Header Files
Lab 2
DSP/BIOS Configuration Tool
Simplifies system design by:




T TO
Technical Training
Organization

Automatically includes the appropriate
runtime support libraries
Automatically handles interrupt vectors
and system reset
Handles system memory configuration
(builds CMD file)
Generates 5 files when CDB file is saved:
 C file, Asm file, 2 header files and a
linker command (.cmd) file
More to be discussed later …
Outline







T TO
Technical Training
Organization
Code Composer Studio (CCS)
Projects
Build Options
Build Configurations
Configuration Tool
C – Data Types and Header Files
Lab 2
‘C6000 C Data Types
T TO
Technical Training
Organization
Type
Bits
Representation
char
short
int
long
long long
float
double
long double
pointers
8
16
32
40
64
32
64
64
32
ASCII
Binary, 2's complement
Binary, 2's complement
Binary, 2's complement
Binary, 2's complement
IEEE 32-bit
IEEE 64-bit
IEEE 64-bit
Binary
Including Header Files in C
/*
* ======== Include files ========
*/
#include <csl.h>
#include <csl_edma.h>
#include "sine.h"
#include "edma.h"
1. What is #include used for?
It adds the contents of the header file to your C file at the
point of the #include statement.
2. What do header (.h) files contain?
Let's look at a header file...
Example Header Files
/*
* ======== sine.h ========
* This file contains prototypes for all
* functions and global datatypes
* contained in sine.c
*/
#ifndef SINE_Obj
typedef struct {
float freqTone;
float freqSampRate;
float a;
float b;
float y0;
float y1;
float y2;
…
} SINE_Obj;
#endif
void copyData(short *inbuf, …);
void SINE_init(SINE_Obj *sineObj, …);
…
/*
* ======== edma.h ========
* This file contains references for all
* functions contained in edma.c
*/
void initEdma(void);
void edmaHwi(int tcc);
extern EDMA_Handle hEdma;

Header files can contain any C code to
be used over and over again

Usually a header file is paired with a C
file or library object file. Essentially, the
header file provides a description of the
global items in the “paired” file.

Most commonly, header files contain:
 Function prototypes
 Global data references, such as
new type definitions
Therefore...
Including Header Files in C
/*
* ======== Include files ========
*/
#include <csl.h>
#include <csl_edma.h>
#include "sine.h"
#include "edma.h"
1. What is #include used for?
It adds the contents of the header file to your C file at the
point of the #include statement.
2. What do header (.h) files contain?
They can contain any C statements. Usually, they contain code that would
otherwise need to be entered into every C file. They’re a shortcut.
3. What is the difference between <.h> and “.h”?


Angle brackets <.h> tell the compiler to look in the specified include path.
Quotes “.h” indicate the file is located in the same location as the file
which includes it.
Outline







T TO
Technical Training
Organization
Code Composer Studio (CCS)
Projects
Build Options
Build Configurations
Configuration Tool
C – Data Types and Header Files
Lab 2
Lab Exercises – C67x vs. C64x



T TO
Technical Training
Organization
Which DSK are you using?
We provide instructions and solutions for both
C67x and C64x.
We have tried to call out the few differences in
lab steps as explicitly as possible:
Lab 2 – Creating/Graphing a Sine Wave
CPU
buffer
Introduction to Code Composer Studio (CCS)
T TO
Technical Training
Organization

Create and build a project

Examine variables, memory, code

Run, halt, step, breakpoint your program

Graph results in memory (to see the sine wave)
Creating a Sine Wave
sine.c
A
Generates a value for
each output sample
t
float y[3] = {0, 0. 02, 0};
float A = 1.9993146;
short sineGen() {
y[0] = y[1] * A - y[2];
y[2] = y[1];
y[1] = y[0];
return((short)(28000*y[0]);
}
T TO
Technical Training
Organization
Lab 2 Debrief
1.
What differences are there in Lab2 between
the C6713 and C6416 solutions?
2.
What do we need CCS Setup for?
3.
Did you find the “clearArrays” GEL menu
command useful?
T TO
Technical Training
Organization
Optional Exercises



T TO
Technical Training
Organization
Lab2a - Customize CCS
Lab2b - Using GEL Scripts
Lab2d - Float vs Fixed Point
Summary: CCS Automation




T TO
Technical Training
Organization
GEL Scripting
Command Window
CCS Scripting
TCONF Scripting
GEL Scripting
T TO
Technical Training
Organization
GEL: General Extension Language
 C style syntax
 Large number of debugger
commands as GEL functions
 Write your own functions
 Create GEL menu items
Command Window
Some frequently used commands:





help
dlog
dlog
alias
take
T TO
Technical Training
Organization
<filename>,a
close
...
<filename.txt>






load <filename.out>
reload
reset
restart
ba
<label >
wa <label>






run
run
go
step
cstep
halt
<cond>
<label>
<number>
<number>
CCS Scripting


Debug using VB Script or Perl
Using CCS Scripting, a simple script can:
 Start CCS
 Load a file
 Read/write memory
 Set/clear breakpoints
 Run, and perform other basic debug
functions
TCONF Scripting (CDB vs. TCF)
Tconf Script (.tcf)
/* load platform */
utils.loadPlatform(“ti.platforms.dsk6416”);
config.board("dsk6416").cpu("cpu0").clockOscillator = 600.0;
/* make all prog objects JavaScript global vars */
utils.getProgObjs(prog);
/* Create Memory Object */
var myMem = MEM.create("myMem");
myMem.base
= 0x00000000;
myMem.len
= 0x00100000;
myMem.space = “data";
/* generate cfg files (and CDB file) */
prog.gen();
T TO
Technical Training
Organization
• Textual way to create and configure
CDB files
• Runs on both PC and Unix
• Create #include type files (.tci)
• More flexible than Config Tool
Technical Training
Organization
ti