[résolu] Créer flasher un bootloader sur minipro pour eviter que d13 passe a 1

Bonjour,

j'ai dans mon projet une carte chinoise appelée pro mini.
je compile et transfère avec l'arduino en mode :
Arduino Pro or Pro Mini ATmega328p (5V,16 MHz)
et je n'ai pas a m'en plaindre puisque ca marche !

le lien pour être d'accord sur le type de carte
https://www.ebay.fr/itm/Pro-Mini-Atmega328P-5V-16M-Optionnel-Arduino-Pro-Mini-Compati-FE/233269065055?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2060353.m2749.l2649

évidemment lors du boot la fameuse LED D13 clignote ! et évidemment je veux pas !

JE NE VEUX PAS QUE D13 PASSE A 1 LORS DU BOOT
mise en gras et rouge pour bien préciser le problème

quelle soit en sortie a l’état bas me conviendrait parfaitement.

Je ne souhaite pas recommencer les éternelles discussion sur l'utilité ou le changement de carte et blabla déjà entendu mille fois.
(j'ai lu toutes les discussion et fait des recherches un peu partout) dont celle ci.

Toutes je dis bien toutes les broches entrées et sorties de ma carte sont utilisées !

je détecte un signal RC PASSE A par interruption sur a0-a3 LORS DU BOOT
a4 a5 sont en sortie a6 a7 en entrées logique (avec tirage et détection du seuil) j'ai 8 sorties led et 4 PWM une carte Bluetooth sur rx/tx

Il ne me reste rien ! c'est juste suffisant mais suffisant ! et ça fonctionne très bien.


Donc après lecture de plein de truc un peu partout voici les questions:

  1. noLED_optiboot_atmega328.hex de al1fch est t'il compatible avec ma carte ?

j'en doute car dans le board.txt dans la section mini pro j'ai : pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex
je suppose que lors du flash du boot le programme va chercher cette ligne et flash ce fichier ?

je dois dire que malgré toutes mes lectures y a vraiment rien de bien clair la dessus !

  1. si c'est compatible est ce qu il faut remplacer ATmegaBOOT_168_atmega328_pro_8MHz.hex par noLED_optiboot_atmega328.hex en le renommant ?

  2. si pas compatible comment je peux créer un compatible a partir des fichiers dispos dans bootloaders
    (évidemment je sais qu il va falloir modifier et compiler en ligne de commande mais quoi ? comment ? quitte a créer un dossier spécialement pour ça et y copier tous les fichiers utilisés.)

  3. je dispose d'un USBasp (chinois de marque betemcu) j'ai réussi a installer tant bien que mal un driver sur w10 mais la carte n'apparait pas en com

quand je le branche pas j'ai

Erreur lors de la gravure de la séquence d'initialisation.
avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor='www.fischl.de' product='USBasp'

quand il est branché : ( SANS METTRE DE CARTE EN SORTIE)

avrdude: warning: cannot set sck period. please check for usbasp firmware update.
avrdude: error: program enable: target doesn't answer. 1
avrdude: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check.

Erreur lors de la gravure de la séquence d'initialisation.

question : Il semble reconnu malgré qu'il n'apparaisse pas en com ?? non ??


voilà pour cette première vague de questions

merci de votre attention si vous êtes arrivés jusqu'ici et des réponses que vous voudrez bien m'apporter.

jfs59:
question : Il semble reconnu malgré qu'il n'apparaisse pas en com ?? non ??

Bonjour,

L'usbasp n'apparait pas dans les ports com. Le programme y accède sans création de port virtuel.

Merci beaucoup

donc question 4 cela semble réglé !

hello

si c'est simplement le fait que la led D13 s'allume, pourquoi ne pas couper sa piste tout simplement.

bonjour

je suis mdr ...

sur les 8 sorties dont la d13 j'ai 8 led et elles sont relayée par un ULN sur 8 sorties .....

je ne veux pas éteindre artificiellement cette led je veux que la sortie ne passe pas a 1 lors du boot. donc modifier la fonction de clignotement.

dfgh:
si c'est simplement le fait que la led D13 s'allume, pourquoi ne pas couper sa piste tout simplement.

Ou la shunter ?

Bon mea-culpa !

en tant qu'ancien prof en retraite je devrais savoir que la réponse a une question dépend fortement de la question posée et un intitulé mal rédigé donne une réponse a coté de la plaque ! je suis donc responsable
j'essaye de changer l'intitulé et j édite le texte !
ça sera peut erre plus explicite mais moins "parlant"

merci

Dans ton cas (5V 16MHz) ce serait plutôt :
pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

Le chargement d'un OptiBoot pourrait régler le problème de la LED car dans le source je vois une constante LED_START_FLASHES qui vaut ZÉRO. Par contre dans le Makefile je vois
atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'.
Une modification du Makefile s'impose.

Ensuite il faut ajouter le chemin de avr-gcc dans les chemins de recherche PATH.
Chez moi (Linux) j'ai fait ceci :
export PATH=$PATH:../../../../../tools/avr-gcc/5.4.0-atmel3.6.1-arduino2/bin
Si tu travailles sous Windows, tu vas bien trouver comment faire.

Toujours sous Windows il faudra installer GNU Make pour Windows.
Peut-être ici : Make for Windows
Sous Linux, pas besoin d'installer qui que ce soit, c'est "in the box".
Il faut bien qu'il y ait certains avantages à ne pas travailler sous Windows :grin:

Ensuite tu lances :
make atmega328

boards.txt pour une carte 16MHz :
pro.menu.cpu.16MHzatmega328.bootloader.file=optiboot/optiboot_atmega328.hex

Je suis sous IDE 1.8.5. Il se peut bien entendu que pour ton installation IDE les chemins soient différents.

J'oubliais : pour que la compilation se fasse :

make clean avant tout

riton@alpha:/mnt/sdc1/riton/.arduino15/packages/arduino/hardware/avr/1.6.207/bootloaders/optiboot (copie 1)$ make clean
rm -rf *.o *.elf *.lst *.map *.sym *.lss *.eep *.srec *.bin *.hex
riton@alpha:/mnt/sdc1/riton/.arduino15/packages/arduino/hardware/avr/1.6.207/bootloaders/optiboot (copie 1)$ make atmega328
avr-gcc -g -Wall -Os -fno-inline-small-functions -fno-split-wide-types -mshort-calls -mmcu=atmega328p -DF_CPU=16000000L '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -c -o optiboot.o optiboot.c
avr-gcc -g -Wall -Os -fno-inline-small-functions -fno-split-wide-types -mshort-calls -mmcu=atmega328p -DF_CPU=16000000L '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200' -Wl,--section-start=.text=0x7e00 -Wl,--section-start=.version=0x7ffe -Wl,--relax -Wl,--gc-sections -nostartfiles -nostdlib -o optiboot_atmega328.elf optiboot.o
avr-size optiboot_atmega328.elf
text data bss dec hex filename
542 0 0 542 21e optiboot_atmega328.elf
avr-objcopy -j .text -j .data -j .version --set-section-flags .version=alloc,load -O ihex optiboot_atmega328.elf optiboot_atmega328.hex
avr-objdump -h -S optiboot_atmega328.elf > optiboot_atmega328.lst
rm optiboot.o optiboot_atmega328.elf

Bonjour

argg … j’ai pas cc la bonne ligne évidemment (j’ai édité)

pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

dont acte. merci

donc voila l’optiboot deja présent sur le fil référencé est il compatible ou pas ?

pour le reste pour moi c’est du chinois ! et encore du chinois avec gogole trad je pourrais a la limite me dépatouiller …

Si le clignotement de la led te gène (en fait j'ai bien compris que ce qui te gène c'est que la sortie bagotte durant le démarrage), tu peux te passer de bootloader et charger ton programme directement avec l'usbasp.

Bien sûr kamill, ce serait encore meilleur.

oui et je supprime toute possibilité de charger par usb ftdi et donc sur la plaquette finale faut démonter la carte micro pour faire une maj .... donc pas top évidemment j'y avais pensé .
actuellement je peux faire une maj en utilisant le connecteur de ma carte bluetooth ou directement sur les connecteur ftdi de la carte micro
j'ai retourné le problème dans tous les sens depuis le début du projet (il y a un an)

Il faudrait savoir si tu parles d'une MICRO ou d'une PRO MINI (dans le titre).

Avec une PRO MINI enfichée sur une carte c'est sûr que ce n'est pas pratique, le connecteur ICSP étant absent.

Si tu veux une mise à jour par ligne série, voir #8.

donc voila l'optiboot deja présent sur le fil référencé est il compatible ou pas ?

A priori je dirait que oui, mais il faut modifier Makefile :

atmega328: CFLAGS += '-DLED_START_FLASHES=3' '-DBAUD_RATE=115200'
remplacer par :
atmega328: CFLAGS += '-DLED_START_FLASHES=0' '-DBAUD_RATE=115200'

Le bootloader ne se compile pas avec l'IDE mais avec GNU make. Voir #8.
Je sais ce n'est pas très simple mais je peux difficilement expliquer plus simplement.

Bon la encore je n'ai pas utilisé la bonne terminologie

carte micro dans mon esprit signifiait carte microcontrôleur ... donc c'est bien une PRO MINI dont il s'agit sans usb ni connecteur ICSP

pour le boot compatible je parlais du boot déjà recompilé par al1fch

noLED_optiboot_atmega328.hex trouvé dans le fil https://forum.arduino.cc/index.php?topic=113147.0 a priori il avait fait la modif nécessaire.

je vais pas refaire le monde si ça marche ça marche ...

donc a priori

  1. si je remplace le fichier

pro.menu.cpu.16MHzatmega328.bootloader.file=atmega/ATmegaBOOT_168_atmega328.hex

par le noLED_optiboot_atmega328.hex en le renommant est ce une bonne méthode ?

  1. dans le pire des cas je peux faire marche arrière en renommant les deux fichiers ?

merci

Bonsoir
j'ai complètement oublié les manips de modification de bootloaders....(2012 c'est loin!!)
La motivation n'est plus ce qu'elle était !!
je ne sais plus faire mais il me semble que ça fonctionnait ces 'retouches légères de bootloaders'

