You are on page 1of 16

Universit du Qubec Montral MIC4220

Dpartement dInformatique Traitement numrique du signal

Laboratoire 1 : Utilisation de CCS4 et DSKC6713

OBJECTIFS
Apprendre utiliser Code Composer Studio (CCS4) et la carte DSK de Texas
Instrument; se familiariser avec le dveloppement dun systme DSP et lanalyse dun
programme et des rsultats produits en temps rel.

INTRODUCTION
Code Composer Studio (CCS) fournit plusieurs outils pour faciliter la construction et
la mise au point des programmes de DSP. Il comprend un diteur de code source, un
compilateur de langage C/C++, un assembleur de code relocalisable, un diteur de liens,
et un environnement dexcution qui permet de tlcharger un programme excutable sur
une carte cible, de lexcuter et de le dboguer au besoin. CCS comprend aussi des outils
qui permettent lanalyse en temps rel dun programme en cours dexcution et des
rsultats produits. Finalement, il fournit un environnement de gestion de fichiers qui
facilite la construction et la mise au point des programmes.

EXEMPLE DUTILISATION
Lexemple qui suit montre comment un algorithme multifilaire simple peut tre
compil, assembl et li en utilisant CCS. D'abord, plusieurs valeurs de donnes sont
crites en mmoire. Ensuite un pointeur est assign au dbut des donnes de sorte qu'elles
puissent tre traites comme elles sont prsentes. Finalement des fonctions simples sont
ajoutes en C et en assembleur pour illustrer la faon dont celles-ci sont excutes.

I. Crer un rpertoire de travail

Le rpertoire de travail est lendroit o vos projets seront sauvegards. Lors de la


premire utilisation de CCS4, il devra se crer un rpertoire de travail sur votre espace
personnel sur le disque Z . Le changement du rpertoire de travail peut seffectuer
partir la commande du menu File Switch Workspace puis il faut entrer le nom de
lespace de travail dans la fentre.

1
Lcran Welcome to Code Composer Studio v4 introduit un tutoriel de dpart, des
exemples et des informations sur les composants. Cliquer sur le cube droite pour
commencer lemploi de CCS4.

II. Crer un projet


Le processus de dveloppement de code de CCS commence par la cration d'un projet
qui facilite lintgration des fichiers requis pour produire un fichier excutable. Le
rpertoire projet contient des rfrences aux fichiers source (*.c, *.asm) aux fichiers
den-tte (*.h), au fichier de commande pour lditeur de liens (*.cmd), et aux fichiers de
bibliothque (*.lib). Le projet permet aussi de spcifier les paramtres du compilateur,
de l'assembleur et de l'diteur de liens afin de produire le fichier excutable.

1. Aprs louverture du logiciel, ouvrir la perspective du projet Window


Open Perspective C/C++ de la barre menu de CCS.

2. Pour crer un projet, vous choisissez l'lment de menu File NewCCS


Project de la barre menu. Dans celle-ci, vous introduisez un nom de projet
dans le champ Project name (lab1, par exemple).

3. Poursuivre avec le type du projet en slectionnant : Project Type : C6000


pour le TMS320C6713.
2
4. Poursuivre et slectionner dans Device Variant: Generic C67xx Device pour
le TMS320C6713 et Runtime Support Library : RTS6700.lib.

5. Poursuivre et slectionner dans la fentre Project Templates litem Empty


Projects / Empty Project Device .

3
III. Crer un fichier source
CCS fournit un diteur intgr qui permet la cration des fichiers sources. Une fentre
d'diteur apparat en choisissant l'lment de menu File New File . Le nom du
fichier sera : initmem.asm pour notre exemple puis crivons le code suivant dans cette
fentre d'diteur :

.sect ".mydata"
.short 0
.short 7
.short 10
.short 7
.short 0
.short -7
.short -10
.short -7
.short 0
.short 7

Ce code dclare 10 valeurs numriques en utilisant la directive .short . La directive


.sect spcifie que les 10 valeurs doivent rsider dans une section de la mmoire du
DSP appele .mydata ; les adresses physiques qui correspondent cette section seront
dfinies plus tard dans un fichier d'dition de liens .cmd . Vous sauvegardez le
fichier source cr en choisissant l'lment de menu FileSave .

