ESP8266 + SDK - zapis struktury do pamięci flash

Może ktoś się orientuje jak to można zrobić, bo nigdzie nie mogę znaleźć dokładnej instrukcji. Wiem, że korzystając z Arduino można skorzystać z biblioteki wzorowanej na AVR-owym EEPROM.h. Ja jednak preferuję natywne SDK z uwagi na wykorzystanie callbacków oraz fakt, że używam już opartych na nim bibliotek.

Wiem, że istnieją funkcje do zapisu danych do pamieci flash: spi_flash_erase_sector() spi_flash_write() spi_flash_read()

Jednak jak ustalić obszar pamięci, do którego mogę bezpiecznie zapisywać swoje dane? Czy przez zapisaniem/po odczytaniu struktury będę musiał wykonać jeszcze jakieś dodatkowe operacje, związane np. z wyrównywaniem bajtów?

Reply to
Atlantis
Loading thread data ...

Może wykorzystać jakiś gotowiec emulujący eeprom. Nie używałem.

formatting link
ostrzeżenie przed nadpisaniem danych jest więc sprawdzić będzie trudno.

Pozdrawiam

Użytkownik "Atlantis" napisał w wiadomości grup dyskusyjnych:59931d3a$0$15208$ snipped-for-privacy@news.neostrada.pl...

Może ktoś się orientuje jak to można zrobić, bo nigdzie nie mogę znaleźć dokładnej instrukcji. Wiem, że korzystając z Arduino można skorzystać z biblioteki wzorowanej na AVR-owym EEPROM.h. Ja jednak preferuję natywne SDK z uwagi na wykorzystanie callbacków oraz fakt, że używam już opartych na nim bibliotek.

Wiem, że istnieją funkcje do zapisu danych do pamieci flash: spi_flash_erase_sector() spi_flash_write() spi_flash_read()

Jednak jak ustalić obszar pamięci, do którego mogę bezpiecznie zapisywać swoje dane? Czy przez zapisaniem/po odczytaniu struktury będę musiał wykonać jeszcze jakieś dodatkowe operacje, związane np. z wyrównywaniem bajtów?

Reply to
pawel

W dniu 15.08.2017 o 18:11, Atlantis pisze:

Zacznij od sprawdzenia czy da się jednocześnie kasować jeden sektor w pamięci flash a drugi w tym samym czasie czytać - z tego co widzę w datasheetach flashy SPI, to nie bardzo. Oznacza to, że w czasie kasowania sektora/zapisu, twój program będzie musiał się zatrzymać, bo tylko 32kB programu jest cache'owane a reszta jest w miarę potrzeby wczytywana z zewnętrznego flasha.

Tu masz mapę pamięci flash

formatting link
ęc możesz się zorientować gdzie jest trochę miejsca.

Reply to
Zbych

To ma być jakiś config w strukturze zapisywany w flash? Ja robię tak, umieszczam klasycznie strukturę w ram,. Kompilator sam zadba o odpowiednie wyrownanie. Później kompiuje zawartość struktiry bajt po bajcie do dowolnego adresu flash. A gdy chcę ją załadować ładuję z flash do &struktura w ram. Można też strukturę czytać przez wskaźnik od razu z adresu flash jeśli wcześniej zadba się by adres był /4

Reply to
Marek

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.