enserb3.gif (5977 octets)

 

CARTE 68HC11 Ex

(Carte 68HC11E1 en mode étendu avec RAM 32Ko et moniteur BUFFALO 3.4)

Y.BENABEN - Stage IUT GEII Bordeaux 1

Patrice KADIONIK kadionik@enseirb.fr

http://www.enseirb.fr/~kadionik

 

barre.gif (2311 octets)

Table des matières

1 - Caractéristiques du microcontrôleur 68HC11.

2 - Schéma électrique de la carte mère.

3 - Le décodage d'adresse.

4 - Cartographie mémoire de la carte mère.

5 - Utilisation de PCBUG11.

6 - Le moniteur BUFFALO.

7 - Carte d'application : mise en oeuvre des PORT A et PORT E.

8- Mise en place du noyau multitâche temps réel µC/OS II pour le 68HC11.
 

barre.gif (2311 octets)

1 - Caractéristiques du microcontrôleur 68HC11.

        Le processeur employé est un 68HC11A1 dont les caractéristiques essentielles sont résumées dans le schéma suivant :


Figure 1- Architecture interne du 68HC11.
( source : datasheet de  MOTOROLA )

        On peut souligner les éléments suivants :

arrowr.gif (868 octets) microcontrôleur technologie HCMOS

arrowr.gif (868 octets) 8Ko de ROM
arrowr.gif (868 octets) 512 octets de EEPROM
arrowr.gif (868 octets) 256 octets de RAM
arrowr.gif (868 octets) un timer 16 bits (3 entrées de captures, 5 sorties de comparaison)
arrowr.gif (868 octets) 2 accumulateurs 8 bits
arrowr.gif (868 octets) une liaison série asynchrone (SCI)
arrowr.gif (868 octets) une liaison série synchrone (SPI)
arrowr.gif (868 octets) un convertisseur analogique - numérique 8 bits, 8 entrées
arrowr.gif (868 octets) circuit d’interruption temps réel
arrowr.gif (868 octets) circuit oscillant externe (quartz 8 MHz dans notre application)

        Les modes de fonctionnement du 68HC11 sont résumés dans le tableau suivant :

MODB MODA Mode sélectionné
1 0 Single Chip (Mode 0)
1 1 Expanded multiplexed (Mode 1)
0 0 Special bootstrap
0 1 Special test

        La carte mère réalisée durant le stage permet l'utilisation du microcontrôleur 68HC11 dans tous les modes grâce à la présence de 2 jumpers qui correspondent à MODA et MODB vus précédemment.

Top

2 - Schéma électrique de la carte mère.

        Le schéma électrique de la carte mère est disponible en version image JPG : cliquer sur l'image ci-dessous pour la visualiser :

Figure 2 – schéma électrique de la carte mère.

        Si le microcontrôleur travaille en mode étendu, l’utilisateur dispose des ressources externes qui sont une RAM et une ROM externes de 32Ko. Des ports du 68HC11 sont alors attribués aux fonctions d’interfaçage des composants extérieurs :

arrowr.gif (868 octets) le port C est multiplexé : selon la valeur du signal AS, le port C est soit le bus bidirectionnel des données (D0…D7) soit le poids faible du bus d’adressage 16 bits (A0…A7). Le démultiplexage est ici confié au circuit 74LS573.

arrowr.gif (868 octets) le port B est le poids fort du bus d’adressage (A8…A15).

    L’adressage sur 16 bits permet donc d’adresser directement 64Ko.

Top
  

3 - Le décodage d'adresse.

        Le décodage d'adresse est réalisé par un circuit programmable d'ALTERA dont le schéma symbolique est donné ci-dessous :

Figure 3 – schéma symbolique du décodeur d’adresse.

        On peut remarquer que le schéma comporte un décodeur d'adresse 74LS138 ainsi qu'un circuit logique destiné à activer les Chip Select des boîtiers mémoires et la broche R/W de la RAM. On remarque également qu'une entrée supplémentaire nommée « MAP » reliée à une porte XOR a été rajoutée afin de remplacer la mémoire RAM par la mémoire ROM et vice-versa selon le programme à implanter.

