4KB Sector Erase bei einem SST25V Flash

OP #3428208
Lesenswert?
• ▲
▼
Hi,

ich traue es mir ja schon garnicht zu Fragen.

Ich habe hier einen Flash Speicher der in 4KB sectoren unterteilt ist,
bevor ich da hinein schreiben kann muss sicher gestellt sein das dieser 
sector gelöscht ist.

Microchip hat da in seinem TCP Stack (SPIFlash.c) das so gelöst:
1
#define SPI_FLASH_SECTOR_SIZE    (4096ul)
2
#define SPI_FLASH_SECTOR_MASK    (SPI_FLASH_SECTOR_SIZE - 1)
3
   if((dwWriteAddr & SPI_FLASH_SECTOR_MASK) == 0)
4
                SPIFlashEraseSector(dwWriteAddr,ERASE_4K);

Schreibe ich nun auf diesen Sector so wird der Sector gelöscht:
1
524288 (0x00080000) (00000000 00001000 00000000 00000000)  <- dwWriteAddr
2
  4095 (0x00000FFF) (00000000 00000000 00001111 11111111)  <- SPI_FLASH_SECTOR_MASK

1. Frage:
 Wird der Sector gelöscht beim schreiben des ERSTEN Bytes in diesen 
Sector?
 oder wird beim schreiben des letzten Bytes in diesen Sector bereits der 
nächste gelöscht? (wäre ja idiotisch)

2. Frage:
 Warum wird in der oben genannten Funktion, mit den Variablen 
SPIFlashEraseSector aufgerufen?
 Weil (0x00080000 & 0x00000FFF) offensichtlich 0 ist?
 Nur das würde doch bedeuten das er auf ein  (0x00000FFF & 0x00000FFF) 
wartet was einer 4095
 und somit dem letzten Byte im
 sector

3. Frage:
Die Microchip Appconfig wird im beispiel an Adresse 0x00 geschrieben, 
und hier wieder das selbe spiel:
(0x00000000 & 0x00000FFF) scheint wieder ==0 und somit wird der flash 
gelöscht.
Kann es sein das Flash erase jedesmal ausgeführt wird ausser an der 
sector grenze?
Und vorallem hat soetwas nicht erheblich auswirkungen auf die lebenszeit 
vom Flash?

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.