Hallo Leute!
Könnt ihr mir bei einem kleinen Verständnisproblem helfen? Ein
Programmer-Tool wie z.B. PonyProg kann ja über die Setielle
Schnittstelle einen AVR programmieren. Dabei werden 5 Leitungen benutzt.
Aber so ein COM-Port am PC kann ja auch für andere Schnittstellen (USB
oder Bluetooth) benutzt werden, die nur 2 Leitungen besitzen.
Könnte man also auch mit PonyProg über so eine Verbindung programmieren
(ist ja für das Programm immer noch nur ein einfacher COM Port, was
dahinter kommt sieht es ja nicht?)?
Danke!
Ralf wrote:
> Hallo Leute!> Könnt ihr mir bei einem kleinen Verständnisproblem helfen? Ein> Programmer-Tool wie z.B. PonyProg kann ja über die Setielle> Schnittstelle einen AVR programmieren. Dabei werden 5 Leitungen benutzt.> Aber so ein COM-Port am PC kann ja auch für andere Schnittstellen (USB> oder Bluetooth) benutzt werden, die nur 2 Leitungen besitzen.> Könnte man also auch mit PonyProg über so eine Verbindung programmieren> (ist ja für das Programm immer noch nur ein einfacher COM Port, was> dahinter kommt sieht es ja nicht?)?
Nein.
Die 5 Leitungen kommen deshalb zustande, weil der AVR an seiner
ISP Schnittstelle 5 Leitungen bedient haben will. Im Grunde
könnte man an einem PC jegliche Schnittstelle dafür einsetzen,
solange es nur gelingt diese 5 Leitungen richtig zu bedienen.
Und hier liegt auch dein Denkfehler. Die serielle Schnittstelle
am PC wird gar nicht als serielle Schnittstelle im eigentlichen
Sinn benutzt. Für Ponyprog sind das einfach nur 5 Leitungen, die
nach draussen führen und die vom Programm aus angesprochen
werden können. Gleichzeitig resultiert daraus auch das grosse
Problem, von dem hier in diesem Forum immer wieder berichtet
wird. Ein ordentliches Betriebssystem kann es nämlich nicht
so ohne weiteres zulassen, dass sich jedes dahergelaufene
Programm so mir nichts dir nichts direkt an der Hardware
vergreift und die Schnittstelle in einer Art und Weise benutzt,
für die sie gar nicht vorgesehen ist.
Die µCs R8C/M16C von Renesas werden über die ganz normale RS232
Schnittstelle geflasht und debuggt. Bei diesen hättest du also die
Möglichkeit, ohne großen Aufwand, über USB (FTDI-Chips) oder Bluetooth
zu "In System" zu programmieren.
Aber man könnte doch ans andere Ende der Leitung einen AVR setzen, der
zuerst die das . hex file vom PC empfängt (über 2 Leitungen), und dann
über 5 Pins einen anderen AVR programmiert? Oder ist das Protokoll da zu
kompliziert?
Ralf wrote:
> Aber man könnte doch ans andere Ende der Leitung einen AVR setzen, der> zuerst die das . hex file vom PC empfängt (über 2 Leitungen), und dann> über 5 Pins einen anderen AVR programmiert? Oder ist das Protokoll da zu> kompliziert?
Was glaubst Du, was kommerziell erhältliche Programmer (z.B. der AVRISP
[MK II]) machen? Genau! Da sitzt ein kleiner schnuckeliger AVR drin, der
vom PC über die ganz stinknormale RS232 die Daten bekommt und sie an den
Ziel-AVR weiterschickt.
PonyProg kommt eben ohne den "Übersetzer"-AVR aus, benötigt dafür aber
direkten Zugriff auf die Signalleitungen der seriellen Schnittstelle,
was erstens einige Betriebssysteme nicht mögen und zweitens voraussetzt,
dass man eine echte RS232 am Rechner hat, und keinen Wandler (USB-RS232)
dazwischen. Hat eben den Vorteil, dass es billiger ist und dass man
keinen zweiten µC braucht, der ja, wenn man nicht grad ein kommerzielles
Gerät kauft, auch erstmal irgendwie progrmmiert werden muss.
Mittlerweile verzichten aber im AVR-Bereich (und afaik auch bei anderen
µC-Familien, die die entsprechende Hardware-Ausstattung besitzen) viele
fast ganz auf das lästige ISP und brennen einen Bootloader in den µC,
der dann direkt über RS232 ohne den "Übersetzer" dazwischen
kommunizieren kann.
Ahja, das macht Sinn. Danke für die auführlichen Erläuterungen.
Dauert das Programmieren mit einem Bootloader denn länger als mit einer
5 Poligen Schnittstelle?
Ralf wrote:
> Ahja, das macht Sinn. Danke für die auführlichen Erläuterungen.> Dauert das Programmieren mit einem Bootloader denn länger als mit einer> 5 Poligen Schnittstelle?
Vermutlich nicht, es kommt aber auf die Effizienz des Bootloaders an.
Tempo ist aber nicht Alles. Zuverlässigkeit sollte man auch nicht
vernachlässigen. Die ist bei Bitbanging nur gegeben, wenn OS und
PC-Hardware mitspielen. Pony arbeitet gerne "am Limit", was bei
ungünstigen Umständen zu Fehlern (bis hin zu verstellten Fuses) führen
kann.
...
Dann noch eine Frage hinterher. Angenommen ich benutze einen AVR
(master) um einen anderen (slave) zu programmieren.
Dazu schaufle ich erstmal das .hex file auf den Master, und verbinde
MISO, MOSI etc. des slaves mit ein paar Ausgängen des Masters.
Wie schwierig ist es nun, das Programm vom Master auf den Slave zu
übertragen?
Hat das schon mal jemand gemacht? Ist das Protokoll irgendwo leicht
verständlich dokumentiert, oder handelt es sich dabei um ein wohl
gehütetes ATMEL Geheimnis? ;-)
Das ISP-Protokoll steht im Datenblatt. Außerdem gibts Application Notes
zu dem Thema (bin mir jetzt nicht ganz sicher und hab auch grad keine
Zeit/Lust, nachzusehen, aber ich meine, es hätte zu dem ursprünglichen
AVRISP sogar die Software für den Programmer-AVR samt Doku gegeben).
Das ISP-Protokoll ist öffentlich (Datenblatt). Die Schaltung etlicher
(modifizierter) ATMEL-Nachbauten sind auch öffentlich verfügbar. Die
Firmware gibts im (kostenlosen) AVR-Studio, ist also auch verfügbar.
Durchsuche mal das Forum nach Programmer und 7 Euro, dann findest Du
sicher ein Projekt, das Deine Wünsche erfüllt.
...