bonsoir,

et donc tu ne sais pas si ton fichier a des chances d’être compatible ?

en tous cas merci car y a pas grand chose la dessus nulle part ! et c'est encore ce que j'ai trouvé de mieux comme explications.

pour répondre il faudrait se ‘remettre dans le bain’"… peu probable ces temps-ci !!
Le mieux est d’essayer la substitution proposée = désigner le bootloader alternatif dans boards.txt

Je me rappelle que les premiers tests étaient timides mais OK , ils consistaient juste à réduire le nombre d’éclats de LED avant de quitter le bootloader, pour se faire la main.

Je me rappelle vaguement également des modifications de bootloaders de Leonardo pour la faire passer pour une Teensy2

ok donc renommer dans boards.txt plutôt que les fichiers.

et oui dans le fil a la fin il y a confirmation que ça fonctionne.
donc si j’arrive a supprimer le clignotement et que je peux toujours utiliser l’usb ftdi pour moi c’est bon.

merci

ok donc renommer dans boards.txt plutôt que les fichiers.

relecture rapide du fil de discussion de 2012 (en particulier les message #26 et #29)

Le nombre d'éclats de led (éventuellement 0) pour le bootloader optiboot se définit par une directive de compilation
et non dans le code source du bootloader.

DLED_START_FLASHES=0

C'est donc une modification peu intrusive
NB : C'est la modification que hbachetti vient de proposer aujourd'hui dans ce fil de discussion (message #13)

La ligne de board.txt renseignant le bootlader à implanter doit pointer vers le fichier .hex du bootlader alternatif (renommé ou non)

Je n'aurai pas mis en pièce jointe le booloader 'noled' s'il n'avait pas fonctionné en 2012
Il a été compilé à l'époque avec 0 pour le nombre d'éclats de led, rien d'autre

Le test avait été fait sur une carte UNO avec le bootloader optiboot