mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mikrocontroller über Mikrocontroller programmieren


Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Falk Brunner (falk)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: _CH_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: GRA (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: _CH_ (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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_Softwa...

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: J.J. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Sowas in der art?
http://www.fischl.de/usbasp/

Autor: déjà vu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
also ich benutze fuer sowas das:
http://palmavr.sourceforge.net/

zusammen mit dem:
http://www.klaus-leidinger.de/mp/Mikrocontroller/A...

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

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, danke, danke!!! :-)

Autor: Christian U. (z0m3ie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Christian U. (z0m3ie)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian U. (z0m3ie)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Christian U. (z0m3ie)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ach hab doch noch BSDL Files für die AVRś gefunden also nix mit nicht 
Standardisiertem Protokoll und ko.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.