Outils d'utilisateurs

Outils du Site


pic:moniteur

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

pic:moniteur [2008/12/21 22:58]
per créée
pic:moniteur [2008/12/22 12:41] (Version actuelle)
per
Ligne 1: Ligne 1:
-Le Moniteur du PIC16F87x(A) +====== Le Moniteur du PIC16F87x(A) ====== 
- +~~LINEBREAK~~
 P Launay 2006 P Launay 2006
 This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
Ligne 8: Ligne 7:
  
 You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-Pourquoi un moniteur ?+ 
 + 
 +====== Pourquoi un moniteur ? ======
  
 Pour la gravure de simple programme utilisateur dans un PIC, nous utiliserons un moniteur qui communique par la liaison série Pour la gravure de simple programme utilisateur dans un PIC, nous utiliserons un moniteur qui communique par la liaison série
  
-Avantage du moniteur+**Avantage du moniteur**
 Une seule carte PIC suffit, une alimentation +5V unique est nécessaire au lieu de 2 alimentations +5V et +12V, enfin un logiciel standard GTKTerm qui servira aussi bien pour programmer que pour dialoguer avec la carte PIC, au lieu d'un logiciel spécifique et d'une carte programmateur, vous pouvez programmer sans enlever vos cartes d'applications. Une seule carte PIC suffit, une alimentation +5V unique est nécessaire au lieu de 2 alimentations +5V et +12V, enfin un logiciel standard GTKTerm qui servira aussi bien pour programmer que pour dialoguer avec la carte PIC, au lieu d'un logiciel spécifique et d'une carte programmateur, vous pouvez programmer sans enlever vos cartes d'applications.
  
-Inconvénient du moniteur +**Inconvénient du moniteur** 
-Prend 768 mots(de 14 bits) moniteur simple ou 1K mots(de 14 bits) moniteur complet avec programme pour skypic-down, sur 8K mots(de 14 bits). Cette inconvénient est mineur car il est rare de faire des programmes > 2 K mots(de 14 bits) et très rare de faire des programmes > 4 K mots(de 14 bits).+Prend 768 mots(de 14 bits) moniteur simple ou 1K mots(de 14 bits) moniteur complet avec programme pour skypic-down, sur 8K mots(de 14 bits). Cet inconvénient est mineur car il est rare de faire des programmes > 2 K mots(de 14 bits) et très rare de faire des programmes > 4 K mots(de 14 bits).
 Le programme utilisateur ne démarre qu'au bout de 5 secondes. Le programme utilisateur ne démarre qu'au bout de 5 secondes.
  
 Le cas de la gravure avec un programmateur spécifique est abandonné, il n'amène que des inconvénients : Le cas de la gravure avec un programmateur spécifique est abandonné, il n'amène que des inconvénients :
 +  * Ne respecte pas le protocole de la liaison série RS232, contairement à Skypic-down
 +  * Nécessite une carte programmation spécifique, un transistor et 3 résistances seulement avec skypic-down.
  
-    * +====== Le Moniteur du PIC16F87x(A) ======
-      Ne respecte pas le protocole de la liaison série RS232, contairement à Skypic-down +
-    * +
-      Nécessite une carte programmation spécifique, un transistor et 3 résistances seulement avec skypic-down.+
  
-Le Moniteur du PIC16F87x(A) +Il faut avoir préalablement installé **gputils** pour utiliser gpasm.
- +
-Il faut avoir préalablement installé gputils pour utiliser gpasm.+
 Ce moniteur ou bootloader a été écrit par Jack Dollhausen en assembleur et il est publié sous licence GPL, ce qui nous permet de l'étudier,de le modifier et de le distribuer. Ce moniteur ou bootloader a été écrit par Jack Dollhausen en assembleur et il est publié sous licence GPL, ce qui nous permet de l'étudier,de le modifier et de le distribuer.
-Site de Jack Dollhausen :http://www.wsu.edu/~jackdoll+Site de Jack Dollhausen :[[http://www.wsu.edu/~jackdoll/|http://www.wsu.edu/~jackdoll]]
  
