Programmera en Arduino med BeagleBone, utan USB (4 / 5 steg)
Steg 4: Skapa ladda upp skriptet
Nu behöver vi magi. Hur gör du alla fancy sånt Arduino GUI gör med en FTDI eller Arduino styrelsen USB? Svaret, som jag har antytt, är avrdude, och du kan installera det med "apt-get install avrdude" på ubuntu och "ipgk installera avrdude" på Ångström (tror jag, rätta mig om detta är felaktigt). Men detta räcker inte. Om vi använder USB, hanterar avrdude växla som återställa för oss och ta hand om alla tidpunkten själv. TTL seriell ger oss ingen sådan lyx, så vi har en fin 2 kommandoradsskriptRad 1:
(upprepa 0 > /sys/class/gpio/gpio49/value & & sova 0,9 & & eko 1 > /sys/class/gpio/gpio49/value) &
Detta anger pin låg, sover i 0.9 sekunder och sedan anger pin hög. Hela är i () så att det blir är en enda ServiceApplication. & i slutet kommer bakgrund ServiceApplication, låter det gå i en egen tråd/process, i princip forking det. Detta gör att Återställ till hända tidsinställda så att avrdude kan start, Läs hex filen, och starta pinga för starthanteraren. Den 0.9 andra jag kom via försök och misstag, kan du behöva justera detta.
Rad 2:
avrdude - c arduino -p m328p - v - v - v - v -P/dev/ttyO2 - U flash:w:serial_echo.cpp.hex
Det är mycket som händer här, och jag låter dig läsa avrdude manualen för de tråkiga detaljerna, men det är i grunden detta:
programmera en arduino med en 328p, vara mycket mångordiga, använda seriell port ttyO2 och serial_echo.cpp.hex.
När du får allt detta arbetar, kan du ta bort vissa - v's att minska utförlighet.
I den tidigare guiden jag nämnde att BB som 4 TTY seriella portar. Det faktiska har 6, ttyO0-5 (som är ett versalt O), men endast 4 är användbar på GPIO stiften. Detta är ttyO1, ttyO2, ttyO4 och ttyO5, som bekvämt motsvarar Serial1, Serial2, Serial4 och Serial5.
Om du kör denna 2: a raden av sig själv, ser du utdata slutet med:
avrdude: skicka: 0 [30] [20]
avrdude: skicka: 0 [30] [20]
avrdude: skicka: 0 [30] [20]
{lång paus}
avrdude: ser_recv(): programmerare svarar inte
avrdude: stk500_recv(): programmerare svarar inte
avrdude gjort. Tack.
Nyckeln är att se sömntiden i Line1 så att Arduino bootloader svarar på en av de 3 skickar. knepiga grejer!
Nedan är min komplett upload.sh script, lägga den i samma mapp du sätta hex filen och markera den körbar (chmod a + x upload.sh):
#! / bin/bash
(upprepa 0 > /sys/class/gpio/gpio49/value & & sova 0,9 & & eko 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