M1-Archi 2016-2017 Page 1 ___________________________________________________________________________ TP n°1 : Architecture des systèmes à microprocesseur ___________________________________________________________________________ Objectifs de la séance -Prise en main de l’environnement de développement µVision de Kiel -Compréhension des fichiers sources nécessaires à la programmation du microcontrôleur -Utilisation du debugger, visualisation des registres et des mémoires ___________________________________________________________________________ Matériel requis : -Une plateforme nucleo-board STM32F401RE par binôme ___________________________________________________________________________ Organisation de la séance : 1) Analyse des fichiers 2) Utilisation du debugger 3) Ajout de fonctionnalités 4) Conclusion / Bilan Tout au long de ce TP, des questions vous sont posées. Prenez le temps d’y répondre et de prendre des notes. ___________________________________________________________________________ I. Introduction On se propose d’utiliser l’outil STM32CubeMX. Cet utilitaire permet de configurer graphiquement le microcontrôleur. On y spécifie notamment les sources d’horloge, les périphériques que l’on souhaite utiliser, les sources interruptions, etc. 1. Lancer STM32CubeMX
15
Embed
TP n°1 : Architecture des systèmes à microprocesseur · TP n°1 : Architecture des systèmes à microprocesseur _____ Objectifs de la séance -Prise en main de l’environnement
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Nous allons choisir une source d’horloge externe et générer une horlogesystème SYSCLK à 84MHz. Nous avons vu aussi qu’il existe un registrespécifiquedecontrôleauseindumicrocontrôleurpermettantdeconfigurerlasourced’horlogeprincipale.C’estleregistreRCC(ResetandClockControl).Dans la fenêtrePinout, indiquer comme source d’horloge HSE (High SpeedClock)quelasourced’horlogeprovientduCrystal/CeramicResonator.
o Systemreset(remiseàzérodesregistresviaNRSTpin)o Powerreset,o Backupdomainreset.
Il est nécessaire d’autoriser les interruptions au niveau du contrôleurd’interruption NVIC comme indiqué sur la figure suivante, accessible via lafenêtreconfiguration:
Dans le répertoire Drivers/CMSIS, regarder le fichier nommé system_stm32f4xx.c. Vouspouvez observer que ce fichier contient plusieurs fonctions réalisant notammentl’initialisationduCPU,laconfigurationdel’horlogesystème(SYSCLK).Vousaureznoté,quelafonctionSystemInitestlafonctionappeléedirectementàlasuitedureset.DanslerépertoireDrivers/STM32F4xx_HAL_Driverssontprésentslesdriverspermettantlecontrôledenombreuxpériphériquesdumicroprocesseur(DMA,Timer,GPIO,…).DansledernierdossierappeléApplication/User,setrouve3fichiers. -main.c -stm32f4xx_hal_msp.c -stm32f4xx_it.cQuestion:Quecontiennentlesfichiersstm32f4xx_it.cetstm32f4xx_hal_msp.c?Ouvrerlefichierstm32f401xe.h(étendezlefichiermain.c)Question:Quecontientcefichier?Retrouverlemappingmémoire.
b. DebugConnecterlaplateformevialelienUSB.Ilestpossiblequeledriverdedebugnesoitpasspécifié.Vérifierdansl’ongletFlash/ConfigureFlashTools,puisdansDebug,vérifierqueST-LinkDebuggerestbienchoisicommeindiquéparlafigureci-dessous,puisOK:
o Registers->affichelecontenucourantdesregistresdumicrocontrôleur.o Disassembly->affichelecodeassembleurgénéréàpartirdevotrecodeC.o Command -> permet à l’utilisateur de rentrer des commandes lors du
uVision est très riche en outils permettant le debug efficace d’un code. Des fenêtressupplémentairespeuventêtreajoutéesvial’ongletView.Parexemple,dansSerialWindows,onpeutobserverlesdonnéesenvoyéessurlaliaisonsérie(UART,printf).µVisiondisposeaussid’un analyseur logique (View/Analysis Windows/Logic Analyzer) permettant d’observerl’évolutiond’unsignalaucoursdutemps.Lors de l’exécution d’un programme, il peut être intéressant d’enregistrer les tracesd’exceptionsetd’évènementsquisesontproduitsdurantl’exécution(View/Trace/TraceexceptionsouEventcounters).Lorsdel’utilisationdepériphérique,touslesregistrescorrespondantspeuventêtrevisualisésviaView/SystemViewer/.
Onsouhaitemaintenant faire l’additiondesdeuxtableauxtab0et tab1.Dans le fichiermain.c,décriremaintenantlafonctionadd_tab()quipermetderéaliserl’opérationsuivante: Tab1[i]=Tab0[i]+Tab1[i];Compiler et s’il n’y a pas d’erreur, lancer le debugger. Vérifier en pas à pas, le bonfonctionnementdevotreprogrammeetobserverlesrésultatsenmémoire.Pourcela,refairecommeprécédemment,placerunpointd’arrêtsurlorsdel’appelàlafonctionadd_tab()etexécuterenpasàpaslesinstructions.
3) Détectiondesommepaire
Onsouhaitemaintenantdétectersilasommeducontenudetab1estpaire.Sic’estlecas,onallumeralaledLD2.Celle-ciestconnectéephysiquementàlabroche5duportGPIOA(PinA5).Pourpouvoirmanipulerdesélémentsexternesaucoeur, ilestnécessairedeconfigurerlesportsd’entrée-sortie.Dansnotrecas,ilfaudraconfigurerleportGPIOAetlapin5.Ceciadéjàété réalisé par l’utilitaire STM32CubeMX qui a décrit la fonctionMX_GPIO_Init(). On nechercherapasforcémentàcomprendretoutecettefonction(CourssurlesGPIOsàvenir).Dansunpremiertemps,écrivezlafonctionunsignedintcalcul_somme()quiretournelasommedetouslesélémentsdeTab1.Vérifiersonfonctionnement.Dansunsecondtemps,modifiervotrecodepourmettreà1laledsilasommeestpaire,sinonlalaisserà0. Utiliserlalignesuivantepourallumerlaled:
LorsdeceTP,vousavezpuvousanalyserlesdifférentsfichiersnécessairesàl’initialisationetlaconfigurationdumicrocontrôleur.Le debugger est un élément indispensable lors de tout développement de code pour unprocesseurouunmicrocontrôleur.µVisiondisposed’unenvironnementtrèsrichedontvousavezvuquelquespossibilités.Ainsi,pouvoiraccéderdirectementauxregistres,visualiserlecontenudesmémoires,(etc.)sontautantd’élémentsindispensablespourbiencomprendre,testeretvalideruneimplémentation.