Top
  

4 - Cartographie mémoire de la carte mère.

La cartographie mémoire du 68HC11Ax est la suivante :

Figure 4 – cartographie mémoire.

Remarque : il est important de noter que les accès aux ressources internes (RAM interne, EEPROM, registres...) sont prioritaires vis-à-vis des mémoires externes. De plus, la configuration d'origine du bit IRV du registre HPRIO permet de rendre "invisibles" les données internes vis - à - vis des données externes. En modes normaux, cette fonction permet donc de se passer d'un décodage logique complexe protégeant ainsi les circuits d'éventuels conflits accidentels sur le bus de données. ( Cf. M68HC11 REFERENCE MANUAL p 3-3 chapitre 3.1.2 "Mode Control Bits in HPRIO register").

Top
  

5 - Utilisation de PCBUG11.


        La façon la plus simple pour débuter la programmation du 68HC11 est l'utilisation du logiciel PCBUG11 (ver3.42) de MOTOROLA disponible à l'adresse suivante :

http://www.mcu.motsps.com/freeweb/amcu_ndx.html#mcu11
 

Top

        5.1 - Le fonctionnement de PCBUG11.

        PCBUG11 fonctionne uniquement en mode bootstrap. En effet, en mode bootstrap, il apparaît une "boot ROM " en $BF40-$BFFF, zone de mémoire morte à laquelle le processeur saute après le Reset. Cette mémoire de boot, présente dans la cartographie uniquement en mode bootstrap et special test, contient une petite routine qui autorise le téléchargement de 256 octets depuis le port série vers la RAM à partir de l'adresse $0000. En effet, ce programme en boot ROM configure la liaison série à 9600 bps, 1 bit de start, 8 bits de données, 1 bit de stop (pas de contrôle ni de parité ni de flux). Le programme de boot offre également la possibilité de télécharger les 256 octets à une vitesse de 1200 bps par l’intermédiaire d’une routine interne de la ROM appelée autobaud qui détecte la vitesse du téléchargement grâce à la réception du caractère $FF. C'est donc à ce moment là que le logiciel PCBUG11 envoie un petit programme de 192 octets environ qui est appelé TALKER. Comme son nom l'indique, ce petit programme va permettre de communiquer avec l'ordinateur hôte et ainsi d'exécuter les commandes de PCBUG.

Top

        5.2 - Le logiciel PCBUG11 se présente de la manière suivante :

Figure 5 – le logiciel PCBUG11 (v3.42) en cours d’utilisation.

        La zone supérieure est la zone de dialogue où s'affiche le résultat des opérations lancées par l'utilisateur. La zone centrale au milieu montre l'état des registres du 68HC11 et à droite le type de processeur ainsi que le mode de fonctionnement de PCBUG11 (Running, Stopped, Trace). La partie inférieure est réservée à l'utilisateur pour rentrer les commandes de PCBUG.

Top

     5.3 - Description des commandes de PCBUG11 :

arrowr.gif (868 octets) ASM addr : permet la décompilation et l'édition en ligne du code téléchargé en mémoire à l'adresse addr.

arrowr.gif (868 octets) BF addr1 addr2 byte|word : permet de remplir un bloc de mémoire commençant à addr1 et terminant par addr2 avec la valeur byte / word.

arrowr.gif (868 octets) BR addr [macroname] : Cette fonction permet de placer des points d'arrêt permettant ainsi à l'utilisateur de débugger son programme. Cette fonction est utilisable seulement si on a répondu No à la question "do you wish use the XIRQ interrupt ?" Au lancement de PCBUG11. Le programme doit être également implanté dans une zone de mémoire accessible en écriture puisque PCBUG11 place une instruction SWI (interruption logicielle) à l'adresse du point d'arrêt décalant ainsi tout le reste du programme en mémoire. Le paramètre [macroname] est facultatif, il permet d'exécuter une macro préalablement chargée lors d’un point d'arrêt.

arrowr.gif (868 octets) EEPROM 0|addr1 addr2 : permet de supprimer une plage EEPROM (paramètre 0) ou bien de la configurer en spécifiant l'adresse de départ et d'arrivée.

