Raspi als Atmel-Remoteprogrammer

Gast #3400026
Lesenswert?

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
#3400055
Lesenswert?

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.
#3400334
Lesenswert?

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
Gast #3400465
Lesenswert?

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.
#3400478
Lesenswert?

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.
Gast #3400482
Lesenswert?

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.
Gast #3401439
Lesenswert?

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
Gast #3402702
Lesenswert?

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
#3402869
Lesenswert?

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.
#3402913
Lesenswert?

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
Gast #3403064
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren