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
also ich benutze fuer sowas das: http://palmavr.sourceforge.net/ zusammen mit dem: http://www.klaus-leidinger.de/mp/Mikrocontroller/AVR-Prog/AVR-Programmer.html auf nem palm m100. der hat ein aufsteckbares serielles kabel, man muss also nicht das cradle mit rumschleppen. gibts fuern zwanni bei e*ay. --- buttload ist allerdings auch interessant...
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.
Ach hab doch noch BSDL Files für die AVRś gefunden also nix mit nicht Standardisiertem Protokoll und ko.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.