Étape 4: Créer le script d’upload
Maintenant nous avons besoin de la magie. Comment voulez-vous faire tous ces trucs de fantaisie que le GUI Arduino fait avec un FTDI ou USB de la carte Arduino ? La réponse, comme je l’ai suggéré, est avrdude, et vous pouvez l’installer avec « apt-get install avrdude » sur ubuntu et « ipgk install avrdude » sur Angstrom (je pense que, s’il vous plaît corrigez-moi si c’est incorrect). Mais cela ne suffit pas. Si nous utilisons USB, avrdude gérera activant/désactivant qui réinitialiser pour nous et de prendre soin de tout le calendrier lui-même. TTL série nous ne donne aucun un tel luxe, donc nous avons un joli script en 2 ligneLigne 1 :
(echo 0 > /sys/class/gpio/gpio49/value & & sleep 0,9 & & echo 1 > /sys/class/gpio/gpio49/value) &
Ceci définit l’axe faible, dort pendant 0,9 secondes, puis définit la goupille élevée. Le tout est en () afin qu’il devienne est une applet de commande unique. & à la fin se fond l’applet de commande, lui permettant d’exécuter dans son propre thread/processus, fondamentalement il fourche. Cela permet la remise à zéro se produise chronométré afin qu’avrdude démarrage, lisez le fichier hex et début ping pour le chargeur de démarrage. La 0,9 seconde que je suis arrivé à par tâtonnements, vous devrez peut-être régler cela.
Ligne 2 :
avrdude - ch. arduino -p m328p - v - v - v - v -P/dev/ttyO2 - U flash:w:serial_echo.cpp.hex
Il y a beaucoup de choses ici et je vous laisse lire le manuel d’avrdude pour les détails graveleux, mais c’est essentiellement cela :
programmer un arduino avec un 328p, être très verbeux, utilisez serial_echo.cpp.hex et ttyO2 de port série.
une fois que vous obtenez tout ce travail, vous pouvez supprimer certains - v pour réduire le niveau de détail.
Dans le guide précédent, j’ai mentionné que le BB comme 4 ports série TTY. Il réel a 6, ttyO0-5 (c’est une lettre majuscule O), mais seulement 4 sont utilisables sur les broches GPIO. Ce sont ttyO1, ttyO2, ttyO4 et ttyO5, qui correspond idéalement à Serial1, Serial2, Serial4 et Serial5.
Si vous exécutez cette 2e ligne en soi, vous verrez la fin de la sortie avec :
avrdude : envoyer: 0 [30] [20]
avrdude : envoyer: 0 [30] [20]
avrdude : envoyer: 0 [30] [20]
{longue pause}
avrdude : ser_recv() : programmeur ne répond pas
avrdude : stk500_recv() : programmeur ne répond pas
avrdude fait. Merci.
La clé est de voir le temps de sommeil dans la ligne1, afin que le bootloader Arduino répond à l’une de ces 3 départs. choses difficiles !
Voici mon script complet upload.sh, placez-le dans le même dossier, vous mettez le fichier hex et marquez-le exécutable (chmod a + x upload.sh) :
#! / bin/bash
(echo 0 > /sys/class/gpio/gpio49/value & & sleep 0,9 & & echo 1 > /sys/class/gpio/gpio49/value) &
avrdude - ch. arduino -p m328p - v - v - v - v -P/dev/ttyO2 - U flash:w:serial_echo.cpp.hex