Stap 4: Maak het script uploaden
Nu moeten we de magie. Hoe doe je al die fancy dingen die de Arduino GUI doet met een FTDI of USB van de Arduino board? Het antwoord, zoals ik heb gezinspeeld, is avrdude, en kunt u deze installeren met "sudo apt-get install avrdude" op ubuntu en "ipgk geïnstalleerd avrdude" op Angstrom (denk ik, corrigeer me als dit onjuist is). Maar dit is niet genoeg. Als we gebruik maken van USB, zal avrdude behandelen die voor ons opnieuw en verzorgen van alle de timing zelf schakelen. TTL seriële geeft ons geen dergelijke luxe, dus we een mooi 2 lijn-script hebbenLijn 1:
(echo 0 > /sys/class/gpio/gpio49/value & & slapen 0.9 & & echo 1 > /sys/class/gpio/gpio49/value) &
Dit stelt de pin lage, slaapt 0.9 seconden, dan stelt de hoge pin. Het hele ding is in (), zodat het wordt is van een interne commandlet. De & aan het eind zal de commandlet, deze loopt in zijn eigen draad/proces, in feite forking het achtergrond. Hierdoor kan de reset getimede gebeuren zodat avrdude kunt opstarten, lees het hex bestand, en begin pingen voor de bootloader. De 0.9 seconde dat ik aankwam bij via vallen en opstaan, kunt u dit aanpassen.
Lijn 2:
avrdude - c arduino -p m328p - v - v - v - v -P/dev/ttyO2 - U flash:w:serial_echo.cpp.hex
Er is veel gaande is hier, en ik laat je de avrdude-handleiding voor de gritty details te lezen, maar het is eigenlijk dit:
programmeren van een arduino met een 328p, worden zeer uitgebreid, seriële poort ttyO2 en serial_echo.cpp.hex gebruiken.
Zodra u alle dit werkend te krijgen, kunt u sommige - v's om gegevens opnemen.
In de vorige gids ik heb gezegd dat de BB als 4 TTY seriële poorten. Het werkelijke heeft 6, ttyO0-5 (dat is een hoofdletter O), maar slechts 4 zijn bruikbaar op de GPIO pinnen. Dit zijn ttyO1, ttyO2, ttyO4 en ttyO5, die gemakshalve correspondeert met Serial1, Serial2, Serial4 en Serial5.
Voert u deze 2e lijn alle door haarzelf, ziet u het einde van de uitvoer met:
avrdude: stuur: 0 [30] [20]
avrdude: stuur: 0 [30] [20]
avrdude: stuur: 0 [30] [20]
{lange pauze}
avrdude: ser_recv(): programmeur reageert niet
avrdude: stk500_recv(): programmeur reageert niet
avrdude gedaan. Dank u.
De sleutel is om te zien de tijd van de slaap in de regel1 zodat de Arduino bootloader op een van deze 3 stuurt reageert. lastig spullen!
Hieronder is mijn volledige upload.sh script, zet het in dezelfde map u zet het hex bestand en markeer deze uitvoerbare (chmod a + x upload.sh):
#! / bin/bash
(echo 0 > /sys/class/gpio/gpio49/value & & slapen 0.9 & & echo 1 > /sys/class/gpio/gpio49/value) &
avrdude - c arduino -p m328p - v - v - v - v -P/dev/ttyO2 - U flash:w:serial_echo.cpp.hex