Mikrocontroller über Mikrocontroller programmieren

Gast #648265
Lesenswert?

Hallo!

Hat schon mal jemand einen Mikrocontroller nicht direkt über einen PC, 
sondern über einen Umweg ( PC -> Mikrocontroller -> Mikrocontroller ) 
programmiert? Ich würde gerne ein leicht zu transportierendes System 
entwickeln, dass ich bei meiner Hauptplatine anschließen kann mit dem 
man dann ohne PC Software-Updates auf den Flash des ATMega64 schreiben 
kann.

Im Datenblatt habe ich gesehen, dass man mittels JTAG oder ISP in den 
Flash schreiben kann.
* Welche Schnittstelle wäre dabei anzuraten?
* Wie bekomme ich das HEX-File vom PC zum portablen Programmiergerät und 
woher weiß ich dann auf welche Adresse ich was schreiben muss?
* Mit welchen Zeitaufwand müsste ein Profi dabei rechnen?

Grüße
Hans
#648274
Lesenswert?

Hans wrote:
> Hallo!
>
> Hat schon mal jemand einen Mikrocontroller nicht direkt über einen PC,
> sondern über einen Umweg ( PC -> Mikrocontroller -> Mikrocontroller )
> programmiert?
Jau. Die Firma ATMEL verkauft sowas als AVRISP (mittlerweile Mk. II). 
Steht alles in der App.-Note AVR910 drin, wie es prinzipiell geht.

> Im Datenblatt habe ich gesehen, dass man mittels JTAG oder ISP in den
> Flash schreiben kann.
> * Welche Schnittstelle wäre dabei anzuraten?
JTAG kannste im Prinzip vergessen, weil ATMEL da ein eigenes Protokoll 
verwendet, das nicht offengelegt wird.
#648275
Lesenswert?

@ Hans (Gast)

>programmiert? Ich würde gerne ein leicht zu transportierendes System
>entwickeln, dass ich bei meiner Hauptplatine anschließen kann mit dem
>man dann ohne PC Software-Updates auf den Flash des ATMega64 schreiben
>kann.

Das nennt sich Programmiergerät und ist in vielen Ausführungen bereits 
fertig zu kaufen.

>* Welche Schnittstelle wäre dabei anzuraten?

ISP oder JTAG, hängt vom Controller ab.

>* Wie bekomme ich das HEX-File vom PC zum portablen Programmiergerät und

USB? RS232? SD-Card?

>woher weiß ich dann auf welche Adresse ich was schreiben muss?
Das sit in den Hexfiles kodiert, typisch Intel oder Motorola HEX Format.

>* Mit welchen Zeitaufwand müsste ein Profi dabei rechnen?

Einen Tag. Ein Profi kauft sowas. Neuentwicklung kostet verdammt viel 
und bringt so ziemlich nichts.
MFg
Falk
Gast #648279
Lesenswert?

Hallo,

sowas ähnliches habe ich für einen PIC mal gemacht. Die 
"Master"-Elektronik bekommt via CAN oder RS232 die binär-Daten 
zugesendet, der Master-Controller flasht dann via SPI den 
Slave-Controller.

Die Adressen weißt du aus dem Hex-File. Google mal danach wie ein 
Hex-File aufgebaut ist, dann kannst du dir leicht einen Reim draus 
machen was du zu tun hast um an den "Maschinencode" zu kommen.

Die Daten könntest du z.B. mit SD-Karte übertragen.

Zeitaufwand ist relativ. Kommt halt drauf an was du noch alles an 
Funktionen brauchst. Der reine "Programmieralgorithmus" steht 
normalerweise im Datenblatt des betreffenden Controllers beschrieben und 
sollte ziemlich fix implementiert sein... Wie lange ein Profi braucht 
weiß ich nicht, bin keiner ;)

Gruß,
Christian
Gast #648302
Lesenswert?

Nur, damit ich etwaige Missverständnisse ausräume:

Ich will das HEX-File zum meinem portablen System mit Mikrocontroller 
übertragen und beispielsweise in einem EEPROM speichern. Dieses portable 
Gerät soll dann vom EEPROM - also ohne PC - das HEX-File zu dem 
Haupt-Gerät übertragen.

1. PC -> Portables System (µC-Routine schreibt gelesenes HEX-File in 
EEPROM)

