Elektroda.pl
Elektroda.pl
X
Elektroda.pl
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

STM32 - zapis do pamięci flash

24 Sty 2011 13:06 4296 4
  • Poziom 23  
    Cześć
    Chciałbym zrobić emulowanego EEPROM-a i mam problem z odblokowaniem zapisu do pamięci FLASH.
    Pierwsze co zrobiłem to
    Code:

    FLASH->KEYR=0x45670123;
    FLASH->KEYR=0xCDEF89AB;

    Następnie sprawdziłem stan bitu LOCK w rejestrze CR i jest na 0 czyi dostęp do flasha jest możliwy. Chciałem zrobić zapis do pamięci zgodnie z diagramem na stronie 13 z STM32F10xxx Flash programming manual w efekcie wywala mi fault. Potem zobaczyłem dalej rejestr Write protection register i po odczycie są tam same 1, wgłębiając się w lekturę wspomnianego już programming manuala za cholerę nie mogę skapować jak odblokować pamięć tak żeby zrobić zapis. Może ktoś się bawił i udostępni jakiś kawałek kodu.

    Oczywiście komórka do której chcę zapisać jest w miejscu gdzie nie ma programu a strona jest skasowana. Zapis półsłowem to też już doczytałem :)
  • Pomocny post
    Specjalista - Mikrokontrolery
    Write protection jest ustawiany przez tzw. Option Bytes - najłatwiej chyba będzie go (jednorazowo) usunąć poprzez bootloader i programi Flash Loader Demonstrator albo przez JTAGa i OpenOCD - są specjalne komendy do tego celu.

    W nocie od ST - PM0042 Reading/programming the STM32F10xxx embedded Flash memory - jest opis sposobów odblokowania, u mnie strona 18 i 19.

    4\/3!!
  • Poziom 23  
    Dzięki Freddie za odpowiedź. Domyślnie wszystkie strony pamięci są odblokowane i tak też mi pokazał ten programik od ST. A dla potomnych okazało się że pisałem pełne 32 bity zamiast 16, bo zamiast wskaźnika

    Code:
    volatile unsigned short int *


    dałem

    Code:
    volatile unsigned int *
  • Specjalista - Mikrokontrolery
    I właśnie po to wymyślono typy takie jak uint16_t i inne z nagłówka stdint.h...

    4\/3!!
  • Poziom 23  
    Jakoś nie mogę się do tego przekonać, ale faktycznie zaoszczędziło by to sporo problemów tego typu.