arrowr.gif (868 octets) EEPROM ERASE [bulk] : permet d'effacer partiellement ou dans son intégralité la EEPROM dont l'étendue est définie grâce à EEPROM addr1 addr2.

arrowr.gif (868 octets) G addr : exécute le programme à l'adresse addr.

arrowr.gif (868 octets) HELP : affiche toutes les fonctions de PCBUG11 ainsi qu'un commentaire.

arrowr.gif (868 octets) LOADS filename : permet de charger un fichier s19 en mémoire.

arrowr.gif (868 octets)MD startaddr [endaddr] : visualise la plage de mémoire de startaddr à endaddr.

arrowr.gif (868 octets) MM addr : modifie le contenu de la case mémoire à l'adresse addr.

arrowr.gif (868 octets) NOBR addr : supprime le point d'arrêt placé à l'adresse addr.

arrowr.gif (868 octets) QUIT Y : quitte le logiciel PCBUG11.

arrowr.gif (868 octets) RD : rafraîchit l'affichage des registres dans la fenêtre centrale.

arrowr.gif (868 octets) RESTART : permet de relancer PCBUG11.

La liste complète de toutes les instructions ainsi que leur mode d'emploi est disponible dans le manuel de PCBUG11.

Top

        5.4 - Chargement d’un programme avec PCBUG11.

        Lorsque l'utilisateur désire charger un programme en EEPROM il doit procéder comme suit :

arrowr.gif (868 octets) effectuer un RESET sur la carte cible en mode bootstrap.

arrowr.gif (868 octets) exécuter PCBUG11 -A port=2 - (cas d'un 68HC11Ax relié au port série COM2 de l'ordinateur).

