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
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.
@ 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
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
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?
Ja, sicher gibt's sowas. Sowas baut man, publiziert es aber nicht. Am
Sinnvollsten wird es sein fuer den 2. Schritt einen Bootloader zu
schreiben. Ist beides nicht viel.
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
> * 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
Hier http://www.fourwalledcubicle.com/ButtLoad.php
Der nutzt den Dataflash des Butterflys um Programme zwischenzulagern um
sie dann autark an entsprechende uCs weiterzugeben. -wiebel
>JTAG kannste im Prinzip vergessen, weil ATMEL da ein eigenes Protokoll>verwendet, das nicht offengelegt wird.
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.
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!
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.
>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.
>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.
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.