O.K. Sam sobie poradziłem z problemem :). Sprawa z zapisem danych na pamięć flash tak aby po ponownym załączeniu zasilania dane tam wciąż były (EMULACJA PAMIĘCI EEPROM) okazuje się być bardzo skomplikowana. He pewnie dlatego nikt na forum nie wiedział ;). Zacznijmy od tego, że jeśli chcemy zapisać coś do pamięci flash to musimy dokładnie wiedzieć pod...
Wcześniej użyłem volatile bo chciałem wymusić odczyt tych tablic za każdym razem z pamięci FLASH. A nie z jakiegoś rejestru gdzie wartość mogła by zostać zapamiętana. W tym celu, żeby po przeprogramowaniu pamięci, program na pewno operował na nowych wartościach. Ale mam rozumieć że w tym wypadku volatile nie pełni roli wymuszenia każdorazowego dostępu,...
Dzięki za odpowiedź, ale to chyba nie jest w HAL... Zgadza się. Nie jest. Ale STM przepisał te algorytmy również na HAL i te źródła znajdują się np. w repozytorium CubeMx w ścieżce: Repository\STM32Cube_FW_F1_V1.6.1\Projec... To jest akurat dla tego typu uC który jest na tym Nucleo, ale jeśli potrzeba...
Witajcie ponownie :) Wybaczcie, że dopiero teraz odpisuję. Ogólnie "odpaliłem" wreszcie te emulację EEPROMa w FLASH. Działa, ale mam jedno pytanie, wirtualny adres zmiennych, czy muszę jakoś uważać na to co tam wpiszę? Chodzi mi o tę linijkę kodu: [syntax=c]uint16_t VirtAddVarTab[NB_OF_VAR] = {0x5555, 0x6666, 0x7777};[/syntax] To pytanie dedykuję głównie...
Flash musisz kasować blokami, to nie działa jak EEPROM, że możesz skasować pojedynczą komórkę. Gdzieś widziałem przykład emulacji pamięci EEPROM za pomocą pamięci flash... O, już wiem, w książce p. Lucjana Bryndzy o ARMach 9 jest przykład, który wykorzystuje 2 bloki pamięci flash. Jest tam zrobione wirtualne adresowanie itp. Ale można zrobić też tak,...
W skrypcie linkera po prostu stwórz nową sekcję umieszczoną w konkretnych miejscach. Tutaj przykład z wydzielonymi dwoma ostatnimi stronami pamięci: MEMORY { rom (rx) : org = 0x08000000, len = 128k - 2k rom_p126 (r): org = 0x08000000 + 126k,len = 1k rom_p127 (r): org = 0x08000000 + 127k,len = 1k ram (rwx)...
Nie korzystałem jeszcze z emulacji EEPROMu na Flashu STMa ale to chyba też tyczy się do modyfikacji Flasha ?
Mam problem z wgraniem programu do procesora po tym jak wrzuciłem do niego program mający zapisywać dane do pamięci flash w trakcie jego działania (kod do emulacji eeproma zaczerpnąłem: Aktualnie każdorazowo po próbie przeprogramowania procesora wyskakuje mi komunikat „Flash timeout. Reset and try again.”, a następnie „Error: Flash...
Dokładnie przed świętami do celów 'naukowo/badawczych' czyli dokładnie w celu zaznajomienia się z 'STM32 & wewnętrzny EEPROM' zakupiłem na kamami.pl : Same procesory STM32L011K4T6 i STM32L021K4T6 plus NUCLEO z STM32L031 wszystko z EEPROM na pokładzie. Do produkcji zakupy będą oczywiście gdzie indziej. Jesli autorowi nie przeszkadza że to M0+ to proponuję...
Przy 40kB zastanów się jednak nad zastosowaniem zewnętrznej pamięci np. flash SPI typu M25Qxx, W25Qxx, AT45DBxx. Strony w STM32F1 są dość małe (2kB) do tego w emulacji używasz 2 stron na 2kB danych. Kasowanie takiej ilości też trwa kilka sekund. Sprawa naprawdę do przemyślenia.
Proponujesz też, jako alternatywne rozwiązanie użyć wewnętrznej pamięci flash uC. I za każdym razem, kasowanie pamięci usuwa również wszystkie potrzebne dane, które miały być chronione. Przy słynnej "emulacji EEPROMu" nie jest tak źle, choć oczywiście trzeba się liczyć z tym że zanik zasilania w momencie gdy coś na tym flash jest zapisywane/kasowane...
Witajcie, Jak to jest z tym eeprom-em w STM32? Mam przykładowo procesor STM32L010K4, on ma w sobie 128B pamięci eeprom. Chciałbym z tego skorzystać, ale jakoś nigdzie nie mogę znaleźć żadnych przykładów czy filmów, wszędzie mówi się o emulacji tej pamięci w obszarze pamięci flash. W jaki sposób mogę w CubeIDE skorzystać z wewnętrznego eepromu?
A bawił się ktoś z Was tymi gotowcami od ST? Nie mogę tego uruchomić za bardzo. Na jednym małym projekcie działa ale jak chcę to dorzucić do FreeRTOS to już nie bardzo. Mam Taki kod: static void prvSetupHardware(void) { /* Start with the clocks in their expected state. */ RCC_DeInit(); /* Flash 0 wait state */ //FLASH_SetLatency(FLASH_Latency_2...
Powyższy przykład jest właśnie implementacją 'sensownego' mechanizmu odbioru danych przez DMA. Procek tak czy siak musi parsować kazdy odebrany bajt, ale po co ma - co bajt - marnować 12 cykli na wejście do ISRa? Gdy nadawca przerwie strumien, nie stanie się nic. Jak rozsynchronizuje - stanie się to samo - nic . Zauwaz, ze DMA pracuje w trybie circular,...
Potrzebuję w moim projekcie zapisać do Flash w razie gdy by zabrakło prądu tablicę zmiennych: [syntax=c]uint8_t zamienna[20][/syntax]. Zapis najlepiej gdy by na końcu pamięci Flash, by nie kolidowało nic. Próbuję to zrobić przerabiając bibliotekę EEPROM od ST jak i na podstawie notki o emulacji, ale taki syf mi wyszedł, że przy próbie zapisu uC się...
W emulowanym EEPROMie najwygodniejszą opcją jest przechowywanie danych o stałym rozmiarze, który przy okazji w jakiś sensowny sposób pozwala wykorzystać rozmiar strony. Jeśli możesz się ograniczyć tak że KAŻDY wpis ma ten sam rozmiar, to emulowany EEPROM jest opcją. Choć wiele zależy od tego jaki dokładnie STM32 - w niektórych (np. STM32F4) najmniejszy...
Ta tablica nie jest potrzebna - ona jest tylko do celów demonstracji (jak zwykle w przypadku ST bardzo głupiej). U siebie mam "adresy" zmiennych (czyli to co tam jest w tej tabeli) jako zwyczajne define'y. Jeśli chciałbyś zapisać 2000 dwubajtowych niezależnych elementów, to ta emulacja eepromu się nie nada - potrzebowałbyś przecież 2000 x (2 + 2) =...
Nie - są to źródła na podstawie których można bazować w przypadku tego typu układów, oraz na których ja bazuje - obsługa enc28j60 pod kontrolą FreeRTOS'a i uIP. ENC bardzo się grzeje? ... czuć, że jest ciepły ale nie na poziomie "parzenia", więc myślę, że nie jest źle :) // UPDATE 25.10.2012: - dodałem obsługę zmiany adresu IP urządzenia z poziomu konsoli...
Już wszystko jasne. Przyznaje, jestem ciamajda! eeprom.h [syntax=c] /* EEPROM start address in Flash */ #define EEPROM_START_ADDRESS ((uint32_t)0x08002000) /* EEPROM emulation start address: from sector2, after 8KByte of used Flash memory */ [/syntax] Ludzie z STMu radośnie założyli, że skoro chce emulować eeprom to na pewno będę chciał zapisywać wartości...
Oczywiście że się da (; ST ma notę aplikacyjną o emulacji EEPROMu, ale ten ich pomysł nie jest do końca idealny... 4\/3!!
Nie zrozumiałeś, o co chodzi, a chodzi o ograniczenie liczby operacji kasowania. Nie wiem, jak to robi ST, ale typowo robi się to tak, że Flash przechowuje wartości elementów wektora, który może być unią "narzuconą" na strukturę. Przy każdej modyfikacji pola struktury do pamięci Flash zapisuje się indeks zmodyfikowanego elementu wektora i jego nową...
Poszukaj noty aplikacyjnej od ST o "emulacji EEPROMU" + przeszukaj forum pod tym własnie hasłem. Czytając notę ST miej na uwadze to, że niektóre rzeczy są tam przedstawione w sposób przesadnie skomplikowany i niezbyt fortunnie nazwane (szczególnie wszelkie wystąpienia słowa "adres wirtualny" traktuj jako "identyfikator"). 4\/3!!
No fakt, obsługa Flasha z prostą emulacją EEPROM to aż 30..40 linii kodu. ;)
Jest jakieś inne obejście problemu ograniczonej liczby cykli zapisu flash? Można zapisywać mniej informacji i używać emulacji EEPROMu. Jeśli jednak masz do zapisania "dużo", to nic nie zmienisz. Niestety nie rozwiązało to mojego problemu, gdyż jak zmierzyłem czas potrzebne do zapisania całej strony flash (1 kB) to potrzebuje ok 30 ms, a po wyłączeniu...
Jak to obliczyłeś? Pewnie 1024/4 bajty = 256, ale tutaj tak to nie działa. Strona 1024 bajty to 1024 bajty, inaczej 512 półsłów. Zapis do stron pamięci w STM32F0 wymaga zapisywania półsłów, do jednej strony oczywiście można zapisać 512 półsłów. Tzw. "emulacja EEPROMu" zapisuje wartość zmiennej (2 bajty) + "identyfikator zmiennej" (2 bajty), a więc...
(at)Freddie Chopin Tylko że dalej nie ma co porównywać... to tak trochę jak by marudzić że ktoś kiedyś stworzył taki wynalazek jak Fiat 126p. Powiedzmy sobie tak obecnie na 8 bitowych AVR-ach nie ma totalnie sensu pisać jakiegoś rozbudowanego kodu. Natomiast świetnie się nadają tam gdzie trzeba coś prostego zrobić szybko... np. na jakimś ATTiny. Weźmy...
Zniechęcił mnie brak eepromu. Kompletnie nie jest dla mnie zrozumiałe, aby w takich nowoczesnych procesorach robić takie ograniczenia. Po prostu coś takiego przydaje się wbrew pozorom nie tak często, a jak już jest potrzebne, to łatwo zastąpić czymś innym: - pamięcią zewnętrzną (chip, karta SD, ...) jeśli i tak jest na płytce, - pamięć podtrzymywana...
Sklep element14 rozpoczął dystrybucję potrójnej, budżetowej platformy Embedded Pi, która będzie stanowić pomost pomiędzy niezwykle popularnymi w świecie konstruktorów Raspberry Pi, Arduino oraz 32-bitowym wbudowanym ARM. Nowa płyta będzie dostępna za pośrednictwem sklepów element14, MCM oraz CPC. Nowa platforma daje możliwość bezpośredniego połączenia...
Chce zaimplementować emulację EEPROMu za pomocą FLASHa w mikrokontrolerze STM32F429. Te mikrokontrolery mają taki podział sektorów: (tabelka jest z F41x, ale dla F42x i F43x jest tak samo). No i jak widać używanie ostatnich sektorów jest niewygodne, bo są one bardzo duże. Trzeba użyć któregoś z pierwszych. Niestety nie można użyć zerowego przesuwając...
Może się mylę ale chyba nie ma (przynajmniej w rozsądnej cenie) uP 32bit jednocześnie z ADC, EEPROM i PWM. Jeżeli jest to chętnie poznam taki wynalazek. W 99% przypadków można z poziomu programu zapisywać Flash i tym samym dorobić sobie emulację EEPROMu o praktycznie dowolnej pojemności. Sam uzywam takiego wynalazku na STM32. No jak dla mnie to lekko...
Na dane trzeba zarezerwować min. dwa sektory "kasowalne". Nie rozumiem czemu "trzeba" - z jednym sektorem też można sobie poradzić... Sektor 1kB to luksus. LPC11xx(L) mają 4kB sektory. Mają również nie za dużo flasha, co w przypadku rozbudowanych kodów, uciążliwe jest marnowanie 4kB na zapis kilkudziesięciu bajtów konfiga. Właśnie tu, gdzie kupuje...
Dzień dobry! Chciałbym opisać mój projekt sterownika do układów WS281x, czyli coraz bardziej popularnych pasków diodowych (i nie tylko) z indywidualnie, szeregowo sterowanymi diodami. Do wykonania samego projektu skłoniła mnie potrzeba sterowania takimi paskami, które kupiłem u chińczyka. Materiały do urządzenia są wdrodze, stąd jeszcze dział DIY Początkujący/Niedokończone....
Nie ma właśnie nic więcej wspomniane o tym, przewija się raz jeszcze na początku ta fraza, ale żadnego objaśnienia Jest w DS objaśnienie (koło strony 500, "Theory of Operation" ) The EEPROM operates using a traditional Flash bank model which implements EEPROM-type cells, but uses sector erase. Additionally, words are replicated in the pages to allow...
Cześć morgan_flint! Możesz zajrzeć do starego open source JYE - Tutaj znajdziesz pliki eeprom.h i .c. Ten "sterownik" to emulacja eepromu. Oznacza to, że dane są przechowywane w wewnętrznej pamięci flash MCU. Zobacz Widzimy, że chodzi o zapisywanie zmian zmiennych w sposób przyrostowy. Oznacza to, że nie zapisujemy wszystkich zmiennych za jednym razem...