mikrocontroller.net

Forum: Compiler & IDEs avrdude - Probleme bei Device ID


Autor: Michael J. (jogibaer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich schreibe mir geraden einen ISP und bin auf ein für
mich seltsames Problem gestoßen.

Ich sende avrdude ja, welche CPU's ich unterstütze, und avrdude
sendet mir dann den zurück, welchen ich mit der -P Option angebe.

Das funktioniert aber komischerweise nur, wenn ich als Protokoll
AVR910 eingebe, bei AVR109 erkennt er die CPU nicht mehr und sendet
unabhängig von der -p Option immer die erste von mir gemeldete ID 
zurück.


So funktioniert es:

12:46:14 michael: ~$ avrdude -p m32 -c AVR910 -P /dev/ttyUSB0 -u  -U 
flash:w:test.hex

Found programmer: Id = "USB-ISP"; type = U
    Software Version = 0.1; Hardware Version = 1.0
Programmer supports auto addr increment.

Programmer supports the following devices:
    Device code: 0x76 = ATMEGA8
    Device code: 0x72 = ATMEGA32
    Device code: 0x43 = ATMEGA128


-> liefert zurück 0x72


und so nicht:

12:46:04 michael: ~$ avrdude -p m32 -c AVR109 -P /dev/ttyUSB0 -u  -U 
flash:w:test.hex

Connecting to programmer: .
Found programmer: Id = "USB-ISP"; type = U
    Software Version = 0.1; Hardware Version = 1.0
Programmer supports auto addr increment.
Programmer supports buffered memory access with buffersize=256 bytes.

Programmer supports the following devices:
    Device code: 0x76
    Device code: 0x72
    Device code: 0x43

-> liefert immer 0x76 zurück


Ich habe mitgekommen, das es bei den ID ein ziemliches durcheinander 
gibt

-> /etc/avrdude.conf

avrdude Version 5.4.1

Kann mir jemand mal Nachhilfe erteilen ?


Danke
Jogibär

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Jogwich wrote:

> Das funktioniert aber komischerweise nur, wenn ich als Protokoll
> AVR910 eingebe, bei AVR109 erkennt er die CPU nicht mehr und sendet
> unabhängig von der -p Option immer die erste von mir gemeldete ID
> zurück.

Das liegt einerseits an dem ganzen Kuddelmuddel mit den Device-IDs,
andererseits natürlich daran, dass AVR109 ja ein Bootloader ist, der
logischerweise sowieso nur exakt einen einzigen Prozessortyp
unterstützen kann.  Damit geht avrdude davon aus, dass der erste (und
hoffentlich einzige) gemeldete CPU-Typ der ist, den der Bootloader in
der anderen Richtung auch wieder als gültigen Wert akzeptieren
wird. ;-)

Die eigentliche CPU-Erkennung erfolgt anschließend über die device ID
statt über diesen dummen Bytecode, und das ist letztlich auch die
Vorgehensweise, die die Appnote AVR109 empfiehlt.  Der Bytecode war
von Anfang an eigentlich nur eine dumme Idee.

Autor: Michael J. (jogibaer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

stimmt, bei meinem Bootloader habe ich nur eine CPU drine,
da ist es wurscht.

Allerdings wollte ich bei meinem ISP den schnellen Blockmodus benutzen,
ansonsten dauert das ja ewig ein größeres Programm zu übertragen.

Kann ich trotzdem irgenwie den Blockmodus nutzen ?


Jogibär

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Jogwich wrote:

> Kann ich trotzdem irgenwie den Blockmodus nutzen?

Müsste ich jetzt nachgucken, aber ich denke schon, dass das geht.

Autor: Michael J. (jogibaer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Jörg,

in der manpage habe ich aber keinen Hinweis gefunden, wie
ich den Blockmodus trotzdem benutzen kann.

Könntest Du mir mal bitte einen kleinen Hinweis geben ?


Danke
Jogibär

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Programmer ihn anbietet, wird er benutzt.

Autor: Michael J. (jogibaer)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jörg Wunsch wrote:
> Wenn der Programmer ihn anbietet, wird er benutzt.

Hallo,

das ist ja klar.

Nur in dem Modus AVR109, wo avrdude diesen benutzen würde,
haut das mit der Typübergabe einfach nicht hin!


Bei AVR910 benutzt avrdude nicht den Blockmodus, weil dieses
Protokoll diesen nicht hat.Ich kann diesenauch nicht erzwingen.
(Mein ISP kann beide Protokolle).

Das Problem dürfte klar sein, oder ?


Jogibär

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jetzt verstehe ich, ja.

Im Prinzip müsste man den buffered mode aus dem butterfly.c ins
avr910.c kopieren können.  Wenn ein AVR910 den nicht versteht, sollte
es doch (soweit ich das Protokoll in Erinnerung habe) mit einem
Fragezeichen antworten.  Falls er nicht verfügbar ist, bleibt alles
so, wie es ist, falls er verfügbar ist, dann so verfahren, wie in
butterfly.c.

Allerdings müsste man die Annahme, dass das mit dem Fragezeichen
funktioniert und es nicht zum Verklemmen des AVR109 führt, noch
gegen alle gängigen AVR109-Implementierungen gegentesten.  Dazu würde
ich neben dem originalen AVR109 von Atmel vor allem auch die
Bootstraps des STK500 rechnen.

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.