-Moniteur pour PIC16F87X+**Moniteur pour PIC16F87X**
 Ce moniteur est crée pour les PIC 16F877 mais pourra être modifié (licence GPL) simplement pour les pics 16F870, 871, 873, 874, 876 et avec quelques ajustements pour bien d'autres 16f87,16f88.. Ce moniteur est crée pour les PIC 16F877 mais pourra être modifié (licence GPL) simplement pour les pics 16F870, 871, 873, 874, 876 et avec quelques ajustements pour bien d'autres 16f87,16f88..
 En fait il existe 2 versions 16F877 et 16F877A (programmations différentes) comme vous pouvez le voir sur le site : En fait il existe 2 versions 16F877 et 16F877A (programmations différentes) comme vous pouvez le voir sur le site :
 http://www.wsu.edu/~jackdoll/jmon/index.htm http://www.wsu.edu/~jackdoll/jmon/index.htm
 Ce moniteur de 768 octets qui va d'abord nous permettre de charger un programme utilisateur par la liaison série RS232 à 8 fonctions. Lire comment ça marche, how it works : Demo session http://www.wsu.edu/~jackdoll/jmon/html/session.htm Ce moniteur de 768 octets qui va d'abord nous permettre de charger un programme utilisateur par la liaison série RS232 à 8 fonctions. Lire comment ça marche, how it works : Demo session http://www.wsu.edu/~jackdoll/jmon/html/session.htm
-Fonctionnement du moniteur+ 
 +===== Fonctionnement du moniteur =====
  
 A la mise sous tension, la liaison série est initialisée dans notre cas à 9600 bauds, avec 1 bit de start, 1 bit de stop, pas de parité et sans gestion RTS, CTS. Tout ceci est modifiable dans le moniteur. A la mise sous tension, la liaison série est initialisée dans notre cas à 9600 bauds, avec 1 bit de start, 1 bit de stop, pas de parité et sans gestion RTS, CTS. Tout ceci est modifiable dans le moniteur.
Ligne 44: Ligne 43:
 Sinon une des 8 fonctions est exécutées. Sinon une des 8 fonctions est exécutées.
 Les 8 fonctions sont : Les 8 fonctions sont :
-0: peekflash Danger : permet de lire et modifier les valeurs en mémoire flash (programme) +**0: peekflash** Danger : permet de lire et modifier les valeurs en mémoire flash (programme) 
-1: peekdata Attention : permet de lire et modifier les données en mémoire vive RAM +**1: peekdata** Attention : permet de lire et modifier les données en mémoire vive RAM 
-2: peekee Attention : permet de lire et modifier les données en mémoire EEPROM +**2: peekee** Attention : permet de lire et modifier les données en mémoire EEPROM 
-3: loader Charger un nouveau exécutable (hex) dans la mémoire de programme Flash +**3: loader** Charger un nouveau exécutable (hex) dans la mémoire de programme Flash 
-4: runcode Lancer le programme utilisateur (si il est chargé) +**4: runcode** Lancer le programme utilisateur (si il est chargé) 
-5: dumpee Envoie les 256 octets Eeprom vers l'usart +**5: dumpee** Envoie les 256 octets Eeprom vers l'usart 
-6: togint Basculement de l'autorisation globale des interruptions GIE +**6: togint** Basculement de l'autorisation globale des interruptions GIE 
-7: runmain Lancement en 1800H (moniteur complet lance PIC Skypic-down)+**7: runmain ** Lancement en 1800H (moniteur complet lance PIC Skypic-down)
  
 Pour comprendre le moniteur, nous devons connaître les fichiers exécutables .hex. Ces fichiers sont des fichiers textes, qui reprennent le format Hex Intel, dont chaque ligne est un enregistrement dont le codage est donné ci -dessous : Pour comprendre le moniteur, nous devons connaître les fichiers exécutables .hex. Ces fichiers sont des fichiers textes, qui reprennent le format Hex Intel, dont chaque ligne est un enregistrement dont le codage est donné ci -dessous :
-Les six champs de l'enregistrement Hex sont décrits comme suit: 
-: Longueur de l'enregistrement Adresse Type Code/Données Somme de contrôle (Checksum) 
  
 +===== Les six champs de l'enregistrement Hex sont décrits comme suit: =====
  