2. Portables System -> Haupt-Gerät (schreibt HEX-File vom EEPROM in 
Flash des Hauptgerätes)

Hat jemand schon irgendwo einen Quellcode für so ein portables System 
gesehen?
Gast #648315
Lesenswert?

Hab dich schon richtig verstanden.
Mach es doch so:
PC -> hex-file auf SD-Karte ==> SD-Karte an deinen Controller -> 
Controller dekodiert das hex-file und flasht auf Knopfdruck den 
Ziel-Controller - fertig

Source habe ich schon gesehen, sogar selber gestrickt, darf ich dir aber 
leider nicht geben, da hätte die Firma wahrscheinlich was dagegen :)
Wie gesagt stehen die Routinen aber meist im Datenblatt. Mit ISP 
brauchst du die Daten nur seriell rüber-toggln und gut ist.

Gruß,
Christian
#648336
Lesenswert?

> * Welche Schnittstelle wäre dabei anzuraten?
> * Wie bekomme ich das HEX-File vom PC zum portablen Programmiergerät

PC überträgt das HEX-File über die UART an dein 'portables Gerät'.
Dieses speichert das HEX-File zwischen.

Dann steckst du das portable Gerät an deine Zielhardware
und der 'Programmer' überspielt das HEX-File wieder über
die UART an deine Zielhardware. In der Zielhardware lauert
ein Bootloader, der den Flash der Zielhardware updated.

> und woher weiß ich dann auf welche Adresse ich was schreiben
> muss?

Das steht im HEX-File drinnen.


Bootloader findest du zb ueber diesen Link
http://www.mikrocontroller.net/articles/AVR_Softwarepool#Bootloader
#648791
Lesenswert?

Christian Ulrich wrote:
> Quark, JTAG ist ein offener Standart nur den zu implementieren wird dich
> locker n halbes jahr mehr kosten als die Woche um ne ISP basierte Lösung
> zu entwickeln.
JTAG ist zwar ein offener Standar*D*, was die Schnittstelle betrifft, 
aber ATMEL verwendet afaik ein eigenes Protokoll. Das "Quark" kannste 
Dir sparen!
#648904
Lesenswert?

Atmel kann kein eigenes Protokoll für einen offenen Standart verwenden. 
Wozu ist es ein Standart ? Wenn es ein eigenes Protokoll wäre würde es 
z.b. Mhm überleg ... DebugWire heissen oder soo ;)

Für JTAg ala Boundary Scan brauch man eigentlich nur die beschreibungs 
files dann kannst auch jede andere JTAG Hard und Software nehmen um z.b. 
deine AVRS oder Schaltung zu testen.
#648908
Lesenswert?

>Atmel kann kein eigenes Protokoll für einen offenen Standart verwenden.
>Wozu ist es ein Standart ? Wenn es ein eigenes Protokoll wäre würde es
>z.b. Mhm überleg ... DebugWire heissen oder soo ;)

1. Standard wird mit D geschrieben - egal wie oft du es falsch 
schreibst.
2. Das JTAG-Protokoll bzw. die Statemachine die darin zum Einsatz kommt, 
ist standardisiert. Wie aber die Daten im Controller landen, ist dem 
Hersteller des Controllers überlassen. JTAG bietet nur eine 
Kommunikation an.
#649008
Lesenswert?

>1. Standard wird mit D geschrieben - egal wie oft du es falsch
>schreibst.

entschuldige bitte

>2. ...

Ist BSDL nur ein Quasi Standard ? sehe gerad es gibt tatsächlich keine 
BSDL files für AVRś.

Naja dann halt Plan B und man nimmt einfach den Quelltext vom avarice 
und zieht sich die Sachen zum flashen raus, baut ne jtagice kompatible 
Hardware zu der im netz nicht nur ein Schaltplan kursiert fertig.
#649030
Lesenswert?

Sehe grad, dass es die BSDL-Files mittlerweile tatsächlich offiziell von 
ATMEL gibt. Das ist aber anscheinend recht neu (OK, ist ne Weile her, 
dass ich mich letztmalig peripher damit befasst habe...). Anfangs hieß 
es immer, da gibts nix, vermutlich weil ATMEL Nachbauten der (teuren) 
JTAGICEs verhindern wollte.

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