ich möchte den Arduino per USB programmieren. Problem: er hängt auf dem Dachboden am WR703N WiFi Router mit OpenWRT. Siehe
Gibt es eine Möglichkeit den auf einem anderen PC kompilierten .hex Code per USB zu senden, sodass er Ardu in den Programmiermodus schaltet und das Hexfile annimmt? Warum möchte ich das machen: weil ich in Zukunft vermeiden will, dass ich wg. eines kleinen Fehlers im Code hoch muss, den Ardu abklemmen, am PC Programmieren und in wieder hochbringen muss. Besser ist ein HTTP Upload Interface, in dass man das Hexfile hochlädt und per BASH script (sowas wie "cat blahhexfile > /DEV/ttyACM0" den Ardu programmiert.
Wie du hier siehst, gibt es avrdude (das Tool zum Hochladen von .hex Files) auch für Mipsel kompiliert.
Ich kenne zwar das Packaging von OpenWRT nicht, aber man kann auch da einfach das deb-Package entpacken und nutzen
Uhm, AVRdude ist im Repo des OpenWRT für den WR703N nicht drin. Was wird in dem USB Strom gesendet, damit Ardu in den Programmiermode geht? Man könnte den Stream als erstes senden und gleich danach das Hexfile. Könnte...
AVRdude ist drinnen. Danke Tobias.
Ok, jetzt noch Interface hinbauen lol.
heh
:/# avrdude -p m328p -P /dev/ttyACM0 -c arduino -b 115200 -C /etc/avrdude.conf -U flash:w:/tmp/Blink.cpp.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.01s
avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/tmp/Blink.cpp.hex"
avrdude: input file /tmp/Blink.cpp.hex auto detected as Intel Hex
avrdude: writing flash (1018 bytes):
Writing | ################################################## | 100% 0.17s
avrdude: 1018 bytes of flash written
avrdude: verifying flash memory against /tmp/Blink.cpp.hex:
avrdude: load data flash data from input file /tmp/Blink.cpp.hex:
avrdude: input file /tmp/Blink.cpp.hex auto detected as Intel Hex
avrdude: input file /tmp/Blink.cpp.hex contains 1018 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.13s
avrdude: verifying ...
avrdude: 1018 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
und
:/# avrdude -p m328p -P /dev/ttyACM0 -c arduino -b 115200 -C /etc/avrdude.conf -U flash:w:/tmp/_433MHzThermometer
_startarray_dewpoint_TR703N.cpp.hex
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.00s
avrdude: Device signature = 0x1e950f
avrdude: NOTE: FLASH memory has been specified, an erase cycle will be performed
To disable this feature, specify the -D option.
avrdude: erasing chip
avrdude: reading input file "/tmp/_433MHzThermometer_startarray_dewpoint_TR703N.cpp.hex"
avrdude: input file /tmp/_433MHzThermometer_startarray_dewpoint_TR703N.cpp.hex auto detected as Intel Hex
avrdude: writing flash (7032 bytes):
Writing | ################################################## | 100% 1.15s
avrdude: 7032 bytes of flash written
avrdude: verifying flash memory against /tmp/_433MHzThermometer_startarray_dewpoint_TR703N.cpp.hex:
avrdude: load data flash data from input file /tmp/_433MHzThermometer_startarray_dewpoint_TR703N.cpp.hex:
avrdude: input file /tmp/_433MHzThermometer_startarray_dewpoint_TR703N.cpp.hex auto detected as Intel Hex
avrdude: input file /tmp/_433MHzThermometer_startarray_dewpoint_TR703N.cpp.hex contains 7032 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 0.91s
avrdude: verifying ...
avrdude: 7032 bytes of flash verified
avrdude: safemode: Fuses OK
avrdude done. Thank you.
Bin ja auch auf der Suche meinen Arduino aus der Ferne zu flashen. Hab z.Zt das Ariadne Projekt verfolgt. Ist aber noch nicht für meinen MEGA.
Das mit dem OpenWRT-Router wär mal ein ganz andere Ansatz.
Hab allerdings noch nie was damit zu tun gehabt. Werd mich mal die Woche etwas einlesen.
Welchen Router könnt ihr mir da empfehlen? Ich kenn nur die von AVM, und da ist lt. OpenWrt nur der 7170 freigegeben. Und das ist mir etwas zu teure "Hardware" für so einen Anwendungsfall.
Wenn der Router noch einen Ethernet-Hub hat, dann könnte man ja auf WiFi verzichten?. Ein Netzwerkkabel hab ich sowieso beim Arduino, da er als Webserver dient.
empfehlen kann ich keinen, da ich nur einen habe - den WR703N. Der hat aber das große Problem, dass er nur 4MB Flash und 8MB Ram hat. Das passt's hier und da nicht. Machste da kein Extram macht es regelmäßig BOOM, da die 4MB voll sind, und Du fängst von vorne an. Jetzt hat meiner mit Extram zwar 8GB für Software, das ändert nichts an den 8MB Ram. Und die werden fast immer knapp!
danke für die Antwort.
Ein paar Fragen hab ich noch.
EXTRAM??? Software, die Flashspeicher auf USB-Stick emuliert???
Ich will das Teil ja nur dazu verwenden, um einen Arduino zu flashen. Reicht da der Flash nicht? Man braucht ja nicht alle Pakete installieren oder?
Evtl. nehme ich dann einen anderen Router mit mehr Flash/RAM. Der TP-Link ist halt schön klein, und es hat ihn schon jemand zum Laufen gebracht.
Generell gefragt: Ist es schwierig OpenWRT auf einen Router zu bringen? Ich bin zwar softwaretechnisch kein Anfänger, aber wenn ich auf C mit makefile anfangen muss, dann wirds auch für mich grenzwertig.
Gibts da gute Anleitungen im Netz?
generell. Das ist alles beschrieben. Kompillieren musst Du nichts, da alles schon fertig - als Trunk images. Einfach im China Menü den Punkt für flashen finden und flashen .
seltsam... so ein Auf und Ab wegen der paar kb für den Arduino.
Die Grafik hab ich mir lange anschauen müssen, um zu verstehen, daß hier der freie RAM angezeigt wird.
Auf deinem Blog hab ich gesehen, daß du jede Menge Zeugs an dem Router dran hast.
Das machts wohl nicht schlanker
Brauche ich nur zum Flashen eines Arduino eigentlich einen externen USB-Stick? Dann muss ja auch gleich noch ein USB-HUB mit dran.
Wobei ich irgendwo gelesen habe, daß der USB2.0-Port des Routers Probleme mit USB 1.x Teilnehmern hat, und man aus dem Grund schon einen USB-HUB dranhängen soll.
Wo muss den eigentlich das Hex-File für den Arduino zum Flashen abgelegt werden?
Nach deinem Code liegt es auf Laufwerk W: Ist das auf deinem Rechner, oder auf dem Router?
Das mit dem USB 1.x und 2 weiß ich jetzt nicht. Ich habe den Hub dran weil, wie Du richtig sahst, allerhand Kram am WR habe. Und auch richtig: das nimmt Speicher. Wenn Du nur den Ardu dran haben möchtest reicht vieleicht(???) der Speicher aus. Habe ich nicht getestet, da ich gleich den USB Stick als Extram gemountet habe.
Das .hex File kopiere ich nach /tmp/. Damit also ins Ram, da /tmp/ im Ram gemountet ist. Bei Linux gibt es keine Laufwerksbuchstaben. Das :w: bedeutet, dass Du schreiben möchtest.
Kannst Dich ja in einem Monat melden. Vorher wird der Chinese Import nicht hier sein.
Teil war nach 6 Tagen bei mir
Heut hab ich mir mal etwas Zeit genommen:
Und schon gehts los:
Das Teil hab ich nicht auf der TP-Link Hompage gefunden Da gibts nur einen 702N
Im Internet hab ich dann die default IP entdeckt: 192.168.1.1. Göttlich. Genau die meiner Fritz!Box.....
Und jetzt das Beste: Die Weboberfläche ist auf Chinesisch. Strrrrrrrrrike. Na ja, nach etwas Suche hab ich die IP umstellen können, damit ich meine Fritz!Box wieder frei bekomme.
Vllt find ich noch die Umstellung auf eine lesbare Sprache. Oder ich hol mir mal die nette Bedienung aus unserem China-Restaurant nach Hause.
OK, man kann die Menus mit copy/paste in den google translator eingeben.
Aber eine englische Firmware wär doch nicht schlecht.
Wobei: es soll ja eh eine andere drauf. Mal schauen, wie ich das hinkriege.
Update:
Luci läuft auch. War etwas tricky. da ich kein WLAN definiert habe, und meinem LAN Interface noch nen Gateway und DNS geben musste, damit er das Package aus dem Internet geholt hat.
Das mit dem restorefactory hab ich auch mal gemacht.
Antwort: ja, ich habe einen FTP Server drauf. Den VSFTP: opkg update, opkg install vsftp sollte gehen. Und den avrdude mit opkg update, opkg install avrdude.
Ich habe den aber meistens ausgeschalten, den VSFTP dienst. Nur wenn ich mal was schaufeln muss starte ich ihn mit /etc/init.d/vsftp start.
Du kannst es aber auch mit scp kopieren, wie Manawyrm sagt.
Und: klar kannst Du o.g. Flashzeile nehmen. Gehört doch nicht mir lol.
Aber pass auf: Speicher kann explodieren. In dem Fall fängt man von vorne an zu flashen.
Übrigens: sobald Du mit passwd ein Passwort für den User root vergibst ist telnet ausgeschaltet und Du kommst nur noch mit ssh root@routernameoderipadresse auf die shell.
Yepp, speicher voll - Flashspeicher. Du kannst aber, wie geasgt, einen USB Stick als extram einbinden. BTW: luci frisst auch viel Speicher weg. Braucht Du luci? Nachdem Du alles einstelltest eigentlich nicht, oder? Klar, schöner ist's mit Webinterface.