Hallo Gemeinde, zur Zeit arbeite ich an einer Lampensteuerung mit einem ATmega. Die erste Version des Steuerung ist schon lauffähig, so dass ich die Steuerung nun montieren möchte, um erste Tests zu fahren. Um die Lampe nun weiterhin programmieren zu können überlege ich einen Raspi, den ich hier noch liegen habe, als 'Remote-Programmer' einzusetzen. Eine erste Überlegung ist hier: 1.) Bauen auf dem PC 2.) Übertragung des Hex-Files an den Raspi (z.B. per FTP) 3.) Raspi nimmt Hex-Fileübertragung als Trigger um via AVR ISP mkII den ATmega zu programmieren Hat sich jemand schon mal über eine solche Realisierung Gedanken gemacht? Gibt es u.U. schon ähnliche Umsetzungen? Danke vorab! Gruß daniel
Ich empfehle dir eher eine Andere Verbindung und dafür einen UART fähigen Bootloader auf dem AVR.
:
Bearbeitet durch User
Das finde ich spannend, hab ich für meine Home Automation- Zentrale auch im Hinterkopf, die besteht nämlich aus einem Rapi-AVR Duo und sind sowieso per UART verbunden. Es hat mal jemand avrdude gepatcht, sodass es mit ISP über die RPi GPIOs funktioniert, das fand ich auch nicht schlecht.
Sukzessive Approximation schrieb: > UART fähigen Bootloader auf dem AVR Das mit dem Bootloader ist eine gute Idee. Bleibt noch das automatische Übertragen per Netzwerk. Hat hier noch jemand Ideen? Aktuell sehe ich die Variante per FTP oder WebDAV als schnell und einfach umzusetzen an.
Wenn auf dem RasPi eh schon SSH läuft, wovon ich mal ausgehe, dürfte SCP die einfachste Variante sein. Das ist sicherer als FTP und wesentlich leichtgewichtiger als WebDAV. ... oder die Datei gar nicht erst auf den RasPi zwischenspeichern, sondern direkt per SSH den avrdude aufrufen und das Hex-File von stdin lesen lassen: $ ssh raspi avrdude ... -U flash:w:-:i < programm.hex
:
Bearbeitet durch User
Warum nicht einfach mit dem R-PI direkt die Lampen steuern, wozu noch einen ATmega dazwischenbasteln?
Soweit ich das verstanden habe, soll der RasPi da nur solange bleiben, bis die Firmware für den AVR fertig ist.
R. Max schrieb: > ... oder die Datei gar nicht erst auf den RasPi zwischenspeichern, > sondern direkt per SSH den avrdude aufrufen und das Hex-File von stdin > lesen lassen: > > $ ssh raspi avrdude ... -U flash:w:-:i < programm.hex Wenn man das an die passende Stelle ins Makefile schreibt, sollte das sogar völlig transparent funktionieren.
R. Max schrieb: > Soweit ich das verstanden habe, soll der RasPi da nur solange bleiben, > bis die Firmware für den AVR fertig ist. So habe ich das auch aufgefasst. Gut, es mag bauliche Gründe geben, aber ich sehe immer noch nicht, inwiefern mir da jetzt ein RasPi etwas bringt, was ich nicht mit einem stink normalen UART Kabel vom PC zur Lampensteuerung (und dort über MAX232 auf die Mega-UART) auch abdecken kann. Ganz im Gegenteil: Hab ich eine UART Verbindung zum Mega, dann kann ich die auch zum debuggen benutzen, weil ich dem AVR dann eine Möglichkeit gebe, irgendwelche Statusmeldungen oder Zwischenergebnisse auszugeben. So wie ich das sehe, hab ich mit dem RasPi nur wieder eine Zwischenkomponente mehr, die Ärger machen kann. Und ob das Handling mit FTP-Übertragung zum RasPi und dort dann Aufruf der Brennsoftware um soviel besser ist, als das Starten eines Bootloaders auf dem PC (und drücken eines Reset-Knopfes) - na ich weiß nicht. Bootloader haben im AVR die angenehme Eigenschaft, dass man über sie erst mal nichts kritisches an den Fuses anstellen kann. Der Nachteil: man verbraucht ein wenig Flash für den Bootloader. Ob das jetzt bei einer Lampensteuerung so groß ins Gewicht fällt? So eine Steuerung stelle ich mir programmtechnisch eher unaufwändig vor, so dass ausreichend Flash je nach tatsächlich verwendetem Mega eigentlich nicht das große Problem sein sollte.
Einen Raspberry PI neben einen ATmega zu stellen nur um diesen flashen zu können, ist wie meine Oma mit einem Ferrari von der Haustür zum Parkplatz zu fahren, damit sie dort in ihre Ente steigen und Kuchen kaufen fahren kann.
R. Max schrieb: > Soweit ich das verstanden habe, soll der RasPi da nur solange bleiben, > bis die Firmware für den AVR fertig ist. Hallo zusammen! Der RasPi soll nur für die Zeit der Entwicklung neben der Steuerung verbleiben. Eine Verbindung zum ATMega per wie auch immer gearteten Seriellem Kabel ist nicht möglich. Es bleibt somit nur die Entwicklung im Bugatti, Transport via Mercedes, Flash via Ferrari und Ausführung mit der Ente. Das Thema ssh nehm ich mal mit und schaus mir mal an. Ich werde berichten. Gruß daniel
Hi, einen Raspi finde ich auch etwas Overkill. Ein TL703N Router mit OpenWrt sollte dazu auch reichen und kostet nur ca. 20 Euronen.(mit Gehäuse und NT!) Gruß Andreas
Gerade mal geschaut: avrdude gibt es auch für Openwrt. Hier hat es mal einer gemacht: http://forum.arduino.cc/index.php?PHPSESSID=1i04riebt1l9tr3ij6khn82q32&topic=133041.0;wap2 Gruß Andreas
Andreas B. schrieb: > einen Raspi finde ich auch etwas Overkill. > Ein TL703N Router mit OpenWrt sollte dazu auch reichen und kostet nur > ca. 20 Euronen.(mit Gehäuse und NT!) Klar... Ist natürlich viel besser und auch günstiger so einen Router für 20€ zu kaufen als einen RPi zu nehmen den man sowieso rumliegen hat ^^
Dominik S. schrieb: > Klar... > Ist natürlich viel besser und auch günstiger so einen Router für 20€ zu > kaufen als einen RPi zu nehmen den man sowieso rumliegen hat ^^ Wenn man ihn exclusiv dafür nutzen möchte, ja. ;-) Übrigens gerade ausprobiert: Geht prima!
:
Bearbeitet durch User
Hallo Andreas, den RasPi habe ich hier noch rumliegen. Warum also in die Ferne schweifen. Wenn ich dich richtig verstehe, war dein Versuch via
1 | $ ssh MainOpenWrtRouter avrdude ... -U flash:w:-:i < programm.hex |
erfolgreich? Danke vorab! Gruß daniel
Das Raspi koennte per Samba Mount oder NFS Mount auf eine im Netz befindliche Platte zugreifen. Mit ein paar Zeilen Python kann man einen kleinen Webserver schreiben, der dann die Programmieraktion ausloest. Der Charme eines ISP ist, dass man den AVR per ISP auch reseten kann. (Ok, Arduino hat die Handshakeleitungen als Reset missbraucht, das funktioniert auch recht gut, sofern man mit einem Reset bei jedem Open/Close des COM Ports leben kann). Letztens hab ich mal probiert, AVR Firmware auf dem Raspi zu bauen. Das klappt soweit auch, dank Opensource ist alles vorhanden und fuer kleinere Projekte ist der Raspi sicher schnell genug beim compilieren. Fuer alle Libraries und Applikationen fuer die mehr als 80 AVR Boards des µracoli Projektes dauerte die Compilierorgie aber ueber 2h, auf was auf einem Core i5 in 10min erledigt ist. Beim Compilieren auf dem Raspi ist dann aber eine SSH Session erforderlich. Der Vorteil dabei ist, dass man auf dem Desktop-PC / Laptop nicht erst die AVR-Toolchain installieren muss.
daniel schrieb: > Wenn ich dich richtig verstehe, war dein Versuch via$ ssh > MainOpenWrtRouter avrdude ... -U flash:w:-:i < programm.hex > erfolgreich? nicht ganz, aber so: > ssh -l root 192.168.2.102 avrdude -p m128 -c usbasp -U flash:r:-:i > test.hex Kleines Problem speziell beim WR703 ist, daß er nicht direkt mit USB1 Devices umgehen kann.Man benötigt hier einen USB Hub. Ich habe einen gepimpten WR703 (64MB Ram und 16MB Flash). Der originale sollte dafür aber auch reichen. Serial ginge vermutlich auch. Um das zu testen müsste ich aber einen Adapter basteln und meinen alten Programmer wieder reaktivieren. Ein Raspi sollte also auch keine Probleme damit haben (zumindest mit Openwrt) Gruß Andreas
Hallo Andreas, danke für die Info. Ich denke du meintest: ssh -l root 192.168.2.102 avrdude -p m128 -c usbasp -U flash:r:-:i *<* test.hex oder? Ich werd's mal mit dem Raspi und dem ISP probieren. Gruß daniel
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.