- +| : | Longueur de l'enregistrement | Adresse | Type | Code/Données | Somme de contrôle (//Checksum//) | 
-Champ  Longueur (caractères)  Contenu +\\ \\ 
-Début d'enregistrement  Les deux points (:) sont utilisés comme indicateur de début d'enregistrement +| **Champ ** | **Longueur (caractères)** | **Contenu** | 
-Longueur de l'enregistrement  Nombre de paires de caractères dans le champ Code/Données +Début d'enregistrement Les deux points (:) sont utilisés comme indicateur de début d'enregistrement | 
-Adresse  Les deux octets indiquant l'adresse à laquelle l'information du champ Code/Données est chargée. +Longueur de l'enregistrement Nombre de paires de caractères dans le champ Code/Données | 
-Type d'enregistrement  Type d'enregistrement (00 ou 01) selon qu'on a un enregistrement de données type 0 ou de fin de fichier type 1. +Adresse Les deux octets indiquant l'adresse à laquelle l'information du champ Code/Données est chargée. | 
-Code/Données  0-2n  De 0 à n octets de code et/ou des données chargeables en mémoire. L'AS met au maximum 32 octets (64 caractères) dans ce champ. +Type d'enregistrement Type d'enregistrement (00 ou 01) selon qu'on a un enregistrement de données type 0 ou de fin de fichier type 1. | 
-Somme de contrôle Checksum  Ce champ contient l'octet le moins significatif du complément à deux de la somme des données des champs 'Longueur de l'enregistrement','Adresse', 'Type d'enregistrement' et 'Code/Données'.+Code/Données 0-2n De 0 à n octets de code et/ou des données chargeables en mémoire. L'AS met au maximum 32 octets (64 caractères) dans ce champ. | 
 +Somme de contrôle //Checksum// | Ce champ contient l'octet le moins significatif du complément à deux de la somme des données des champs 'Longueur de l'enregistrement','Adresse', 'Type d'enregistrement' et 'Code/Données'. |
  
 Chaque enregistrement est terminé par un retour de chariot (13 dans le code ASCII). Chaque enregistrement est terminé par un retour de chariot (13 dans le code ASCII).
- +\\ \\
- +
 Cas particulier du PIC 16F877, (PIC14 la flash contient 8K mots de 14 bits, chaque mot prend 2 octets) Cas particulier du PIC 16F877, (PIC14 la flash contient 8K mots de 14 bits, chaque mot prend 2 octets)
  
 Exemple deux lignes du moniteur :103FE000080099270317831203178D0A03198F0AF4 Exemple deux lignes du moniteur :103FE000080099270317831203178D0A03198F0AF4
- 10h  3FE0h  00h  08h 00 99 27 03 17 83 12 03 17 8D 0A 03 19 8F 0Ah  F4h + 
-ligne  Longueur de l'enregistrement 16 octets, 32 caractères  Adresse à divisé par 2 soit ici 1FF0h  Type enregistrement données  Code/Données voir dessous  Somme de contrôle (Checksum)+10h 3FE0h 00h 08h 00 99 27 03 17 83 12 03 17 8D 0A 03 19 8F 0Ah F4h | 
 +ligne Longueur de l'enregistrement 16 octets, 32 caractères Adresse à divisé par 2 soit ici 1FF0h Type enregistrement données Code/Données voir dessous Somme de contrôle (//Checksum//|
  
 contenu de 1FF0h 08 poids faible et 00 poids fort soit 0008, contenu 1FF1h=2799, [1FF2h]=1703, [1FF3h]=1283, [1FF4h]=1703, [1FF5h]=0A8D,[1FF6h]=1903,[1FF7h]=0A8F contenu de 1FF0h 08 poids faible et 00 poids fort soit 0008, contenu 1FF1h=2799, [1FF2h]=1703, [1FF3h]=1283, [1FF4h]=1703, [1FF5h]=0A8D,[1FF6h]=1903,[1FF7h]=0A8F
  
 :00000001FF :00000001FF
- 00  0000  01  rien  FF + 
-début ligne  Longueur de l'enregistrement 00 mots,00 octets, 00 caractères  Adresse à divisé par 2 soit ici 0000h  Type enregistrement fin de fichier  Code/Données  Somme de contrôle (Checksum)+00 0000 01 rien FF | 
 +début ligne Longueur de l'enregistrement 00 mots,00 octets, 00 caractères Adresse à divisé par 2 soit ici 0000h Type enregistrement fin de fichier Code/Données Somme de contrôle (//Checksum//|
  
 Remarque la somme de la ligne est nulle 01+FF=00 modulo 100h, c'est aussi vrai pour toutes les lignes la somme avec le cheksum d'une ligne est nulle modulo 100h. Remarque la somme de la ligne est nulle 01+FF=00 modulo 100h, c'est aussi vrai pour toutes les lignes la somme avec le cheksum d'une ligne est nulle modulo 100h.
  
-Si vous voulez voir un fichier hex, voici celui du ventilateur : ventilo1.hex +Si vous voulez voir un fichier hex, voici celui du ventilateur : [[http://per.launay.free.fr/pik_digor/sdcc/liberlab_pic/ventilo1.hex|ventilo1.hex]] 
-Pratique : graver un simple programme utilisateur+ 
 + 
 + 
 +==== Pratique : graver un simple programme utilisateur ====
  
 Cas 1 : vous avez un programme utilisateur dans le PIC que vous voulez lancer. Cas 1 : vous avez un programme utilisateur dans le PIC que vous voulez lancer.
Ligne 103: Ligne 105:
  
 Sélectionner alors le fichier exécutable .hex de votre choix et valider, il se charge alors puis s'exécute. Sélectionner alors le fichier exécutable .hex de votre choix et valider, il se charge alors puis s'exécute.
-Le Moniteur et le Format Hex+ 
 +==== Le Moniteur et le Format Hex ====
  
 La fonction principale du moniteur est de charger un programme utilisateur au format hex. La fonction principale du moniteur est de charger un programme utilisateur au format hex.
Ligne 135: Ligne 138:
 8)Retour en 1). 8)Retour en 1).
 Le programme sort normalement en 4, quand le type d'enregistrement vaut 1. Le programme sort normalement en 4, quand le type d'enregistrement vaut 1.
-Algorigramme du moniteur 
  
-Vous trouverez ici une partie de l'algorigramme du moniteur et la source algorithme du moniteur en OpenOffice Dessin+==== Algorigramme du moniteur ====
  
-Vous voulez rentrer dans les détails, lisez les sources écrites en assembleur et commentées en anglais évidemment !+Vous trouverez ici une partie de [[moniteur_algo|l'algorigramme du moniteur ]] et la source [[http://per.launay.free.fr/pik_digor/doc/MONITEUR.odg| algorithme du moniteur]] en OpenOffice Dessin 
 + 
 +Vous voulez rentrer dans les détails, lisez [[http://per.launay.free.fr/pik_digor/moniteur/| les sources ]]écrites en assembleur et commentées en anglais évidemment !
  
 Le moniteur a été entièrement écrit en assembleur et compilé avec gpasm, pour une raison simple l'assembleur est le langage qui prend le moins de place, celui fait 768 octets. Le moniteur a été entièrement écrit en assembleur et compilé avec gpasm, pour une raison simple l'assembleur est le langage qui prend le moins de place, celui fait 768 octets.
Ligne 150: Ligne 154:
  
 L'ensemble des fonctions sont dans un fichier symbol-table.inc L'ensemble des fonctions sont dans un fichier symbol-table.inc
-Compatibilité des programmes.+ 
 +==== Compatibilité des programmes. ====
  
 Nous allons travailler sous GNU Linux avec le moniteur mais les programmes utilisateur écrit en C doivent être standard, c'est à dire que le même programme pourra être chargé avec un programmateur et sur n'importe quel système d'exploitation. Nous allons travailler sous GNU Linux avec le moniteur mais les programmes utilisateur écrit en C doivent être standard, c'est à dire que le même programme pourra être chargé avec un programmateur et sur n'importe quel système d'exploitation.
Ligne 171: Ligne 176:
  
 Les interruptions ne sont pas concernées car le moniteur ne les utilise pas. Les interruptions ne sont pas concernées car le moniteur ne les utilise pas.
- 
  
pic/moniteur.1229896721.txt.gz · Dernière modification: 2008/12/21 22:58 par per