4
IV. Crer un fichier de commande pour lditeur de liens
En plus des fichiers sources, un fichier de commande d'diteur de liens Linker doit
tre cr pour gnrer un fichier excutable et pour se conformer aux spcifications de
mmoire du DSP et de la cible sur laquelle le fichier excutable va tre compil. Un
fichier de commande d'diteur de liens Linker peut tre cr en utilisant la mme
procdure que pour le fichier prcdant (en choisissant FileNew File ). Pour
lexemple en cours, nous allons considrer le fichier de commande suivant cr sous le
nom de : lab1.cmd
MEMORY
{
IVECS: org = 0h, len = 0x220 /*vector section*/
IRAM: org = 0x00000220, len = 0x00002FDE0 /*internal memory*/
SDRAM: org = 0x80000000, len = 0x00010000 /*external memory*/
MYDATA: org = 0x80010000, len = 0x00100000 /*external memory*/
FLASH: org = 0x90000000, len = 0x00020000 /*flash memory*/
}

SECTIONS
{
.vectors :> IVECS
.text :> IRAM
.bss :> IRAM
.cinit :> IRAM
.stack :> IRAM
.sysmem :> SDRAM
.const :> IRAM
.switch :> IRAM
.far :> SDRAM
.cio :> SDRAM
.mydata :> MYDATA
}