Remarque: le logiciel doit se lancer normalement et ne doit pas indiquer de messages d'erreurs. Si une erreur apparait à ce moment là, il y a plusieurs sources de problèmes possibles : le 68HC11 est mal configuré (non bootstrap), le MAX232 n'est pas opérationnel (niveaux de 10 V inexistants), PCBUG11 ne supporte pas un ordinateur de plus de 200MHz (génération de l'erreur "runtime error" - il faut utiliser le patch adéquat de Motorola), si PCBUG11 est exécuté sous windows 95/98, il peut être nécessaire de diminuer la sensibilité d'attente de pcbug11.exe dans propriétés-> divers.

arrowr.gif (868 octets)taper EEPROM $B600 $B7FF si l'EEPROM est située de  $B600 à $B7FF.

arrowr.gif (868 octets) taper EEPROM ERASE BULK qui permet d'effacer l'EEPROM. Nous pouvons ainsi vérifier si l'opération a été réussie en tapant md $B600 $B7FF : on ne doit voir que des octets $FF.
 

Remarque importante : si la programmation de la mémoire EEPROM n'est pas correcte, il est possible soit qu'elle ne se trouve pas aux adresses $B600 à $B7FF soit que le registre de protection en écriture BPROT (présent sur les 68HC11Ex, F1...) ait été configuré pour protéger la EEPROM. Pour résoudre ce problème, il faut, après avoir lancé PCBUG11, taper mm $1035 $10 où $1035 est l'adresse du registre BPROT.

        Si la EEPROM n'est pas présente dans la cartographie mémoire, c'est que le "CONFIG register" est mal configuré : attention, ce registre se programme comme une case de mémoire EEPROM... voir le manuel "M68HC11 REFERENCE MANUAL", page 3-5, paragraphe 3.2.2 The config register. Le bit concerné est nommé EEON et permet d'activer ou non la EEPROM.
 

arrowr.gif (868 octets) taper ensuite loads filename où filename est le nom du fichier compilé (sans l'extension) au format S19 de MOTOROLA (S19-record file) qui se trouve alors dans le même répertoire que PCBUG11. Les fichiers S19 sont créés par exemple par le compilateur assembleur (asmhc11.exe) ou bien par un compilateur croisé C.

arrowr.gif (868 octets) il ne reste plus qu'à vérifier que le programme est bien implanté en mémoire grâce à l'instruction asm $B600 si le programme démarre en $B600.

arrowr.gif (868 octets) si le programme est bien chargé (pas de message d'erreurs) alors l'exécution du programme se fait par g $B600 et l'arrêt par S. Lorsqu'on stoppe le programme, le 68HC11 revient au TALKER.

Top

6 - Le moniteur BUFFALO.

        6.1 - Qu'est ce qu'un moniteur ?

        Nous avons vu que le logiciel PCBUG11 télécharge un petit programme de 192 octets environ en mémoire RAM, un moniteur est un programme beaucoup plus gros (8Ko environ) que l'on programme dans une EPROM externe et qui permet donc de remplacer le TALKER de PCBUG11. Les avantages sont multiples puisque le moniteur occupe très peu de RAM (uniquement pour quelques variables), il permet de débugguer le programme utilisateur grâce à des commandes intégrées que nous verrons plus loin et le moniteur dialogue avec l'utilisateur par l'intermédiaire d'un simple terminal (l’hyperterminal par exemple).

        L'exécution du moniteur se fait lors du RESET en mode ETENDU et rend libre l'utilisation du port série après le lancement du programme utilisateur. Pour reprendre la main, il suffit de réinitialiser le microcontrôleur.

        Le moniteur BUFFALO 3.4 pour 68HC11 occupe un espace mémoire de 8Ko en EPROM. Le vecteur de RESET aux adresses $FFFE et $FFFF doit être configuré avec $8000. La source du mointeur BUFFALO vient du site internet MOTOROLA suivant sous le nom de buf34.asm :

http://www.mcu.motsps.com/freeweb/amcu_ndx.html#mon
 

Top

        6.2 - Utilisation du moniteur BUFFALO 3.4.

        Les commandes du moniteur BUFFALO 3.4 sont similaires à celles utilisées par PCBUG11 et sont accessibles dès la mise en route du moniteur en tapant entrée ou help : la capture d'écran suivante montre l'ensemble des commandes dont le rôle est assez intuitif.

Figure 6– le moniteur BUFFALO en cours d’utilisation.

        Le chargement d'un programme utilisateur par le moniteur BUFFALO se fait grâce à la commande LOAD T. Après avoir tapé la commande LOAD T, le moniteur attend le téléchargement d'un fichier s19. On utilise pour cela la fonction de transfert de fichiers du Terminal disponible dans le menu Transferts>Envoyer un fichier texte>toto.s19.

Remarque importante : si on charge un programme en EEPROM (à partir de l'adresse $B600), il faut ralentir le transfert de caractères en attribuant par exemple une durée de 1/10s par octet.
 

        Le téléchargement terminé, le moniteur renvoie alors le message "done". L'exécution du programme se fait alors grâce à l'instruction G addr. Lors des tests, le programme testio.s19 a été chargé en $C000 (RAM) puis en $B600 (EEPROM) pour test. L'exécution s'est faite par G C000 (ou B600 selon le cas) depuis la ligne de commande du moniteur. Le retour à la ligne de commande du moniteur se fait par pression sur le bouton RESET de la carte cible (à condition d'avoir bien spécifié en $FFFE-FF l'adresse de départ du moniteur qui est ici $8000).

        Pour des raisons de fiabilité, le moniteur peut être implanté en EPROM comme c 'est le cas de toutes les cartes avec moniteur disponible chez MOTOROLA ou sur Internet.

Top
 

7 - Carte d'application : mise en oeuvre des PORT A et PORT E.

        Voici un exemple d'interfaçage d'une carte d'affichage simple avec la carte mère. Le schéma électrique est donné ci-dessous en cliquant sur l'image :

La carte d'affichage permet de visualiser les broches PA3 à PA7 grâce à des LEDs commandées par l'intermédiaire d'un buffer 74HC245. La carte permet également d'utiliser le PORT E et les 3 bits de poids faible du PORT A grâce à des interrupteurs micro-switchs.

Top
 

Mise en place du noyau multitâche temps réel µC/OS II pour le 68HC11 arrowright.gif (977 octets)