ATXmega256a3 flashpage Probleme

OP (Firma: Vispiron) #1412513
Lesenswert?

Hallo,
wir nutzen die Beispiele von AVR und haben Probleme beim beschreiben der 
flashpages (flashpagegröße 256) und zwar ist es uns nur möglich "gerade" 
Adressen zu beschreiben.

In den beiden Screenshots im Anhang sieht man einmal das korrekte 
Beschreiben an der Adresse 0x400 und zum Anderen den erfolglosen Versuch 
an der Adresse 0x300. In dem Fall wird die page seltsamerweise 
automatisch an die Adresse 0x200 geschrieben.

Hat jemand es erfolgreich geschafft bei einem xmega256a3 z.B. an die 
Adresse 0x100 zu schreiben?

Für Codeschnipsel bzw. Hinweise wären wir sehr dankbar.

Peter

Hier noch der Code, der hierzu ausgeführt wird:

flashPosition = 0x300
1
void our_write_function(uint32_t flashPosition)
2
{
3

4
   
5
   SP_WaitForSPM();
6
   SP_EraseApplicationPage(flashPosition);
7
   SP_WaitForSPM();
8
   SP_WriteApplicationPage(flashPosition);
9
   SP_WaitForSPM();
10
   // RWW-Section o.ä. reenable?? Fixme
11

12
}
Angehängte Dateien:
OP (Firma: Vispiron) #1413359
Lesenswert?

Hi Simon!
Ja, die AppNotes sind bekannt und genauso wie der Beispielcode AVR1316 
für jeden der ähnliche Probleme hat eine echte Bank (inkl. der Treiber 
sp_driver.h mit quellcode in sp_driver.s).

Ich konnte das Problem heute mit einem Kollegen beheben.
Entscheidend war die FLASH_BLOCK_SIZE auf 512 Bytes zu stellen UND in 
unserem existierenden Bootloadercode einen Datentyp zu ändern.
Wir hatten bisher den Bootloader für einen ATMEGA laufen mit einer 
Flashblockgröße von 256 Bytes. Genutzt wurde boot_pagefill aus der 
boot.h.
Wir hatten sorglos zum Funktionsaufruf auf uint8_t gecastet. Das ist uns 
beim Xmega zum Verhängnis geworden, da mit den 8-Bit nur die erste 
Hälfte der Bootpage beschrieben wird. Ansonsten ist die Funktionsweise 
der AVR1316-Funktion SP_LoadFlashWord praktisch gleich gegenüber 
boot_pagefill.

Dank und Gruß, Peter

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