Le Bootloader USB Diolan

Créé le :
dimanche 3 juillet 2011
Révisé le :
dimanche 18 décembre 2016

 

3- La configuration du firmware bootloader :

C'est parti, ouvrons le firmware de ce bootloader dans MPLAB.

La version X de MPLAB est disponible mais n'intègre pas encore les instructions étendues nécessaires au bootloader Diolan. Vous devrez donc rester avec un MPLAB v8.xx

La première chose a faire est de lancer une compilation pour vérifier que tout ce passe bien. Si ce n'est pas le cas il vous faudra probablement indiquer quelques options de compilation. Ça se passe dans "Project / Build options / Project", notament dans l'onglet "MPASM / C17 / C18 Suite" il faudra cocher l'option "Extended Mode", vous aurez peut-être aussi à gerer les répertoires de travail. Si vous rencontrez d'autres erreurs, demandez a Google !

Une fois que l'étape de compilation est validée, vous devrez passer à la personnalisation des options pour qu'elles collent à votre projet.

Le fichier Makefile est une belle source de confusion, alors si vous n'êtes pas à l'aise avec son utilisation (c'est mon cas aussi !) je vous conseille de le supprimer, tout simplement.

 

Configurer la cible :

Le firmware est configuré pour tourner sur un PIC18F4455, si vous souhaitez utiliser un autre µcontrôleur dans le menu "Configure" vous devrez modifier le "Device", fournir le bon fichier header, et ajuster les includes du code. Bref c'est du classique, si vous êtes en difficulté à cette étape vous trouverez de l'aide sur le web, n'en doutez pas !

 

Les bits de configuration :

Nous sommes dans le cadre d'un bootloader, donc comprenez bien que la configuration que vous définissez ici sera la seule utilisée par votre PIC, même votre firmware-application en héritera.
Réalisez donc les réglages, dans le fichier boot.asm, qui conviennent pour votre application, mais en faisant attention a laisser l'utilisation des Instruction étendues à ON (XINST = ON), et veillez à la protection du code (CPx, WRTx, EBTRx).

 

Vid et Pid :

Dans le fichier usb_desc.inc, lignes 22 et 25, vous devrez renseigner vos propres identifiants.
Si vous n'en avez pas vous pouvez réutiliser - a titre expérimental - ceux de Microchip™, mais attention si vous souhaitez diffuser votre produit il vous faudra des Vid et Pid officiels.

 

Descripteurs texte :

Dans le fichier usb_desc.asm, lignes 138 et suivantes, vous pouvez personnaliser le nom du fabricant et du produit. Notez le caractère ";" en ligne 142, il est là pour écourter la chaîne de caractères.
Je vous avoue ne plus trop avoir en tête la raison précise de sa présence, mais il me semble que si la chaîne est plus grande on observait au moins un bug, si ce n'est un plantage. A vérifier !

 

Le code de cryptage XTEA :

Dans le fichier xtea.asm, ligne 50, se trouve le code qui protège vos transferts. Il est important de le personnaliser, vous devrez renseigner une suite de 16 octets. Notez bien votre code, il vous sera nécessaire lorsque vous crypterez vos firmware-application. J'ai lu a certains endroits sur la toile des difficultés avec les caractères minuscules, donc si vous rencontrez des problèmes : passez vos lettres en majuscules.

 

Indication par LED :

Dans le fichier io_cfg.inc dé-commentez ou commentez la ligne 23 pour l'utilisation ou non de l'allumage d'une LED pour indiquer le fonctionnement du bootloader. Lignes 26 et 27 renseignez le port et la ligne sur laquelle votre LED est connectée.

Veillez aussi a configurer le niveau logique a envoyer sur le port de la LED, par défaut il est envoyé un 0 pour l'allumage.
Si vous souhaitez l'inverse, il s'agit de modifier le fichier boot.asm en ligne 191, et de remplacer le "bcf" par un "bsf" :

bsf LED, LED_PIN

 

Mode de démarrage :

A chaque démarrage du PIC (reset ou autre), le bootloader vérifie s'il doit lancer le mode bootloader ou lancer votre firmware-application. Vous disposez de deux possibilités pour démarrer en mode bootloader.

  • Démarrage par hardware : dans le fichier io_cfg.inc commentez ou non la ligne 31 pour démarrage par un bouton poussoir (par exemple). Le bootloader vérifie l'état de l'entrée configurée en lignes 34 et 35.
  • Démarrage par software : le bootloader vérifie l'état d'un octet contenu en EEPROM, si celui-ci correspond alors le bootloader démarre en mode bootloader. Dans le fichier boot.inc, commentez ou non la ligne 37 pour utiliser ce mode de démarrage, puis ligne 38 indiquez l'adresse en EEPROM où sera enregistré la "marque", et ligne 39 la valeur qu'e devra avoir cette marque pour brancher sur le bootloader. Cette option donne la possibilité a votre firmware-application de démarrer en mode bootloader, pas mal non ?

Correction d'un bug :

Dans le fichier boot.asm s'est glissé une coquille qui empêche le bon démarrage du bootloader. Il suffit juste d'intervertir les lignes 146 et 147, voici le code corrigé :

131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
  ; Decide what to run bootloader or application
#if USE_EEPROM_MARK
  ; Check EEPROM mark
  movlw  EEPROM_MARK_ADDR
  movwf  EEADR
  movlw  0x01
  movwf  EECON1
  movlw  EEPROM_MARK
  subwf  EEDATA, W
  bz  bootloader
#endif
  ; Check bootloader enable jumper
#ifdef USE_JP_BOOTLOADER_EN
  setf  JP_BOOTLOADER_TRIS
  btfsc  JP_BOOTLOADER_PORT, JP_BOOTLOADER_PIN
#endif
  goto  APP_RESET_VECTOR  ; Run Application FW
  ; Run bootloader
  bra  bootloader
  reset

 

Nous en avons fini avec le bootloader, vous pouvez compiler et griller votre PIC, et passer a l'adaptation de votre firmware-application...

Connexion :

Mon flux Mastodon :

  • Hello les #bidouilleurs×eusesEst-ce qu'une tête thermostatique de radiateur fonctionne uniquement en ouvert/fermé ou y en a t-il des proportionnelles ?Je cherche à faire le bon choix d'achat pour ma future #domotique pilotée par #homeassistant de mes #radiateurs #zigbee et #matter.

  • salut les mordus de #domotique,Comment ça marche le #zigbee ?Est-ce qu'un appareil peut communiquer en dehors du réseau local ? Genre : peut-il transmettre à l'extérieur des infos concernant son utilisation ?Je me demande ça car les appareils wifi eux se connectent souvent à leurs fabricants pour pouvoir être pilotés avec l'app que tu installes sur ton phone.Et j'aime pas[…]

  • Je viens de découvrir un site EXTRA pour non seulement avoir les paroles mais aussi les explications de textes. Époustouflant !Voilà de quoi il s'agit :https://genius.com/8527263

  • Passer de #cyanogem à #LineageOs : done! Grâce à :https://tuxicoman.jesuislibre.net/2017/02/passage-de-cyanogen-a-lineageos.htmlMerci ! 👍

logo-mail2voice-248x77 ecf67

Mail2Voice est un logiciel libre (et gratuit) pour envoyer et recevoir des mails sans savoir ni lire ni écrire.
Il s'agit d'un client de mail dédié principalement à des personnes en situation de handicap cognitif et/ou d'illettrisme.

Les messages sortants sont traités par enregistrement audio (pièce jointe mp3), et messages entrants sont lus par une synthèse vocale. Les contacts du carnet d'adresses sont accessible par photo.

Lire la suite...

Je soutiens la neutralité du Net !

logo la quadrature du net

À propos de moi :

En savoir plus sur ma pomme...

Je signe et chiffre mes emails : PGP: 9613 7EB1

Suivez-moi :

logo RSS  logo Mastodon