ATXMega64 internes Applikationsflash aus Applikation lesen

OP #4373171
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.
Gast #4373176
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.
OP #4373182
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.
Persönliche Seite #4373198
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?
OP #4373218
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren