mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR ATMega128 - Flash auslesen


Autor: hilfmirdochmal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich benutze den ATMega 128.
Ich Arbeite mit AVR Studio und IAR Embedded Workbench.

Ich möchte meinen gesamten Flash (außer Bootloader Sektion am Ende) 
auslesen und per UART ausgeben.

Ich brauche also eine Möglichkeit
die Daten im Flash
an einer bestimmten Adresse
in einem Byte, einem Word oder einer Seite in eine Variable meines 
C-Programs zu bekommen.

Die den Rest müsste ich dann hinbekommen.

Autor: Kai B. (kaib) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
schau doch mal im GCC Tutorial nach da steht zumindest was drin wie es 
beim GCC gemacht wird. Ist im Prinzip nichts anderes als ein LPM.
So was wird es doch sicher auch dann beim IAR geben.
kannst dir ansochen mal auch WinAVR runterladen und dir die Headerflies 
anschauen.

MfG Kai

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Neben RTFM hilft häufig auch eine einfache Suche. Die fördert das hier 
zu Tage:

Beitrag "mit dem IAR compiler ein byte aus dem flash-speicher lesen"

Oliver

Autor: M. H. (doktorgnadenlos)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
bVar = *(unsigned char *)(0x0200)

wobei bVar die Bytevariable und 0x0200 exemplarisch die Adresse ist.
Das muss auch mit dem IAR-ompiler gehen.

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>bVar = *(unsigned char *)(0x0200)
...
>Das muss auch mit dem IAR-ompiler gehen.

Auf einem AVR wird das, egal mit welchem Compiler, immer ins SRAM 
zeigen, nicht in den Flash.

Oliver

Autor: hilfmirdochmal (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Hilfe.

Die vollständige Lösung ist:
word addr; 
byte wert;
for (addr=0x0000;addr<0x0200;addr++)
{
wert =  *(__flash byte *)(addr);
ausgabe(wert);
}

Allerdings funktioniert sie nur für die ersten 64kB des ATMega ...
ich probiere gerade was ich in der zweiten Hälfte nutzen muss und ob ich 
auch den Bootloaderbereich selber damit auslesen kann.

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.