Programmation in-situ de la mémoire flash du HC Nabil Al-HOSSRI, département GEII IUT Bordeaux E-mail: nabil.al-hossri@u-bordeaux.fr Sommaire PROGRAMMATION IN-SITU DE LA MEMOIRE FLASH DU HC... INTRODUCTION... LA MEMOIRE FLASH... PROGRAMMATION IN-SITU EN MODE MONITEUR... LA PRISE RS DU PC... PROGRAMMATEUR COMMERCIAL... BPROGRAMMATEUR «MAISON»... LOGICIEL CODE WARRIOR... CARTE MICROCONTROLEUR TYPE MCHCGP... CARTES D APPLICATION... Carte d affichage sur LCD x alphanumérique... Carte de visualisation sur LCD graphique x pixels... Interface permettant de dialoguer en duplex entre PC et micro.. Interface d un clavier matriciel touches... Programmation in-situ de la mémoire flash du HC
Introduction Lors du développement d une application électronique basée sur des systèmes à microcontrôleur, il est nécessaire de reprogrammer à plusieurs reprises les composants, surtout pendant la phase de mise au point de l application. Or il est pénible de sortir le composant de son support, le placer sur le programmateur, le replacer dans le circuit, pour finalement s apercevoir que le soft ne marche pas et qu il faut réitérer la manœuvre!!! En effet, à cette occasion, il peut subir plusieurs dommages : pattes qui se tordent, dessoudage nécessaire quand il s agit d une technologie CMS. On voit vite l intérêt de pouvoir reprogrammer le composant sans le sortir de sa carte cible. Afin de pouvoir programmer un composant logique, il va falloir aménager les cartes cibles. Néanmoins, nous voulons que l encombrement supplémentaire et le nombre de composant soient minimisés le plus possible. Il faut aussi ne pas perdre trop de pattes d entrées-sorties sur les composants. Afin de réaliser tout ceci, on va prévoir des connecteurs sur la carte qui nous permettront de relier un programmateur in-situ à nos microcontrôleurs. Nous utilisons essentiellement des microcontrôleurs HC de la firme Freescale. Le programmateur doit permettre la programmation in-situ des microcontrôleurs, et aussi leur debugging, procédure bien pratique en phase de développement d une application. La mémoire flash La mémoire Flash des microcontrôleurs HC de la firme Freescale peut être programmée ou effacée, selon l utilisation des routines fonctionnant dans le mode autonome ou le mode moniteur. En mode autonome le micro exécute les codes qui ont été programmés par l utilisateur, dans sa mémoire Flash. C'est le mode de fonctionnement habituel d un processeur. En mode moniteur, le micro exécute les routines qui ont été figées, au cours de sa fabrication, dans une zone de sa mémoire. Ce mode est employé pour gérer une communication sérielle, via une seule broche (PTA pour HCGP), avec un équipement extérieur. L effacement et la reprogrammation de la mémoire flash du micro font aussi appel à ce mode. Les niveaux logiques appliqués sur quelques broches du micro utilisé déterminent, après une mise sous tension, son mode de fonctionnement. Pour le HCGP voir le tableau suivant : Mode moniteur du HCGP Nom IRQ\ PTA PTA PTC PTC PTC Quartz Transmission Niveau ou tension V De V à V. MHz Bauds Tableau Conditions de mise en mode moniteur du HCGP. Le dialogue avec un PC se fait via la ligne bidirectionnelle PTA. Pour plus de détails se référer à la section «Monitor ROM» ici. Programmation in-situ de la mémoire flash du HC
Programmation in-situ en mode moniteur Pour programmer, in-situ ( sur place, ou ICP, pour : In-Circuit Programming), un microcontrôleur de la famille HC de chez Freescale, on doit disposer de l équipement suivant (Figure ) : Programmateur HC Carte d application Cette plate-forme comprend : Figure Plate-forme de programmation in-situ du HC. Un PC possédant un port série à la norme RS. Un logiciel (compilateur/debugger) capable de contrôler le cycle dit «power off/on» pendant lequel le micro doit être mis hors tension ( du micro < mv, voir aussi Tableau ). Ce cycle est nécessaire pour que le micro démarre en mode moniteur. Une interface (programmateur) qui assure une mise en dialogue correct entre le PC et le micro. Une carte micro montée en mode moniteur (tableau ). La prise RS du PC La prise RS du PC est en général au format DB ( broches) de type femelle. Du côté de l application, il est de type mâle. Le tableau suivant exprime les différentes broches de ce connecteur : N Nom E/S Description CD E Carrier Detect: Déclare que l'autre équipement reçoit une réponse. RD E Received Data : Entrée de réception des données TD S Transmitted Data : Sortie d'émission des données DTR S Data Terminal Ready : Indique à l'autre équipement que l'on souhaite communiquer. SG Signal Ground : Masse DSR E Data Set Ready : Indique que l'équipement opposé est prêt. RTS S Request To Send : Demande à l'autre équipement de se tenir prêt à recevoir. CTS E Clear To Send : Indique que l'autre équipement est prêt à recevoir. RI E Ring Indicator : Annonce que le modem reçoit un appel. Tableau Les Broches de la prise RS du PC Programmation in-situ de la mémoire flash du HC
Les quatre broches principales utilisées par notre programmateur sont évidemment les broches de transmission des données et, la broche (DTR) dont on verra plus loin le rôle, et naturellement la masse (broche ). Les niveaux logiques de ces broches sont représentés par: Niveau logique est une tension de -V. Niveau logique est une tension de +V. A noter que les tensions logiques sur un système informatique sont en général de et V, et c est le cas de notre microcontrôleur HC. Un circuit d'adaptation s avère nécessaire pour convertir ces tension en ± V et réciproquement. Figure Le circuit MAX de chez MAXIM. On y voit les valeurs des condensateurs à adopter. Le circuit MAX de la figure est conçu pour réaliser cette fonction. Les condensateurs dont il est équipé permettent de générer les tensions de V et -V à partir du V. En pratique, la mesure réelle donne ±,V. Programmateur commercial Le programmateur doit répondre aux exigences suivantes : Au repos, il doit mettre le microcontrôleur en mode moniteur (cf. Tableau ) et de ce fait :. alimenter le micro sous une tension =V,. appliquer à l entrée IRQ\ une tension entre et V,. positionner data (PTA pour HCGP) à une tension de V. A l arrivée d une impulsion (-V) sur la ligne DTR du port série du PC :. couper l alimentation ( mv) du micro, Programmation in-situ de la mémoire flash du HC
. mettre l entrée IRQ\ à zéro,. positionner data à zéro. Un schéma, dans sa version commerciale, accompagné de l explication claire de son fonctionnement, a été publié par Freescale sous forme d une note référencée (AN-HK- H ). A cause de la mauvaise qualité de ce document nous nous sommes permis de le reproduire à la figure. Ce programmateur est destiné à fonctionner, sous Code Warrior, en CLASS (cycle power off/on contrôlé par le signal DTR) et une vitesse de transmission de bauds. C n C u C+ U U:C HC C- C- DTR_PC TOUT TIN RIN ROUT Tx_PC TOUT TIN RIN ROUT Rx_PC VS+ VS- MAX C u C u C C+ Tx_micro Rx_micro u D N C u C n VI U GND VO D LED C n GND U:A HC U:B HC J CONN-DF Prise femelle De v à v J CONN-H Programmateur Freescale HC R RV.k C u R k Coté PC VCC R k Buffers états R k Q N R k R k v_micro Data VCC v fixe R k / watt min R Q N R k D N D N R.k Q N De.V à.v Vtst DTR_PC = -v Power off Vers micro HC Vtst v_micro Data J CONN-SIL IRQ\ du micro Data Masse v_micro DTR_PC = -v Power off R k C.u D'après la note AN-HK- Figure Schéma fonctionnel, d après la note AN-HK-H, du programmateur Freescale HC. La figure montre une réalisation fonctionnelle de ce programmateur. Programmation in-situ de la mémoire flash du HC
Figure Un produit fini du programmateur Freescale réalisé par Christian CAZAUBON et Christian PECOSTE (GEII Bordeaux-). Programmateur «maison» Il pourrait être techniquement intéressant de développer notre propre programmateur. Dans ce but en nous inspirant du schéma commercial donné plus haut, et d autres programmateurs présentés sur le site http://www.hc.net, nous avons élaboré un schéma simplifié qui le rend plus compact et plus économique car il minimise le nombre de composants utilisés, tout en préservant ses qualités fonctionnelles. Ce dernier est présenté, ci-dessous, dans le schéma de la figure (). Son originalité réside dans l utilisation du signal DTR pour contrôler, à la sortie IRQ\, le cycle power off/on, ce qui économise un boîtier de buffers et un transistor. Programmateur simplifié HC J DTR_PC Tx_PC Rx_PC CONN-DF Prise femelle R k Coté PC C n R k R k TOUT RIN TOUT RIN VS+ D.V MAX De à V Vtst C+ TIN ROUT TIN ROUT Ca+ Cb+ VSa- VSb- C- Ca- Cb- Rx_micro D N Vtst v_micro DATA VCC R k Vers micro HC J CONN-SIL J CONN-H R k IRQ\ v_micro DATA Masse VCC Masse DATA De à V J CONN-H D U VI GND VO U R D LED VCC +V C u R k Q N R.k V_micro GND N. AL HOSSRI Figure Schéma fonctionnel de notre programmateur «maison» Programmation in-situ de la mémoire flash du HC
Notre collègue Martial Leyney s est empressé de réaliser, tester et valider le bon fonctionnement de ce programmateur simplifié. Vous trouvez sur la figure le montage final (à gauche), connecté à une carte d application (à droite) à base de microcontrôleur type MCHCJL. Figure Un produit fini du programmateur «maison» réalisé par Martial Leyney (GEII Bordeaux-). Logiciel Code Warrior Le logiciel utilisé est Code Warrior. C est un éditeur de la firme FREESCALE, d'environnement de développement (IDE) spécifique aux microcontrôleurs appartenant à la famille HC(S) (voir ici ). Au début de chargement, en classe, d un programme, Code Warrior envoie, via la ligne DTR (cf. Tableau ), une impulsion (-V), de durée programmable par l utilisateur. Cette impulsion doit être traduite par le programmateur par un cycle power off/on, ce qui met, on l a vu, le micro en mode moniteur (effacement et reprogrammation de sa mémoire flash). La durée de l impulsion DTR doit être suffisante pour que le programmateur puisse exécuter correctement le cycle power off/on. Dans le cas d un programmateur, compte tenu de son temps de réponse, la durée programmée présentant le meilleur compromis est d environ ms. Les démarches à suivre, sous Code Warrior, pour programmer la durée de l impulsion DTR sont : au chargement d un projet sous Code Warrior, le menu suivant s ouvre : Programmation in-situ de la mémoire flash du HC
un clic sur la flèche verte permet de lancer le debugger et de faire apparaître la fenêtre ci-dessous :. Sélectionnez la classe à l aide de la commande Add A Connection. Pour un premier effacement de la mémoire flash du micro, cochez la case «Ignore Security» et exécutez manuellement le cycle power off/on. cliquez sur le bouton Advanced Settings et remplissez le tableau comme cidessous: Programmation in-situ de la mémoire flash du HC
validez le tout avec le bouton «Contact Target with These Settings» finalisez avec le bouton «Yes». Patientez lors du chargement. It s over! Carte microcontrôleur type MCHCGP Cette carte doit répondre aux exigences suivantes : disposer évidemment d un microcontrôleur, par exemple, dans notre cas, du type MCHCGP, monté en mode moniteur (voir Tableau ). être munie d un connecteur broches lui permettant de dialoguer (effacement et reprogrammation de la mémoire flash du micro) avec le programmateur de la Figure. être munie des connecteurs permettant de piloter une carte d application. Ces exigences aboutissent alors à un schéma représenté par la Figure. Retirer le fil d'alimentation extérieure +v avant de brancher le câble de programmation J Schéma du câblage du microcontrôleur MCHCGP à insérer dans une application en vu de programmation in-situ (voir tableau ). Aalimentation extérieure de +V J Connecteur de programmation R D LED Vtst v_micro DATA Masse IRQ PTA v_micro C J U VSS AD VSSAD C n p C p BOU Reset du micro X. C n R.M IRQ PTA PTA PTA PTA PTA PTA PTA PTA R k PTE PTE A PTB/AD VSSA PTB/AD PTB/AD CGMXFC PTB/AD OSC PTB/AD OSC PTB/AD PTB/AD RST PTB/AD IRQ PTC PTA PTC PTA PTC PTA PTC PTA PTC PTA PTA PTD/SS PTA PTD/MISO PTA PTD/MOSI PTD/SPSCK PTE/TXD PTE/RXD PTD/TCH PTD/TCH MCHCGP PTB PTB PTB PTB PTB PTB PTB PTB PTC PTC PTD PTD PTD PTD PTD PTD R k R k PTC PTC R k PTC Figure MCHCGP ( broches) mis en mode moniteur. La résistance PULLUP de la ligne PTA se trouve dans le programmateur de la Figure Programmation in-situ de la mémoire flash du HC
Pour simplifier son insertion dans une application, on peut l encapsuler dans un souscircuit comme le montre la Figure. C est vrai, les connecteurs, dans cette carte, sont bien présents, mais il faut voir que dans une application ils ne sont pas tous utilisés. Notre souci était de créer une carte micro universelle que l on puisse exploiter quelle que soit la nature de l application. Ainsi les ports A et B sont divisés en deux demi-octets (connecteurs de j à j) et les deux sorties PTD et PTD de PWM sont isolées et disponibles aussi sur le connecteur j. PTD PTD PTE PTE J J Port C Port E J J Port D J PTE PTE PTD PTD PTC PTC PTC PTC PTC PTE PTE PTD PTD PTD PTD PTD PTD CCT MCHCGP PTA PTA PTA PTA PTA PTA PTA PTA PTB PTB PTB PTB PTB PTB PTB PTB PTA PTA PTA PTA PTA PTA PTA PTA PTB PTB PTB PTB PTB PTB PTB PTB J J Port A Port B PTA PTA PTA PTA PTB PTB PTB PTB J J PTA PTA PTA PTA PTB PTB PTB PTB J J Figure Sous circuit de la carte MCHCGP ( broches). Tous les ports sont disponibles sur des connecteurs. La figure donne une idée du typon que l on peut réaliser sous le routeur ARES..xcm IRQ\ +v PTA Port Port Port A Port B MCHCGP Reset +v +v M Port C Port ME Port D Port C Port EM Port D Figure A titre indicatif voici comment se présente le typon du schéma précédent, avec les différents connecteurs. Programmation in-situ de la mémoire flash du HC
Cartes d application Les applications sont trop vastes pour que l on puisse les énumérer ici. Il suffit en réalité d avoir de l imagination et un besoin à satisfaire pour en créer une. Cependant, nous allons vous présenter dans la suite quelques applications courantes : Carte d affichage sur LCD x alphanumérique (pour avoir plus d informations, clic ici ) Son schéma d adaptation avec notre carte universelle HC est illustré sur la figure. LCD Port A ou B Bonjour J D D D D D D D D D D D D D D D D E RW RS VEE VSS K A Port A, B, C ou D D D D D D D D D E RW RS J +v +v J J RV k C n R D LED Port A, B, C ou D J D D D D E RW RS Figure Interface d affichage sur LCD alphanumérique. Il couvre trois possibilités de fonctionnement du LCD : o la première possibilité en mode bits, dont les données et les signaux de contrôle sont connectés sur deux ports différents ; o la deuxième, toujours en mode bits, mais dont les données et les signaux de contrôle sont connectés sur le même port ; o enfin, évidemment, en mode bits, forcément sur deux ports distincts. Cette carte est facilement routée sur la figure. Programmation in-situ de la mémoire flash du HC
D D D D D D D D RS RW E D D D D +V RS RW E DB DB DB DB DB DB DB DB Bonjour.x.cm Figure Le typon de l interface LCD x alphanumérique. Cette fois ci le «Bonjour» est dans le bon sens!.. Carte de visualisation sur LCD graphique x pixels (pour plus de précisions, clic ici ) : Son schéma d adaptation avec notre carte universelle HC est illustré sur la figure. La figure représente le typon correspondant (ce qui prouve qu on peut vraiment faire afficher ce qu on veut et aller jusqu à manipuler le temps!) LCD GDMXA J H :: J VEE RST CS CS DB DB DB DB DB DB DB DB E RW RS V VSS K A J R /W Données Port A ou B SW RV k Commandes Port A, B ou D C n J Figure Le schéma de l interface LCD x pixels. Programmation in-situ de la mémoire flash du HC
xcm H :: Contraste Données DB DB DB DB DB DB DB DB Commandes RST CS CS E RW RS +v +V +v Figure Le typon de la carte d adaptation entre le HC et le LCD x pixels. Interface permettant de dialoguer en duplex entre PC et micro (pour plus de précisions, clic ici ) : C est un montage simple et facile à réaliser. Elle permet au micro de communiquer avec un PC via le port série RS. Son schéma est le suivant : C J PC CONN-DF Rx_PC Tx_PC VCC C uf C uf VS+ VS- C- C C+ uf uf U C- C+ TOUT TIN RIN ROUT TOUT TIN RIN ROUT MAX VCC GND Tx_micro Rx_micro C n Vers micro J J PTE PTE +v Ce qui peut aboutir au typon ci-dessous : Programmation in-situ de la mémoire flash du HC
PTE PTE +v Interface d un clavier matriciel touches En général ce type de clavier possède sa propre carte adaptatrice qui est constituée d un connecteur huit broches (voir image ci-contre). Ce dernier peut être facilement connecté à notre carte universelle HC. Pour exploiter la fonctionnalité KBI de notre micro, le clavier doit être connecté au port A (voir explication ici H). Accueil Programmation in-situ de la mémoire flash du HC