Vous êtes sur la page 1sur 14

Département d’Électronique (U.S.D.

B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
TP 01 : Code Composer Studio CCS
1. Introduction
1.1. DSP : est un processeur de traitement de signal est un processeur dont l’architecture a été optimisé dans la
perspective de réaliser des opérations et des traitements spécifiques au traitement de signal.
1.2. Structure matérielle de développement
Un environnement (ou système) de développement pour DSP peut être scindé en deux parties principales:
Un environnement de développement pour créer et mettre en forme le logiciel de l’application (création du
source, utilisation des bibliothèques, assemblage).
Un environnement de développement utilisant des outils spécifiques pour tester et déboguer le logiciel de
l’application (simulateur, module d’évaluation, émulateur).
Le simulateur : est un programme particulier exécuté par un PC ou une station de travail. Son rôle consiste à
simuler le plus exactement possible le fonctionnement du DSP cible.
Le module d’évaluation : se présente sous la forme d’une carte électronique incorporant le DSP cible et le
minimum des ressources nécessaires à sa mise en oeuvre, telles que des mémoires externes, un AIC, une liaison,
et une alimentation.

L’émulateur temps réel : est l’outil privilégié pour développer des applications DSP.
2.1. Définition de Code Composer Studio CCS
CCS (Texas Instruments : TMS320) est un Logiciel dit IDE (Integrated Development Environment) pour
compiler et débuguer des programmes pour le DSK (DSP Starter Kit), autrement dit la carte de développement
DSP. Ce logiciel est utilisé dans les 3 phases de développement d’un programme sur DSP :
Coder et Compiler : Créer un projet, écrire le code en utilisant l’éditeur, compiler et éditer les liens.
Débuguer : Vérification de l’algorithme, des affectations des variables. Utilisation de Break Points (point
d’arrêt dans le programme), fonctionnement du programme en pas à pas, etc…
Analyse : Statistiques, analyse temps réelle, etc…
2.2. Prise en main de CCS : Vous allez prendre en main CCS en utilisant les différentes fonctionnalités à partir
d’un programme simple. Dans le tutorial de CCS (Help ->Tutorial).
3. Installation de DSK (DSP Start Kit)
Pour commencer, vous devez :
3.1. Installer Code Composer Studio 3.1 (Cible : eZdsp TMS320 F2812 : Famille C2000, Génération C28XX,
Model : F2812)
Mettre le CD d’installation , Installer Code Composer Studio (CCS 3.1) - Typical

>> >> >>


Installer eZdSP 2800 Driver & Target Content - Typical

1
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS

Ne PAS installer le Flash Plug-In fourni sur le CD


3.2. Alimenter la carte eZdsp F2812 par le câble d’alimentation fourni avec le DSK eZdsp F2812 : deux
LEDs s'allumes si la carte est sous tension, sinon, revérifier l’alimentation.

3.3. Utilisation de CCS3.1 : Deux configurations


1ère CONFIGURATION : TMS320C28xx (module d’évaluation)
Connecter la carte DSP à un Personal Computer en utilisant le câble parallèle fourni avec le DSK

Choix d’une cible sous CCS3.1 (le setup) : on veut utiliser, dans ce cas, la carte DSP TMS320F2812
(module d’évaluation)

Cliquer sur Démarrer -> Programmes -> Texas Instruments> Code Composer Studio 3.1 -> Setup Code
Composer Studio 3.1

2
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
Sélectionner F2812 eZdsp dans la page Avialable Factory boards

Cliquer sur <<Add, puis Save & Quit


Sur la boite de dialogue qui apparaîtra, cliquer sur Non

Démarrage de Code Composer Studio


Créer Le répertoire C :\TP_DSP_RT, pour enregistrer vos fichiers de projet.
Pour ouvrir Code Composer Studio 3.1, cliquer sur Démarrer -> Programmes -> Texas Instruments> Code
Composer Studio 3.1 -> Code Composer Studio 3.1

Ou utiliser le raccourci

>>> >>
Avertissement: Si la carte eZdsp F2812 n’est pas connectée au PC, vous verrez le message d'erreur suivante.
Dans ce cas :
* Cliquer sur Abandonner Abort, brancher la et redémarrer CCS 3.1, OU
* Cliquer sur Ignore et suivre la démarche suivante.

3
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS

CCS doit vous indiquer

Pour se connecter

2ème CONFIGURATION : TMS320C28xx (Simulator)


Choix d’une cible sous CCS3.1 (le setup) : on veut utiliser, dans ce cas, seulement le simulateur
TMS320C28XX (Simulator)

Cliquer sur Démarrer -> Programmes -> Texas Instruments> Code Composer Studio 3.1 -> Setup Code
Composer Studio 3.1
Supprimer la configuration précédente : Cliquer sur F2812 eZdsp dans la page System Configuration, puis
Remove, puis Oui (sur la boite de dialogue qui apparaîtra).

Sélectionner F2812 Device Simulator dans la page Avialable Factory boards


Cliquer sur <<Add, puis Save & Quit

4
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
Sélectionner la cible (eZdsp F2812), Add puis Save & Quit
Sur la boite de dialogue qui apparaîtra, cliquer sur Non

Démarrage de Code Composer Studio


Créer Le répertoire C :\TP_DSP_RT, pour enregistrer vos fichiers de projet.
Pour ouvrir Code Composer Studio 3.1
Cliquer sur Démarrer -> Programmes -> Texas Instruments> Code Composer Studio 3.1 -> Code Composer
Studio 3.1

>>>
4. Environnement de Développement Intégré IDE (pour les deux configurations précédentes)

5
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
5. Configuration des options de base utiles (PARTIE OPTIONNELLE) :
Aller sous Option /Customize

Sous l’onglet Debug Properties, mettre: "Connect to the target when a control window is opened"

Cette option permet que CCS se connecte automatiquement à la carte eZdSP sans devoir refaire l'opération ci-
dessus.
Sous l’onglet Program/Project Load, mettre : "Load Program After Build"
Cette option permet que le programme se charge automatiquement dans la mémoire du DSP une fois compilé et
donc ça évite d'aller sous : File -> Load Program , et de devoir aller chercher le *.out dans le folder debug
Sous l’onglet Program/Project Load, mettre : "Auto-save Projects before build", Puis OK
Cette option peut être néfaste si vous effacer par erreur du code et que vous compiler. Par contre elle évite bien
des soucis si CCS crash ou autre lors de la compilation et que vous avez pas sauvé.
6.1. Création d'un fichier
Pour créer un nouveau fichier d’une source code (*.asm, *.c), cliquer sur file -> New -> source file. Une fenêtre
intitulée ‘Untitled1’ apparaîtra dans l'environnement CCS.

Double cliquer sur la fenêtre ‘Untitled1’, pour la rendre plus grande.


Pour sauvegarder votre fichier, cliquer sur file -> save as. Le message ci dessus apparaîtra:
Il y’a plusieurs types d’enregistrement save as. Choisir celui qui convient à votre code (Ex : exemple.c). Cet
enregistrement permet au Linker de CCS de connaître le langage de programmation lors la construction d’un
fichier exécutable (*.out).
Quand vous avez terminé l’écriture de votre code source, enregistrer : file -> save.
6.2. Fichiers associés aux outils de développement

6
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
Fichiers Source Fichier.c Fichier source en langage C
Fichier.asm Fichier source en langage assembleur
Fichier.h Fichier source amené à être inclus dans d’autre fichier source.
Assemblage ou compilation
Fichiers Objet Fichier.obj Fichier objet issu de la compilation ou de l’assemblage ne peuvent pas être chargés sur la carte. Ils seront
regroupés dans un fichier.out
Fichier.lib Fichier objet de library destiné à être lié lors du link aux autres fichiers. Comporte souvent des sousprogrammes
appelés dans les fichiers sources ou dans d’autres library
Fichiers Commande Fichier.cmd Fichiers qui comporte des directives concernant le placement en mémoire des différentes sections définis dans
les fichiers source
Fichier.mak Fichier regroupant les directives d’assemblage et de link associé à un projet.
Edition de lien ou link
Fichier Executable Fichier.out Fichier executable qui sera chargé sur la carte DSP après les opérations de compilation des différents fichiers du
projet et l’édition des liens (link)
Fichier Projet
fichier.pjt Contient tous ce qui est nécessaire pour le projet et ces options de configuration
7. Création d'un nouveau projet
Organigramme d’un système de développement de logiciel pour un DSK

7
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
Apres la préparation de tous les fichiers nécessaires pour une application ( *.cmd, *.h, …), Créer un projet pour
les combiner.
Sélectionner : Projet -> new, Le message suivant apparaîtra:

Taper le nom du projet dans la zone Project Name.


Naviguer jusqu'au répertoire que vous avez créé pour le projet (C :\TP_DSP_RT ) dans Location.
Choisir Executable (. Out) dans Project Type.
Sélectionner TMS320C28XX dans Target.
Cliquer sur Finish.
Exemple.pjt (fichier projet) apparaîtra dans la partie gauche de l'environnement CCS. Cliquer sur le '+' pour
étendre le projet:

8. Ajout des nouveaux fichiers à un projet


Pour ajouter des nouveaux fichiers, sélectionner : Project -> Add Files to Project. Le message suivant
apparaîtra.

Sélectionnez le fichier que vous souhaitez ajouter. Pour faciliter la tâche, vous pouvez affiner votre recherche
d'un fichier particulier en choisissant son type (dans Files of type) puis cliquer sur Open.
Cliquer sur le '+' dans les dossiers (la fenêtre de gauche) pour voir le fichier ajouté.
9. Affichage Mixte C/Assembleur
Activer et désactiver ce mode d’affichage : View -> Mixed Source/ASM.

8
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS

Remarque : il n’est pas possible de modifier un code C lorsque ce mode est activé.
10. Compilation des fichiers et construction de projet

Compilation >> , Incremental Build >> , Rebuild All >>


La compilation simple (Project -> Compile File), ne fait que compiler le fichier individuel, et ne produit donc
pas d’exécutable.
Une fois que vous avez ajouté le fichier code source (après être corrigé et compilé : Project -> Compile File (F7)) et
les autres fichiers nécessaires, vous pouvez, maintenant, construire votre projet. Sélectionnez Project> Rebuild All
(build). Vous devriez voir la fenêtre suivante au bas de la fenêtre CCS 3.1.

S'il y’a des erreurs dans votre code, elles seront listées avec les numéros des lignes correspondantes.
Corriger et de reconstruire votre projet.
Construire un projet signifie compiler chaque fichier *.c en fichier *.obj, puis effectuer l’édition des liens
(linking) pour obtenir un exécutable *.out. La construction incrémentale (Incremental Build) ou la construction
complète (Rebuild All) effectuent toutes ces opérations. La différence est que la version incrémentale recompile
intelligemment seulement les fichiers qui ont été changé, et est donc plus rapide.
11. Chargement, rechargement des programmes
Après la construction avec succès de votre projet, vous devez, maintenant, charger votre programme (fichier
*.out) sur le DSP utilisé.
La construction d’un projet crée un nouveau dossier (dans votre répertoire de travail) appelé Debug (le dossier
de débogage). Il contient le fichier exécutable de votre projet (*.out).
Sélectionner File -> Load Program
Naviguer jusqu’au le dossier C :\TP_DSP_RT\Debug, sélectionner votre fichier (*. out) puis Open.

9
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
Si on a déjà chargé l’exécutable une fois, on peut utiliser : File -> Reload Program à la place.
12. Exécution, Ralentissement, ou arrêt de programme
Pour exécuter votre programme, sélectionner Debug -> Run (F5) (ou Animate)

Votre programme va alors commencer à courir. Vous verrez le message suivant au bas à gauche de

l'environnement CCS 3.1


Pour ralentir l'exécution de votre code, sélectionner Debug -> Halt

Vous devriez alors voir ce qui suit à la partie inférieure gauche du milieu de travail.

La flèche jaune , sur la marge gauche, indique quelle est la prochaine ligne de code qui sera exécutée.
Pour reprendre l'exécution de votre code, appuyer sur la touche F5.
Quand vous modifiez le code source (après Run ou Halt), vous devez refaire : compiler (Ctrl+F7), construire
(Rebuild ou Rebuild all), recharger : reload Program (Ctrl+Shift+L), et exécuter : Run (F5)
15. Débogage de code
Pour comprendre ce qui pourrait être mal dans votre code, il existe plusieurs méthodes que vous pouvez utiliser
pour décomposer ce problème.
13.1 Exécution pas à pas : points d'arrêt Breakpoints
Pour exécuter votre code pas à pas, vous pouvez placer des points d'arrêt.
L’exécution pas à pas et la Watch Window combinés sont des outils puissants de débogage, car ils permettent
de visualiser et modifier le contenu des variables à tout moment du déroulement d’un programme.
L’ensemble des fonctions suivantes permet de contrôler finement l’exécution du programme.

10
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS

Step Into : exécute la prochaine ligne de code, en rentrant dans les fonctions.

Step Over : exécute la prochaine ligne de code.

Step Out : exécute jusqu’à la fin de la fonction courante.

Run To Cursor: exécute jusqu’au curseur (comme si l’on avait placé un breakpoint sur la ligne du
curseur).

Run : exécute à partir du PC courant, en s’arrêtant uniquement sur les breakpoints.

Stop : interrompt l’exécution à tout moment, et affiche la ligne de code du PC courant. Le programme
peut être à nouveau relancé à partir de cet endroit.

Animate : exécute à partir du PC courant, mais ne s’arrête que brièvement sur les breakpoints, avant de
continuer l’exécution.
Positionner ou enlever un breakpoint : double cliquer dans la marge gauche en gris. Un breakpoint est
positionné lorsqu’un cercle rouge est présent.

Vous pouvez définir plusieurs Breakpoints .


Le DSP s'arrêtera au premier point d'arrêt (Breakpoints). Pour accéder au prochain point d'arrêt, appuyez sur la
touche F5 (continuer l’exécution sur le DSP).
13.2. Visualisation des Variables
Pour voir quelles sont les valeurs de vos variables, des constantes, et / ou des registres obtiennent, vous pouvez
les afficher dans une fenêtre de surveillance. Sélectionner View -> Watch Window. Ou bien : Sélectionner un
nom de variable dans le code soure, Clic bouton droite puis Add to Watch Window
La fenêtre suivante apparaîtra dans l'environnement CCS 3.1

Cliquez sur l'onglet Watch 1


Pour ajouter une variable, double cliquer sur la ligne sous la colonne Name.

11
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
Taper le nom de la variable et appuyer sur la touche Entrée
Vous pouvez modifier la base de la valeur en cliquant sur la colonne Radix et en sélectionnant le mode
d’affichage.

Modifier la valeur d’une variable : Double cliquer sur la valeur de la variable. La valeur peut alors être modifiée
14. Graphiques
Affichage d’un graphe
Menu -> View -> Graph -> Time/Frequency
Définir Start Adress
Définir Acquisition Buffer Size et Display Data Size : mettre la même valeur pour les deux, jusqu’à 2048
échantillons maximum
Définir DSP Data Type (en général 16 bits signed integer pour des int)
Positionner la fenêtre sur le côté (Clic bouton droite sur le graphe, décocher Float in Main Window)
Pour afficher la FFT du signal au lieu de son allure temporelle : Clic bouton droite sur le graphe, puis
Properties, modifier Display Type vers FFT magnitude

15. Etude de performances et profiling


Plusieurs techniques permettent de mesurer les performances des algorithmes sous CCS. L'horloge et RTDX
permettent de déterminer le temps de calcul (en cycles) ou la charge du CPU. Ces deux systèmes sont
incompatibles, il faudra donc bien veiller à désactiver l'un avant d'activer l'autre.
15.1. Comptage des Cycles d'horloge
L'horloge (clock) permet de mesurer précisément le nombre de cycles utilisés pour effectuer un traitement
donné. L'opération consistant à mesurer le nombre de cycles pour une fonction ou une partie du code (range) est
appelée profiling.
Remarque: l'activation de l'horloge ralenti le DSP, des ressources étant utilisées pour mesurer les cycles
nécessaires au traitement. Il s'agit d'un outil à utiliser uniquement pour mesurer le nombre de cycles, en
complément d’autres approches de validation.
Activation de l'horloge : (bien s'assurer que RTDX est désactivé)

12
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS
Tools-> RTDX -> Configuration Control, dans la fenêtre qui s'ouvre, décocher la case Enable RTDX
Activer l'horloge : activer l'item du menu : Profiler -> Clock-> Enable
Afficher l'horloge : Profiler -> Clock-> View

Pour mesurer le nombre de cycles d'un bloc de code, on peut utiliser la technique suivante:
Positionner deux points d'arrêts (breakpoint) : le premier sur la première ligne du bloc de code, le second sur la
première ligne après le bloc de code.
Faire tourner le programme jusqu'à ce qu'il s'arrête sur le premier point d'arrêt
Remettre l'horloge à zéro en double cliquant dans sa fenêtre sur le texte "Clock=...".
Faire continuer le programme (Run)
Le programme s'arrête juste après le bloc de code, le compteur de l'horloge indique le nombre de cycles écoulés.
Remarques : 1) des variations de l'ordre de quelques cycles peuvent être observées lors de ces mesures, qui
correspondent à la variabilité du temps de traitement des points d'arrêt.
2) Après la mise en place de vos points d'arrêt, et pour recommencer au début de votre code,
sélectionner Debug> Restart. Exécuter votre code. Effacer l'horloge en double-cliquant, puis exécuter le à
nouveau (Debug -> Run). Le nombre de cycles d'horloge apparaîtra dans la fenêtre de l'horloge.
Désactivation de l'horloge
Décocher l'item du menu : Profiler -> Clock-> Enable
15.2. CPU Load sous RTDX (Real-Time Data Exchange)
RTDX : est un protocole spécifique à Texas Instrument permettant l'échange d'informations entre le DSP et
l'ordinateur de façon non invasive, c'est à dire sans interrompre le traitement principal de façon visible, comme
avec l'horloge. En contrepartie, les informations récupérées ne sont pas aussi précises.
Remarque: CPU Load est implémenté au sein du thread idle, et n’est donc appelé que lorsque le système
d’exploitation DSP/BIOS n’a rien de plus prioritaire à faire. Il n’y aura donc aucun affichage dans les cas où :
Le CPU est occupé à quasiment 100%, ce qui ne laisse pas assez de cycles libres pour la gestion du CPU Load
(calcul de la charge et envoi vers le PC),
Le système fonctionne sur le principe d’une boucle infinie, où la fonction principale ne rend jamais la main au
DSP/BIOS.
Activation de RTDX
Bien s'assurer que l'horloge est désactivée :
Décocher l'item du menu : Profiler -> Clock -> Enable
Réinitialiser le CPU : Debug -> Reset CPU
Ouvrir la fenêtre de contrôle de RTDX : Tools-> RTDX -> Configuration Control,
Si vous activez RTDX pour la première fois, cocher « Enable RTDX », cliquer sur Configuration, sélectionner
Continuous Mode si ce n’est pas déjà le cas cocher la case Enable RTDX
Afficher la charge CPU : DSP/BIOS -> CPU Load Graph
Désactivation de RTDX
Décocher la case Enable RTDX dans la fenêtre de configuration de RTDX, réinitialiser le CPU: debug ->
Reset_CPU.

