TP1 Enoncé 12/08/2013 JC/LP/MD
Objectifs Générer un environnement de travail avec Code Warrior Prendre en main Code Warrior en debug Piloter les LEDs du kit (chenillard) 12/08/2013 JC/LP/MD
Générer un environnement de travail avec Code Warrior Suivre les directives du document: Démarrage_code_warrior.ppt 12/08/2013 JC/LP/MD
Prise en main de Code Warrior en debug Ecrire le programme suivant #include "PXR4040.h" int som(int,int); int main(void) { volatile int i = 0; int v1=0x10,v2=0x20,resu=0; volatile v3=0x100,v4=0x150,resu2=0; /* Loop forever */ for (;;) { i++; resu=som(v1,v2); v1=v1+1; v2=v2+1; resu2=som(v3,v4); v3=v3+1; v4=v4+1; } som(a,b) { int res; res=a+b; return (res); 12/08/2013 JC/LP/MD
Prise en main de Code Warrior en debug Voir les commandes de déroulement (Step into, Step over, Step return, Resume, Suspend) Mettre des break points Visualiser les variables ou les registre GPR en fonction des besoins Etudier le passage de paramètres entrée et sortie de fonctions Voir la différence entre int et volatile int Ajouter une fenêtre de visualisation de la zone mémoire de la pile Comprendre le fonctionnement de la pile (rsp=GPR1) notion de Stack pour la pile la pile est mappée entre 0x4003F000 et 0x4003FFFF 12/08/2013 JC/LP/MD
Chenillard Etudier le chapitre SIU dans le user manual (7.3.1.13, 7.3.1.14, 7.3.1.15) Repérer sur le schéma de la carte les adresses des LEDs Programmer les registres du SIU (GPDO et PCR) pour que toutes les LEDs soient éteintes au démarrage, créer une fonction delay d’environ 1 ms, elle sera appelée 1000 fois pour faire allumer 1 s chaque LED, avant de passer a la suivante. Tester en pas à pas puis en run 12/08/2013 JC/LP/MD