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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.