13
Département d’Électronique (U.S.D.B 1) M1 R&T (2018/2019)
TP : Processeurs Numériques Spécialisés PNS

16. Etude de la carte mémoire


La carte mémoire effective permet d’estimer l’empreinte mémoire nécessaire pour implanter le programme sur
le DSP.
Génération de la carte mémoire *.map lors de l’édition des liens
Le fichier *.map contient toutes les informations connues à l’issue de l’édition des liens concernant l’utilisation
de la mémoire du DSP :
Blocs mémoires logiques (taille, position et espace utilisé) (IPROG, IDATA, SARAM03…)
La position des sections logiques statiques au sein de la mémoire (.bss, .text, .cinit…)
La valeur des symboles statiques définis
Pour obtenir le fichier *.map : Ajouter une option de compilation afin que le linker génère la carte mémoire
effective: Project -> Build Options, sous l’onglet Linker, Cocher l’option Map Filename -m en lui associant le
fichier *.map
Reconstruire le projet. Le *.map devrait se trouver au même niveau que l’exécutable.
17. Accès aux registres du DSP
View -> Registers -> CPU Register,
View -> Registers -> Status Register
18. Accès aux mémoires programme : View ->Memory
19. Dépannage Troubleshooting
Si vous rencontrez un problème, il est parfois préférable de réinitialiser le processeur. Vous pouvez le faire en
sélectionnant Debug -> Reset CPU. Vous devrez recharger le programme (file -> reload program).
Une autre option est de simplement arrêter de Code Composer Studio, sélectionner File -> Quit et redémarrer
l'application.

END

14