RTV forum PL | NewsGroups PL

ESP8266 + SDK - zapis struktury do pamięci flash

NOWY TEMAT

elektroda.net NewsGroups Forum Index - Elektronika Polska - ESP8266 + SDK - zapis struktury do pamięci flash

Atlantis
Guest

Tue Aug 15, 2017 4:11 pm   



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?

pawel
Guest

Wed Aug 16, 2017 6:51 pm   



Może wykorzystać jakiś gotowiec emulujący eeprom. Nie używałem.
https://github.com/azim0ff/eeprom
Niestety 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$65785112_at_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?

pawel
Guest

Wed Aug 16, 2017 6:52 pm   



Ups. Nie doczytałem że chodzi o struktury danych.

Zbych
Guest

Wed Aug 16, 2017 7:28 pm   



W dniu 15.08.2017 o 18:11, Atlantis pisze:

Quote:
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?

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
https://github.com/esp8266/esp8266-wiki/wiki/Memory-Map
więc możesz się zorientować gdzie jest trochę miejsca.

Marek
Guest

Wed Aug 16, 2017 10:49 pm   



On Tue, 15 Aug 2017 18:11:31 +0200, Atlantis <marekw1986NOSPAM_at_wp.pl>
wrote:
Quote:
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?

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

--
Marek

elektroda.net NewsGroups Forum Index - Elektronika Polska - ESP8266 + SDK - zapis struktury do pamięci flash

NOWY TEMAT

RTV map News map