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