www.mikrocontroller.net

Forum: Compiler & IDEs AVRDUDE will Flash nicht lesen


Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gemeinde,

ich bastel hier gerade einen Programmer für einen ATmega128 am
Parallelport zusammmen und möchte nun zum Testen einfach mal den
kompletten Flashspeicher auslesen. Ich starte AVRDUDE wie folgt:

avrdude -patmega128 -cmeiner -Uflash:r:read.bin:r

AVRDUDE läuft komplett durch. Er findet den Controller, liest ca. 30
Sekunden und sagt zum Schluß er schreibe nun read.bin. Leider ist die
Dateigröße 0 Byte :-(.
Das Lesen des EEPROMs funktioniert auf diese Weise, es entsteht eine
Datei mit der gewünschten Größe von 4096 Byte (wegen Raw-Format).

Was ist hier los?

Christian

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

Bewertung
0 lesenswert
nicht lesenswert
> Leider ist die Dateigröße 0 Byte :-(.

Das wäre der erwartete Wert für einen leeren Flash-ROM. ;-)

Die 0xff am Ende der Datei werden ausgeblendet, da sie ja keinen
Informationswert haben.  Wenn dein Flash-ROM gar nicht programmiert
war, wird folglich alles ausgeblendet...

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey!

Leeres Flash... nicht schlecht :)

Tja, das dürfte dann wohl die Ursache sein. Wollte halt erst lesen,
bevor ich mir dem Schreiben anfange. Der Baustein ist aber
lesegeschützt und somit dürfte das zum gleichen Ergebnis führen.

Danke Jörg und schönes Wochenende

Grüße

Christian

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Der Baustein ist aber lesegeschützt und somit dürfte das
>zum gleichen Ergebnis führen.

Eher nicht, wenn tatsaechlich via locks geschuetzt, wird zumindest beim
ATmega16 beim Auslesen eine Folge von Zahlen ausgegeben (0x00,0x01,0x02
etc.) also nicht 0xff.

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

Bewertung
0 lesenswert
nicht lesenswert
Genau.  Es werden dann einfach die Bits von MOSI nach MISO
weitergereicht, sodass der SPI-Master sie um 8 Takte versetzt wieder
zurückgelesen hat.  Da das entsprechende Byte das niederwertige
Adressbyte ist, ergibt sich diese aufsteigende Reihenfolge (meiner
Erinnerung nach beim Flash als 00 00 01 01 02 02 infolge der
Wortadressierung, bei allen anderen Speicherbereichen unmittelbar
aufsteigend).

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ohne jetzt tiefer in das Thema einzusteigen, kann ich allerdings sagen,
daß nach einem Chip Erase und anschließendem Programmieren in der Tat
Daten zu lesen sind und auch in der Datei landen. Wie Jörg schon
erwähnte, läßt der AVRDUDE auch in diesem Fall die letzten FF's weg.
Diese Funktion ist meines Erachtens eher störend. Im schlimmsten Fall
bleibt ein abschließendes gewolltes FF auf der Strecke.

BTW:

Kann man den DUDE dazu überreden, daß wenn ich Daten ab z.B. 0x1E000
schreiben will (was mir nur über eine SREC-Datei gelingt), er
gefälligst die vorangehenden 0x1E000 Bytes (die eben nicht Teil meiner
SREC-Datei sind) NICHT explizit auf FF programmiert? Das kostet jede
Menge Zeit!

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

Bewertung
0 lesenswert
nicht lesenswert
> Im schlimmsten Fall bleibt ein abschließendes gewolltes FF auf der
> Strecke.

Ja, und?  Ist doch nicht schlimm.  Da das ja das Bitmuster des
gelöschten ROMs ist, musst du das auch dann nicht programmieren,
wenn es gewollt ist.

> Kann man den DUDE dazu überreden, daß wenn ich Daten ab z.B. 0x1E000
> schreiben will (was mir nur über eine SREC-Datei gelingt), er

Korrektur: srec oder ihex können es.  Eine reine Binärdatei kann es
nicht, da sie keine Adressinformation enthält.

> gefälligst die vorangehenden 0x1E000 Bytes (die eben nicht Teil
> meiner SREC-Datei sind) NICHT explizit auf FF programmiert? Das
> kostet jede Menge Zeit!

Hat noch niemand implementiert.  Ja, könnte man machen.  Merke ich
auch, wenn ich mal einen Bootloader schreibe, aber da ich mittlerweile
praktisch keinen simplen Bit-banger mehr benutze (sondern entweder
STK500-Protokoll oder JTAG), stört's dort nicht so sehr.

Autor: Christian Rötzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Korrektur: srec oder ihex können es.  Eine reine Binärdatei kann es
> nicht, da sie keine Adressinformation enthält.

Bei ihex habe ich die 1 von 0x1E000 in den Zeilen vermisst, woraus ich
schloss, dass ihex dann wohl nur 64k umfaßt. Wollte dann nicht weiter
Probleme suchen... ja, ist für einen Bootloader :)

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

Bewertung
0 lesenswert
nicht lesenswert
> Bei ihex habe ich die 1 von 0x1E000 in den Zeilen vermisst, woraus
> ich schloss, dass ihex dann wohl nur 64k umfaßt.

Original ja, aber hier wird sogenanntes extended hex format benutzt,
das kommt damit zurecht.

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.