Professional Documents
Culture Documents
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.
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.
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
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 .
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.
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.
7
8
Pour tlcharger et muler le programme sur la carte DSP cible, faire les tapes suivantes :
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).
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.
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.
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