Forum: Mikrocontroller und Digitale Elektronik Raspi als Atmel-Remoteprogrammer


von daniel (Gast)


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

von Sukzessive A. (sukapxconv)


Lesenswert?

Ich empfehle dir eher eine Andere Verbindung und dafür einen UART 
fähigen Bootloader auf dem AVR.

: Bearbeitet durch User
von Conny G. (conny_g)


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.

von Conny G. (conny_g)


Lesenswert?


von daniel (Gast)


Lesenswert?

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.

von R. M. (rmax)


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

: Bearbeitet durch User
von Dr. Sommer (Gast)


Lesenswert?

Warum nicht einfach mit dem R-PI direkt die Lampen steuern, wozu noch 
einen ATmega dazwischenbasteln?

von R. M. (rmax)


Lesenswert?

Soweit ich das verstanden habe, soll der RasPi da nur solange bleiben, 
bis die Firmware für den AVR fertig ist.

von Tom (Gast)


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.

von Karl H. (kbuchegg)


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.

von Kindergärtner (Gast)


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.

von daniel (Gast)


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

von Andreas B. (bitverdreher)


Lesenswert?

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

von Andreas B. (bitverdreher)


Lesenswert?

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

von Dominik S. (dasd)


Lesenswert?

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 ^^

von Andreas B. (bitverdreher)


Lesenswert?

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
von daniel (Gast)


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

von A. W. (uracolix)


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.

von Andreas B. (bitverdreher)


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

von daniel (Gast)


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

von Andreas B. (bitverdreher)


Lesenswert?

Nein, es war schon richtig. Es wurde ja gelesen.

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
Noch kein Account? Hier anmelden.