Forum: Mikrocontroller und Digitale Elektronik ATXMega64 internes Applikationsflash aus Applikation lesen


von Georg X. (schorsch666)


Lesenswert?

Hallo,

ich möchte in der Applikation auf den Applikationsflash des ATXMega64 
lesend zugreifen.

Ich möchte den Flashbereich auslesen und eine CDC daraus berechnen.
Ich verwende die NVM Lib von Atmel.

nvm_flash_read_buffer (Addresse, &FlashBuffer, länge); //crc

Ich lese Byteweise aus dem Flash. Wenn ich debugge dann kann ich sehen 
dass der Flash richtig ausgelesen wird. Lasse ich meine Funktion laufen 
bildet sich bei jedem Durchlauf eine andere CRC. Die CRC Routine stimmt 
diese habe ich auf einem anderen System geprüft.

Interrupts sind deaktiviert.

Kann es sein dass auch das Lesen nur aus dem Bootbereich funktioniert?
Welche Möglichkeiten habe ich den Flasspeicher (Applikationsbereich) zu 
lesen?

Danke.

Gruß,
Georg.

von Stefan F. (Gast)


Lesenswert?

> Wenn ich debugge dann kann ich sehen
> dass der Flash richtig ausgelesen wird.

> Lasse ich meine Funktion laufen
> bildet sich bei jedem Durchlauf eine andere CRC.

Das kann nicht sein. Eine der beiden Aussagen muss falsch sein.

von Georg X. (schorsch666)


Lesenswert?

Hallo,

ich habe nicht jedes Byte überprüft aber das Lesen der ersten 20Byte 
sieht richtig aus. Ev. passiert weiter hinten ein Fehler beim Lesen.

Sollte das Lesen grundsätzlich funktionieren wenn die Applikation läuft 
und gleichzeitig den Applikationsflash liest?

Inzwischen habe ich auf die funktion nvm_flash_read_byte gewechselt. Das 
Problem bleibt das gleiche.


Gruß,
Georg.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

Georg X. schrieb:
> ich möchte in der Applikation auf den Applikationsflash des ATXMega64
> lesend zugreifen.
>
> Ich möchte den Flashbereich auslesen und eine CDC daraus berechnen.
> Ich verwende die NVM Lib von Atmel.
>
> nvm_flash_read_buffer (Addresse, &FlashBuffer, länge); //crc

Was macht diese Funktion denn besonderes, und welche Befehlssequenz wird 
benötigt, um ein Byte aus dem Flasg zu lesen?

Genügt bei XMega kein LPM?

von Georg X. (schorsch666)


Lesenswert?

Hallo,

die Readfunktion verwendet folgendes Makro:

#define pgm_read_byte_far(address_long) 
__ELPM((uint32_t)(address_long))

Für mich sieht es so aus als ob das Lesen aus dem Flash und 
gleichzeitiges Ausführen der Applikaiton im Flash nicht funktioniert.

Ist nur interessant ob das grundsätzlich nicht geht oder ob ich eine 
andere Vorgehensweise einschlagen muss.

Gruß,
Georg.

von Georg X. (schorsch666)


Lesenswert?

Hallo Leute,

inzwischen funtioniert es.
Die NVM Routinen funktionieren zum Lesen des Flashes aus der 
Applikation.

Gruß,
Georg.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.