30 0 6MB
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) TP : Processeurs Numériques Spécialisés PNS
M1 R&T (2018/2019)
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) TP : Processeurs Numériques Spécialisés PNS Sélectionner F2812 eZdsp dans la page Avialable Factory boards
M1 R&T (2018/2019)
Cliquer sur 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) TP : Processeurs Numériques Spécialisés PNS
M1 R&T (2018/2019)
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 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) TP : Processeurs Numériques Spécialisés PNS 5. Configuration des options de base utiles (PARTIE OPTIONNELLE) : Aller sous Option /Customize
M1 R&T (2018/2019)
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 cidessus. 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) TP : Processeurs Numériques Spécialisés PNS Fichiers Source
Assemblage ou compilation Fichiers Objet
Fichier.c Fichier.asm Fichier.h
Fichier source en langage C Fichier source en langage assembleur Fichier source amené à être inclus dans d’autre fichier source.
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 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 qui comporte des directives concernant le placement en mémoire des différentes sections définis dans les fichiers source Fichier regroupant les directives d’assemblage et de link associé à un projet. Edition de lien ou link 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 Contient tous ce qui est nécessaire pour le projet et ces options de configuration
Fichier.lib Fichiers Commande
Fichier.cmd Fichier.mak
Fichier Executable
M1 R&T (2018/2019)
Fichier.out
fichier.pjt
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. apparaîtra.
Le message suivant
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) TP : Processeurs Numériques Spécialisés PNS
M1 R&T (2018/2019)
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) TP : Processeurs Numériques Spécialisés PNS
M1 R&T (2018/2019)
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) TP : Processeurs Numériques Spécialisés PNS
M1 R&T (2018/2019)
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