Forum: Mikrocontroller und Digitale Elektronik Programmierung eines Atmega über SPI einer anderen CPU


von Alexander H. (alex1)


Lesenswert?

Hallo zusammen,
wir haben ein Projekt, in dem eine Host-CPU (iMX6) einen Atmega88p 
programmieren soll. Als Hardwareschnittstelle sollte eine SPI 
Schnittstelle genommen werden, die an die ISP des Atmega geklemmt werden 
soll. Das sollte gehen.
Auf dem iMX6 soll Linux laufen.
1. Gibt es ein Tool (avrdude?), womit ich den Atmega über den SPI 
programmieren kann?
2. Wenn nicht, hat jemand source code für so einen Fall?

Danke
Alex

von Cyblord -. (cyblord)


Lesenswert?

Alexander H. schrieb:
> Hallo zusammen,
> wir haben ein Projekt, in dem eine Host-CPU (iMX6) einen Atmega88p
> programmieren soll. Als Hardwareschnittstelle sollte eine SPI
> Schnittstelle genommen werden, die an die ISP des Atmega geklemmt werden
> soll. Das sollte gehen.
> Auf dem iMX6 soll Linux laufen.
> 1. Gibt es ein Tool (avrdude?), womit ich den Atmega über den SPI
> programmieren kann?

Sicher. Nur avrdude setzt natürlich auf ein Interface (aka Programmer) 
auf. Wie hier avrdude über deine Host-CPU einen AVR programmieren soll, 
kann ich mir momentan nicht so recht vorstellen.

> 2. Wenn nicht, hat jemand source code für so einen Fall?

avrdude ist doch open source. Da drin sollte man doch alles finden was 
man an Code zum flashen eines avr braucht.

Außerdem wird der Programmiervorgang im Datenblatt recht gut geschildert 
und ist nicht gerade Raketenwissenschaft.

von Alexander H. (alex1)


Lesenswert?

ich habe gerade das hier gefunden:
https://www.mikrocontroller.net/articles/Raspberry_Pi_als_Universalprogrammer

In der offiziellen Versiondes avrdude wird aber keine programmer-id für 
linuxspi angegeben.
Hmmm....
Alex

von Thomas Z. (thomas_z41)


Lesenswert?

Wie in dem Artikel steht ist das eine spezielle Version von avrdude: 
https://github.com/kcuzner/avrdude

Compilier es einfach so wie in dem Artikel angegeben und dann geht es 
evtl.

Leider ist das nicht ordentlich rebased, so dass man nicht einfach die 
Unterschiede sehen kann...

von Falk B. (falk)


Lesenswert?

@ Alexander H. (alex1)

>programmieren soll. Als Hardwareschnittstelle sollte eine SPI
>Schnittstelle genommen werden, die an die ISP des Atmega geklemmt werden
>soll. Das sollte gehen.

Ja, ist aber einiges an Entwicklungsaufwand.

>1. Gibt es ein Tool (avrdude?), womit ich den Atmega über den SPI
>programmieren kann?

Nein, AVRdude läuft über UART bzw. andere Schnittstellen. Es redet nicht 
mit dem Zielprozessor sondern dem Programmieradapter.

Ich würde einfach einen kleinen AVR als Programmieradapter 
zwischenschalten. Das kostet vielleicht 1-2 Euro an Hardware, erspart 
aber tausende von Euro an Entwicklungskosten. Von Atmel gibt es eine 
App-Note, wo alles für den Programmieradapter drin ist, incl. Hex-File.

von Alexander H. (alex1)


Lesenswert?

Hallo,
ich werde es erst mal hiermit testen, und mich dann mal melden.
Danke
Alex

von Wolfgang H. (Firma: AknF) (wolfgang_horn)


Lesenswert?

Hi, Alexander,

> wir haben ein Projekt, in dem eine Host-CPU (iMX6) einen Atmega88p
> programmieren soll. Als Hardwareschnittstelle sollte eine SPI
> Schnittstelle genommen werden, die an die ISP des Atmega geklemmt werden
> soll.

Warum keinen Bootloader für den AtMega88 programmieren, der ab 
Power-On-Reset
a) Seine SPI-Schnittstelle auf Empfang stellt.
b) Ein paar Minuten auf ein neues Application Program vom Host wartet.
c) Wenn das kommt, dies dann in seine Application Area lädt.
d) Wenn nichts kommt, das alte Programm aufruft.

Zur Sicherheit gegen Missbrauch kann das Bootloading über SPI mit einem 
Dialog zum Austausch von Kennwörtern verfeinert werden. Sogar 
Verschlüsselung soll gemacht worden sein.

Schau im Datenblatt zum Atmega88 auf Seite 279.
Im Web findest Du jede Menge Beispiele, wo das Application Program über 
USART geladen wird. Das lässt sich leicht umschreiben auf SPI.


Ciao
Wolfgang Horn

von Alexander H. (alex1)


Lesenswert?

Hallo Wolfgang,

ja, das ist richtig. Ich wollte jetzt erstmal ohne Zusatzaufwand 
weiterkommen. Einen Bootloader kann ich dann im 2. Schritt machen, wenn 
der Erste nicht geht.

Alex

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.