Peu après le lancement de la famille PIC18F, Microchip rendit disponible un bootloader pour PIC16F/PIC18F. Ce bootloader comporte des caractéristiques intéressantes. Il tient dans l'espace réservé au secteur "boot" qui peut être protégé indépendemment du code d'application. Il supporte aussi une vaste gamme de microcontrôleur PIC à des fréquences d'exécution et vitesse de transmission variées, ce que je n'avais pas trouvé dans d'autres "bootloaders". Et en plus, il est gratuit!
Cependant, ce "bootloader" ne contient pas toutes les fonctions que je désire. Je veux pouvoir transférer le contrôle automatiquement au code application si au démarrage le "bootloader" n'était pas stimulé. Je veux aussi pouvoir reprogrammer le microcontrôleur en une seule opération (le "bootloader" de Microchip demande d'effacer toute la mémoire flash avant de reprogrammer). Finalement, je veux aussi pouvoir modifier le registre de Config et les données EEPROM à travers l'application du "bootloader".
C'est ce qui m'a mené à créer le "bootloader" Jolt. Le "bootloader" Jolt comprend deux composantes: une application fonctionnant sur un PC ou une station Unix et la partie du "firmware" (secteur boot) se trouvant sur le microntrôleur.
25 août 2005: Lancement de la version 1.2 de l'application bootloader. Offre maintenant la possibilité de télécharger directement de la ligne de commande.
12 mars 2005: Lancement de la version 1.1 de l'application bootloader et de la version 0.12 du firmware pour les modèles ayant un bloc boot de 2048 octets. Correction d'un problème de lecture des bits Config pour les fichiers HEX générés par le compilateur HI-TECH.
17 août 2004: Lancement de la version 1.0 de l'application bootloader et de la version 0.12 du firmware pour PIC18F1X20. Ajout du support de multiples modèles PIC18F ainsi que la spécification des bits de Configuration pour chaque modèle à l'aide du fichier PicDevices.properties.
14 mai 2004: Lancement de la version 0.1 de l'application de bootloader Colt. Cette version compacte ne requiert pas le Java Runtime Environment. Voir la page Web Colt.
18 novembre 2003: Lancement de la version 0.9 de l'application bootloader. Corrige le problème d'allocation de port (pour vrai). Nouvelle méthode de détection des PIC18FXX39. Modification de la configuration des bits de Config des nouveaux modèles.
18 septembre 2003: Lancement de la version 0.8 de l'application bootloader. Corrige le problème de chargement de données EEPROM. Corrige le problème d'allocation de port. Traduction de l'interface au français. Support de plusieurs nouveaux modèles.
30 août 2003: Lancement de la version 0.7 de l'application bootloader. Corrige le problème de démarrage pour les modèles PIC18FXX20. Ajustement des bits de Config pour les modèles PIC18FXX20.
23 juillet 2003: Ajout d'un schéma montrant comment interfacer un PIC muni du firmware du bootloader à un PC.
20 juillet 2003: Lancement de la version 0.6 de l'application bootloader. Ajout d'un menu pour accéder aux fichiers récents. Correction du problème avec le filtre du dialogue de chargement de fichiers. Ajout d'un fichier de configuration PIC. Création d'un installateur.
27 janvier 2003: Lancement de la version 0.5 de l'application bootloader. Corrige problème sous Linux. Corrige problème d'identification de Device ID pour la famille PIC18FXX8.
10 décembre 2002: Lancement de la version 0.4 de l'application bootloader. L'application comporte un menu d'aide.
2 décembre 2002: Lancement de la version 0.12 du firmware du bootloader. Il s'agit d'un changement mineur qui résoud les problèmes d'interaction avec certains contrôleurs de moteur (CCP1) dans le mode boot.
22 novembre 2002: Lancement de la version 0.3 de l'application bootloader. Corrige problème avec le chargement automatique et gestion de port. Test la version Linux. Ajout de texte d'aide dans la fenêtre Edit Config. Ajout de documentation pour installation sur Linux et description de comment relocaliser le code.
16 novembre 2002: Ajout d'une section de description des menus.
15 novembre 2002: Lancement de la version 0.2 de l'application bootloader et version 0.11 du firmware du bootloader. Ajout d'un délai de 2 seconde au démarrage. Ajout des options de chargement automatique et de l'application d'un reset après le téléchargement.
8 novembre 2002: Première version.
Le bootloader Jolt est basé sur le firmware du bootloader PIC16F/18F de Microchip. Le firmware du bootloader peut être écrit dans le secteur boot des microcontrôleurs de la famille PIC18F. Ce secteur boot peut être protéger de fa¸on indépendante du code d'application. Une particularité de ce bootloader est qu'il détecte automatiquement la fréquence d'horloge et la vitesse de transfert. Il n'est donc pas nécessaire d'avoir plusieurs .hex différents pour chaque combinaison de fréquence d'horloge et vitesse de transfert. J'ai de plus modifier le bootloader original de Microchip afin que le bootloader quitte le mode boot après un délai de 2 secondes s'il ne reçoit pas de commande boot. De cette façon, le bootloader est complètement transparent au code d'application.
J'ai de plus conçu une application bootloader pour faciliter le téléchargement et supporter les fonctions suivantes:
Voici quelques exemples de l'interface de l'application bootloader Jolt:
A partir de la version 1.1, Jolt requiert le JRE/J2SE 1.5 ou plus récent.
L'application de bootloader Jolt est une application Java. Pour
pouvoir l'exécuter, il faut au préalable installer le JRE ou le J2SDK de
ainsi que le "Java Communciations API" de Sun. Vous trouverez le JRE et le J2SDK sur la
page
Java 2 Platform Standard Edition Download. Si vous ne planifiez pas faire le développement d'applications Java, je
recommende l'installation du JRE (le J2SDK n'est utile que si vous désirez
écrire des applications Java).
Le "Java Communications API" est aussi disponible sur le site de Sun sur la page
Java Communications API. Voici les instructions d'installation pour le Java Communications
API (cet API ne posède pas de programme d'installation):
Sun fournit une version Linux du Java Communications API. Mais cette version n'est
compatible qu'avec RedHat AS 3.0 and Java Desktop System 3.0. Pour les autres
distributions de Linux, il faut utilisé le pilote
RXTX de Trent Jarvi.
Voici la marche à suivre pour installer la version 2.0 du pilote RXTX:
Il est à noter que la version 2.1 du pilote RXTX n'est pas compatible avec Jolt.
Si la version Linux du Sun Java Communications API est installée,
l'installation de la librairie RXTX n'est pas requise.
Une fois le JRE et les librairies "Java Communications API/RXTX" installées,
vous pourrez installer l'application de bootloader. Sur Windows,
lancez l'installateur JoltSetup.exe.
Pour Linux, extraire les fichiers Bootloader.jar et bootloader.hex
de l'archive Bootloader.zip sur votre
disque.
Pour partir l'application de bootloader, exécutez la commande suivante: Pour Windows: Pour Linux avec RXTX 2.0: à partir du répertoire où vous avez installer Jolt.
Pour tous les systèmes d'exploitation, il est possible de
télécharger un fichier directement de la ligne de commande en utilisant
la commande suivante:
L'option -r permet le reset du PIC après le téléchargement.
L'option -s force le PIC à rester en mode boot après le
téléchargement. L'option -h énumère les options
qui peuvent être utilisées en mode ligne de commande.
Pour utiliser le bootloader Jolt, il faut suivre les étapes suivantes:
Si le mode "Delayed" est actif, le microcontrôleur tombe en mode boot
au démarrage pendant deux secondes. Si aucune command boot n'est reçue, le bootloader redonne le contrôle au code d'application (saute à
l'adresse 0x0200 ou 0x0800 dépendamment du firmware utilisé).
Si le mode "User" est actif, vous devez fournir y\une façon pour
retourner en mode boot en écrivant la valeur 0xFF dans le dernier octet
du EEPROM. Autrement, il ne sera pas possible de revenir dans le mode boot.
Un fichier HEX (blink-led.hex) est inclus pour fin de test dans l'archive .zip.
Vous pouvez télécharger de programme avec l'application boot. Les LED
connectés aux broches B0 to B3 devraient commencer à clignoter une
fois que le code boot ait passé le contrôle au code application.
J'ai l'intention de supporter le bootloader Jolt de façon active. S'il y a
d'autres modèles PIC que vous aimeriez que je supporte ou vous avez des
suggestions de nouvelles fonctions, envoyez-moi un courriel.
Le code applicatif doit être relocalisé à l'adresse 0x0200 ou 0x0800
dépendamment du modèle et du firmware utilisé. L'adresse de
début du code applicatif dépend de la taille du bloc boot. Les premiers
modèles PIC18F avaient un bloc boot de 256 octets. La plupart des nouveaux
modèles ont un bloc boot de 1024 octets. Pour déterminer la taille du bloc
boot de votre microcontrôleur, vous pouvez consulter le fichier PicDevices.properties.
Si vous ne comptez pas protéger le bloc boot, il vous est toujours possible de
relocaliser le code applicatif à l'adresse 0x0200 même avec les modèles
ayant un bloc boot de 1024 octets, mais il faudra mettre l'entrée appropriée
à jour dans le fichier PicDevices.properties et il faudra utiliser le firmware
approprié (bootload.hex).
Ajoutez les directives suivantes dans votre code source .c:
Utilisez la directive du compilateur --ivt-loc 0x200.
Durant l'étape du link, utilisez la directive du linker -a200h.
Editez le script du Linker 18f452_c.lkr pour ptotéger
le secteur boot et rebâtir les objets de démarrage C18
c018.o and c018i.o. Assurez-vous que vous
n'avez pas défini d'adresse absolue faisant référence au
secteur boot dans votre code d'application. Par exemple:
doit être changé à
ou pour les modèles possédant un bloc boot de 2048 octets:
Le fichier include 18F452.inc (ou le fichier include approprié) doit aussi
être modifié. Dans la première ligne '__config', la directive "XT"
doit être remplacé par "HS" si les bits de configuration du PIC ne
sont pas modifiés pour utiliser le mode d'oscillateur XT.
Fichier
Ouvrir fichier Hex... Enregistrer fichier Hex Enregistrer fichier Hex sous... Edition
Config Données EEPROM Commande
Lecture Programmation Programmation Config Programmation EEPROM Data Vérification Exécution PropriÉtés
Mode boot Recharger avant programmation Reset après programmation Enable Program EEPROM Data Enable Program Config Notez que les touches CTRL-Home, CTRL-End, Page Up et Page Down permettent de
naviguer au début, à la fin, à la page suivante et précédente de l'espace réservé pour afficher le contenu
de la mémoire flash, des données EEPROM et des bits Config.
Le firmware du bootloader Jolt est basé sur le firmware du bootloader de
Microchip conçu par Ross Fosler. Le firmware de Microchip et l'application de
bootloader correspondante se trouvent sur la page de la note d'application
AN851.
Le firmware du bootloader et l'application du bootloader sont décrits
dans cette note d'application. Le code source est disponible dans l'archive zip sur cette
page.
Le firmware du bootloader Jolt est générique et devrait pouvoir
fonctionner avec d'autres modèles PIC.
Jolt supporte actuellement plus de 60 modèles PIC. Le support de nouveaux
microntrôleurs PIC peut être ajouté en modifiant le fichier
PicDevices.properties. Chaque entrée a le format suivant:
où DEVICE_NAME est utilisé pour décrire le
nom du microcontrôleur, DEVICE_ID pour identifier le Device ID, LO_PROGRAM et HI_PROGRAM pour définir l'espace programme
(adresse basse et haute) excluant le secteur boot. LO_EEPROM and HI_EEPROM
spécifient les adresses des données EEPROM. DEVICE_NAME est sous forme
décimale tandis que les autres champs numériques sont sous forme
hexadécimale.
Par exemple, l'entrée suivante décrit le PIC18F452:
Cette entrée informe l'application bootloader que
le PIC avec un Device ID de 67 est un PIC18F458 avec un espace
programme débutant à l'adresse 0x0200 et se
terminant à l'adresse 0x7FFF.
Ses données EEPROM sont enregistrées entre les adresses 0 et 0xFF.
Les bits de Configuration supportés et qui se retrouvent entre les adresses
0x300000 et 0x30000D sont les suivants: OSCSEN, FOSC20, BORV, BOREN, PWRTEN, WDTPS20,
WDTEN, CCP2MX, DEBUG, LVP, STVREN, CP3, CP2, CP1, CP0, CPD, CPB, WRT3, WRT2, WRT1, WRT0,
WRTD, WRTB, WRTC, EBTR3, EBTR2, EBTR1, EBTR0, EBTRB.
Pour me contacter, envoyez un courriel à l'usager mdubuc au domaine freeshell.org.
Nombre de visiteurs:
18846
Dernière mise-à-jour: Le 16 octobre 2006
PIC est une marque déposée de Microchip Technology Inc.
Windows
SET CLASSPATH=C:\PROGRA~1\JAVA\JRE1.5.0_06\LIB\EXT\COMM.JAR
(le CLASSPATH doit indiquer l'emplacement du JRE sur votre disque - modifier au besoin).
Pour les autres versions de Windows (NT, 2000, etc...), la variable d'environnement
CLASSPATH peut être modifiée en utilisant l'outil Système
du Panneau de configuration.
SET PATH=%PATH%;C:\PROGRA~1\JAVA\JRE1.5.0_06\BIN
(le PATH doit indiquer l'emplacement du JRE sur votre disque - modifier au besoin).
Pour les autres versions de Windows (NT, 2000, etc...), la variable d'environnement PATH peut être modifiée en utilisant l'outil Système du Panneau de configuration.
Linux
Pour Windows, démarrez l'exécutable Jolt ou lancez "Jolt PIC18F Bootloader"
à partir du menu "Démarrer" si n'avez pas sélectionné
l'option "Do not create shortcut" au moment de l'installation.
java -cp Bootloader.jar Bootloader
java -cp Bootloader.jar Bootloader [-r | -s] -[b<baud rate>] [fichier]
Utilisation
Comment relocaliser le code d'application
CCS
#build(reset=0x200)
#build(interrupt=0x208)
#org 0x0000,0x01ff
void bootloader() {
#asm
nop
#endasm
} // Reserve l'espace pour le bootloader
SDCC
PICC-18 d'HI-TECH
Microchip C18
#pragma code InterruptVectorHigh = 0x08
#pragma code InterruptVectorHigh = 0x208
#pragma code InterruptVectorHigh = 0x808
Ajouter la ligne suivante:
DEFINE RESET_ORG 200h
ou
DEFINE RESET_ORG 800h
Description des menus
Charger un fichier hex dans la tampon de mémoire. Si l'option
Reload before Program est sélectionnée, ce fichier est rechargé
avant chaque exécution de la commande Programmation.
Enregistrer le contenu du tampon de mémoire dans un fichier de destination
indiqué sur la barre titre de la fenêtre.
Enregistrer le contenu du tampon de mémoire dans un fichier de destination.
Edition des bits Config. Les changements sont conservés dans le tampon de m&ecute;moire et peuvent être transférer sur le PIC en utilisant
la commande Programmation des bits Config. Notez que lorsque la boîte est
crochetée, la valeur du bit Config bit est 1. Par exemple, si le bit CPB is
sélectionné, la valeur du CPB est 1 ce qui veut dire que le secteur boot
n'est pas protégé.
Edition des données EEPROM. Les changements sont sauvés dans le tampon de
mémoire et peuvent être actualiser sur le PIC en exécutant la
commande Programmation des données EEPROM.
Lire la mémoire du programme, des données EEPROM et des bits de Config et
copier cette information dans le tampon de mémoire. Il est possible de voir
le résultat de cette lecture dans l'espace réservé à cet
effet dans la fenére de l'application bootloader.
Programmer le PIC en utilisant le contenu du tampon de mémoire. Si
l'option Recharger avant programmation est sélectionnée, le contenu
du tampon
de mémoire est mis à jour avec la plus récente version du fichier
affiché sur la barre titre de la fenêtre avant l'exécution de la
commande. Si l'option Reset après programmation est
sélectionnée,
le PIC redémarre automatiquement après le téléchargement.
Programme les bits Config selon le contenu du tampon de mémoire.
Les options Recharger avant programmation et Reset après programmation
n'ont aucun effet sur cette commande.
Programme les données EEPROM selon le contenu du tampon de mémoire.
Les options Recharger avant programmation et Reset après programmation
n'ont aucun effet sur cette commande.
Comparer le contenu du tampon de mémoire avec le contenu du microcontrôleur.
Redémarrer le microcontrôleur. Il n'est pas nécessaire
d'exécuter cette commande aprés Programmation si l'option
Reset après programmation est s&eactionnée.
Indique le mode boot sélectionné. Délai est utilsé pour
maintenir le PIC dans le mode boot 2 secondes après le démarrage.
Contrôlé par le code application indique que le code d'application
gère le mode de démarrage du
PIC. Ce code doit être capable d'écrire la valeur 0
dans le dernier octet des données EEPROM (adresse 0xff) afin de
d'établir le transfert automatique du contrôle au
démarrage et 0xff pour rester en mode boot.
Lorsque cette option est sélectionnée, l'application bootloader
recharge le programme affiché sur la barre titre de la fenêtre avant
l'exécution de la commande Programmation.
Lorsque cette option est sélectionnée, l'application bootloader
redémarre le PIC après l'exécution de la commande Programmation.
Lorsque cette option est sélectionnée, l'application bootloader
programme les données EEPROM en plus du code application lorsque la commande
Program est exécutée.
Lorsque cette option est sélectionnée, l'application bootloader
programme les bits Config en plus du code application lorsque la commande
Program est exécutée.
Information sur l'origine du bootloader Jolt pour PIC18F
Microcontrôleurs testés
Voici la liste des modèles PIC testés avec le bootloader Jolt pour PIC18F.
PIC18F458=67,200,7fff,0,ff,OSCSEN,FOSC20,BORV,BOREN,PWRTEN,WDTPS20,WDTEN,CCP2MX,DEBUG,LVP,STVREN,CP3,CP2,CP1,CP0,CPD,CPB,WRT3,WRT2,WRT1,WRT0,WRTD,WRTB,WRTC,EBTR3,EBTR2,EBTR1,EBTR0,EBTRB
Pour me contacter