Puisque notre objectif est de placer les valeurs dfinies dans le fichier initmem.asm
dans la mmoire, un espace qui ne sera pas recouvert par le compilateur devrait
tre choisi. Les espaces de donnes externes SDRAM ou MYDATA peuvent tre
utiliss cette fin. Commenons par assembler les donnes l'adresse de mmoire
0x80010000 (0x dnote l'hexadcimal), situe en mmoire externe. Pour faire ceci,
assignez la section nomme .mydata MYDATA en ajoutant .mydata :>
MYDATA dans la partie SECTIONS du fichier de commande, comme dj indiqu
dans le programme ci-dessus. La fentre d'dition sera sauvegarde dans le fichier de
commande d'diteur de liens Linker en choisissant FileSave .

V. Ajout de fichiers de support au projet


En plus des fichiers existants initmem.asm et lab1.cmd , des fichiers
supports pour le TMS320C6713et la cible DSK6713 devront tre inclus au projet sous
forme de librairie et rpertoire Include . Ces fichiers seront implants au projet dans
les prochains laboratoires.

5
VI. La mise au point du projet
Pour la mise au point, nous utilisons un programme interprteur de commandes
interactif vide. Crez un fichier source en C quon appellera main.c , crivez les lignes
suivantes.
#include <stdio.h>

void main()
{
printf(BEGIN\n);
printf(END\n);
}

Aprs avoir ajout tous les fichiers sources, fichier de commande et fichier de
bibliothque au projet, vous pouvez construire le projet et crer un fichier excutable
pour le DSP-cible. Pour cela, choisissez l'lment de menu ProjectBuild Active
Project. Cette fonction permet au CCS de compiler, assembler, et joindre tous les
fichiers dans le projet.

Si le processus de construction est complt sans erreur, le fichier excutable


lab1.out est produit. Il est galement possible de complter cette opration par
incrments; c'est--dire en recompilant ou en assemblant seulement des fichiers changs
depuis la dernire construction, en choisissant l'lment de menu ProjectRebuild
Active Project .
Bien que CCS fournisse des options par dfaut, ces options peuvent tre changes en
choisissant ProjectProperties . Par exemple, pour changer le nom du fichier
excutable en test.out , choisissez ProjectProperties, et cliquez sur C/C++
Build C6000 Linker Basic Options et parmi les options de construction; taper alors
test.out dans la zone Specify output file name .

6
VII. Le suivi de lexcution (mode Debug)
Une fois que le processus de construction est complt sans aucune erreur, le
programme peut tre charg et excut sur la c a r t e D S P cible ou un simulateur.

Pour linstallation sur la carte cible DSK TMS320C6713 :

1. Cliquer s ur TargetNew Target Configuration .


2. Entrer le nom de la cible dans le champs File name par exemple DSK6713.ccmxl
et cocher Use shared location suivi de Finish.
3. Slectionner la cible Spectrum Digital DSK-EVM eZdsp onboard USB emulator
dans la fentre Connection, cocher le DSK6713 dans la fentre Device et
terminer en sauvegardant la configuration avec Save. La carte DSP cible
DSK6713.ccmxl sera slectionne automatiquement par dfaut pour tous les
nouveaux projets.

7
8
Pour tlcharger et muler le programme sur la carte DSP cible, faire les tapes suivantes :

1. Choisissez TargetLauch TI Debugger . Code composer ouvrira une page avec la


perspective du mode Debug.
2. Choisissez TargetConnect Target pour le branchement de la carte cible DSK
6713.
3. Choisissez TargetLoad Program pour transfrer le programme compil (Ex :
Lab1.out) vers la cible.

Pour revenir en perspective ddition C/C++, terminer la session Debug en


choisissant TargetTerminate All ou encore en cliquant sur le carr rouge du menu.

Pour excuter le programme, choisissez l'lment TargetRun pour un mode


continu et les lments TargetStep pour le mode tape par tape. Ces
commandes sont aussi disponibles sous forme dicnes sur la ligne de menu rapide. Lors
de lexcution Run, vous devriez voir apparatre BEGIN et END dans la
fentre console Stdout (en bas de lcran).

9
Maintenant, allons vrifier si lensemble des valeurs est assembl dans l'emplacement
de mmoire indiqu. CCS permet de visualiser le contenu de la mmoire un
emplacement spcifique. Pour visualiser le contenu de la mmoire ladresse
0x80010000, choisissez ViewMemory partir du menu. La fentre de dialogue
Memory permet de spcifier divers attributs daffichage de la fentre. Allez la zone
Adress Text , crivez 0x80010000 et slectionnez 16bit Signed Integer dans le
champ du format. Dautres options sont disponibles partir de la barre menu pour
sauvegarder ou charger des donnes dune plage mmoire partir dun fichier du PC et
remplir une plage mmoire avec une valeur prdtermine (voir Help).

VII. Loutil daffichage graphique


Un affichage graphique des donnes fournit souvent un meilleur aperu du
comportement d'un programme. CCS fournit une interface d'analyse de signal pour
surveiller un signal ou ses donnes. Commenons par afficher le choix de valeurs
ladresse 0x80010000 comme un signal ou un graphique de temps. Pour ce faire,
choisissez ToolGraphSingle Time pour visualiser la fentre de proprit du
graphique. Allez au Start Address Field , cliquez dessus, puis tapez 0x80010000.
Ensuite, allez Acquisition Buffer Size et Display Data Size , cliquez dessus et
crivez " 10".
Finalement, cliquez sur DSP Data Type, choisissez 16-bit Signed Integer
partir de la liste droulante, et cliquez sur OK. Alors, une fentre du graphique
apparatra avec les proprits choisies comme illustr ci-dessous.

10
Vous pouvez modifier n'importe lequel de ces paramtres partir de la fentre
graphique en cliquant sur le bouton droite de la souris, ensuite choisissez
Properties, et ajustez comme voulu. Notez que les proprits peuvent tre mises
jour tout moment pendant le procd de mise au point.

VIII. Lusage dun pointeur pour accder aux donnes


Pour assigner un pointeur au dbut de l'espace mmoire assembl, l'adresse de la
mmoire doit tre saisie directement par ce pointeur. Le code suivant peut tre employ
pour assigner un pointeur au dbut des valeurs et parcourir celles-ci pour imprimer
chacune delles sur la console Stdout :
#include <stdio.h>

void main()
{
int i;
short *point;
point = (short *) 0x80010000;
printf ("BEGIN\n");
for (i = 0; i < 10; i++)
printf ("[%d]%d\n",i,point[i]);
printf ("END\n");
}
Au lieu de crer un nouveau fichier source, nous pouvons modifier le fichier main.c
existant en double cliquant sur le fichier main.c dans le panneau de configuration
du projet. Cette action apportera vers le haut de lcran le fichier source main.c ,
et alors vous pouvez le modifier partir de cette fentre et reconstruisez-le aprs.
Avant d'excuter le fichier excutable, assurez-vous davoir recharg le fichier
lab1.out. En excutant ce fichier, vous devriez pouvoir voir les valeurs dans la
fentre console Stdout .

11
IX. Les points darrt
Durant le dveloppement ou le test des programmes, on doit souvent contrler
la valeur d'une variable pendant l'excution du programme. Ceci peut tre ralis en
utilisant des points d'arrt (BREAKPOINT) et des Watch Windows .
Pour visualiser les valeurs du pointeur dans main.c avant et aprs l'assignation de
celui-ci, il faut redmarrer le programme TargetRestart dans le mode Debug et
ouvrir main.c . Ensuite, mettre votre curseur au dbut la ligne qui indique point =
(short *) 0x80010000 et double cliquez pour placer un point d'arrt. Ensuite,
choisissez ViewWatch partir de la barre de menu pour ouvrir un Watch
Window .
Pour ajouter une nouvelle expression dans cette fentre, cliquez par-dessus cette
fentre Name et tapez point (ou toute expression que vous voulez examiner).
Ensuite, choisissez TargetRun . Le programme s'arrte au point d'arrt et la valeur
du pointeur apparat sur la fentre Watch . Ceci est la valeur avant que le pointeur ne
soit plac 0x80010000. En appuyant sur F6 Step Over, vous faites un pas au-dessus
de la ligne, vous devriez pouvoir voir la valeur 0x80010000 dans la fentre Watch .

X. Les fonctions
Pour ajouter une simple fonction en C qui fait la somme des valeurs, nous pouvons
simplement passer le pointeur par l'alignement de valeur et avoir un retour de
nombre entier. Pour l'instant, considrant que nous n'utilisons pas l'assembleur, ce qui
nous concerne n'est pas comment les variables sont additionnes, mais plutt
combien de temps i l f a u t pour excuter l'opration.
La fonction simple suivante peut tre employe pour additionner les valeurs et pour
renvoyer le rsultat:
#include <stdio.h>
int ret_sum (const short* array, int N)
{
int count, sum;
sum = 0;
for (count = 0; count < N; count++ )
sum += array [count];
return (sum);
}
void main()
{
int i, ret;
short *point;
point = (short *) 0x80010000;
printf ("BEGIN\n");
for (i = 0; i < 10; i++)
printf ("[%d] %d\n", i , point[i]);
ret = ret_sum (point , 10);
printf ("Sum = %d\n", ret );
printf ("END\n");
}

12
XI. La mesure de performance (valuation du temps dexcution)
En tant qu'lment du procd de mise au point, il est normalement ncessaire de
chronomtrer l'application du programme. Dans cet exemple, nous allons dterminer
combien de temps prend la fonction ret_sum pour sexcuter.

La mesure de performance est plus prcise lorsque le simulateur du C6713 est utilis
comme cible. Le simulateur cible est configur en crant un fichier de configuration
dans le projet en mode dition C/C++ comme le DSK6713.ccxml.

1. Crer le fichier de la cible Simul6713.ccxml dans votre projet


TargetNew Target Configuration
2. Slectionner Texas Instrument Simulator dans la fentre Connection, cocher
le C6713 Device Cycle Accurate Simulator, Little Endian dans la fentre
Device et terminer en sauvegardant la configuration avec Save.
3. Dans larborescence des fichiers gauche de lcran, assurez-vous que
lexpression [Active] apparaisse droite du fichier cible du simulateur.
4. Tlcharger le programme dans le simulateur TargetDebug Active
Project.
5. Pour chronomtrer la fonction ret_sum facilement, il sagit dactiver
lhorloge TargetClockEnable et rgler les paramtres Count:
cycle.CPU et Reset Option: Auto .

Une Horloge avec un compte saffiche au bas de lcran.

6. Insrer un point darrtBreakPoint en double-cliquant sur la ligne du


programme ret = ret_sum (point, 10); et un autre point darrt la ligne
suivante printf("Sum=%d\n",ret);.
13
7. Excuter le programme avec Run, le programme sarrtera au premier point
darrt.
8. Continuer le programme avec Run, jusquau second point darrt.
9. Prendre en note le compte de lhorloge (ex: 307)

Loutil Profile est aussi disponible pour mesurer la performance du programme.

1. Dsactiver les points darrt en double cliquant sur le point. Recharger le


programme TargetDebug Active Project .
2. Choisissez ToolsProfileSetup Profile Data Collection . La fentre
Profile Setup souvrira, cliquer sur Activate si le profile nest pas dj
actif.

3. Cocher Profile all Functions for Total Cycles, ouvrir Properties pour
cocher cycleCPUtrue et sauvegarder Configuration 1 en cliquant sur
Save.
14
4. Excuter le programme avec Run. Enfin aller ToolsProfileView
Function Profile Results pour visualiser le rapport du profil. La fentre
cycles du menu doit tre slectionne cycle.CPU pour avoir une lecture
quivalente lautre mthode.

15
TRAVAIL DEMAND

1. Utiliser CCS pour crire un programme qui calcule le produit scalaire de deux
vecteurs, chacun contenant trois nombres entiers, et affiche le rsultat sur la sortie
Stdout . Les vecteurs doivent tre dfinis dans un fichier dentte avec les
valeurs [3,6,9] et [2,4,6].
2. Modifier votre programme de manire ce que la fonction main et la fonction
de multiplication rsident dans des fichiers spars.
3. crire un programme qui gnre deux priodes dun sinus raison de 256 points
par cycle et qui les emmagasine en mmoire.
a. Utiliser lutilitaire daffichage graphique pour vrifier que le signal
emmagasin est bon.
b. Reprendre laffichage graphique en utilisant loption Transforme de Fourier.
c. Faire varier la taille du tampon (de 256 512) et expliquer la courbe obtenue
dans chaque cas.

Note : Vous devez fournir un rapport qui explique votre dmarche, incluant tous les
codes et les graphiques gnrs et qui rpond toutes les questions. Votre rapport doit
aussi contenir une introduction et une conclusion.

16

You might also like