Wykorzystanie zaawansowanych możliwosci pamięci EEPROM w mikrokontrolerach Kinetis
Część mikrokontrolerów z rodziny Kinetis posiada funkcję FlexMemory, która pozwala konfigurować użytkownikom niektóre obszary pamięci Flash jako pamięć innego typu (EEPROM, dodatkowa pamięć Flash lub kombinacja ich obu). W tym przewodniku omówione zostały sposoby użycia FlexMemory jako pamięci EEPROM.
Cechy pamięci EEPROM (Enhanced EEPROM, EEE) w układach Kinetis
Pamięci FlexMemory w układach Kinetis posiadają kilka użytecznych cech charakterystycznych dla EEE, które pozwalają na zastąpienie zewnętrznych pamięci EEPROM i poprawę ich wydajności. Do zalet tych należą:
- Konfigurowalność umożliwiająca projektantowi podejmowanie decyzji o wymianie trwałości pamięci EEE na całkowitą ilość pamięci, w zależności od wymagań na pojemność pamięci,
- Pamięci EEE o wysokiej trwałości mogą wytrzymać ponad 100 milionów cykli, w zależności od konfiguracji,
- Wsparcie dla dostępu bajtowego, za pomocą słów (16 b) i długich słów (longword – 32 b),
- Krótkie czasy zapisu (~100 μs przy zapisie do uprzednio wyzerowanej komórki, 1,5 ms dla zerowania i programowania),
- EEE działa poprawnie w całym zakresie napięć pracy procesora (1.71 – 3.6 V).
Jak działa FlexMemory EEE
W celu zapewnienia rozszerzonej funkcjonalności EEPROM, FlexMemory wykorzystuje blok RAM (FlexRAM), blok Flash (FlexNVM) i automat EEE. Gdy funkcjonalność EEE jest włączona, FlexRAM staje się pamięcią EEE. Przestrzeń adresowa EEE jest miejscem, gdzie znajdują się wszystkie dane EEE. Podczas dostępu do EEE, automat śledzi dane i przechowuje ich kopię jako rekord danych, znajdujący się w części FlexNVM używanej jako E-Flash. Wykorzystanie większego bloku E-flash do buforowania przy mniejszej ilości danych EEE pozwala uzyskać pamięci FlexMemory wykorzystujące EEE o wyjątkowo długiej żywotności.
Automat EEE używa 32-bitowych rekordów do przechowywania danych z EEE w pamięci Flash. Szesnaście bitów rekordu stanowi miejsce na dane, a pozostałe szesnaście to adres i informacje o statusie danych. Rekordy danych są zapisywane i kasowane w miarę potrzeby. Oznacza to, że jeśli dana lokacja w pamięci EEPROM nigdy nie była używana, nie będzie odpowiadającego jej rekordu. Pozwala to zredukować ilość informacji potrzebną do przechowywania danych i może polepszyć trwałość pamięci.
Jak FlexMemory EEE wykorzystuje pamięć
Urządzenia, które oferują wsparcie FlexMemory, posiadają dwa oddzielne bloki Flash: blok P-Flash i blok FlexNVM. Blok P-Flash jest przeznaczony do użycia jako blok pamięci programu, ale może być w praktyce wykorzystany zarówno do przechowywania instrukcji, jak i danych. Z kolei blok FlexNVM jest konfigurowalnym blokiem Flash, który może stanowić zarówno dodatkową pojemność Flash (D-Flash), przestrzeń przechowującą kopię pamięci dla wzbogacanego EEPROM (E-Flash), jak i kombinację obu powyższych. Pamięć FlexMemory składa się z blokówFlexNVM, FlexRAM i automatu EEE. Wsszystkie te trzy bloki są konieczne, aby zapewnić działanie pamięci EEE.
Na rysunku 1 przedstawiono bloki Flash i elementy FlexMemory w układzie 256 kB wykorzystującym FlexMemory. W tym przypadku nie dokonano partycjonowania układu, zatem blok FlexNVM nie został przeznaczony na D-Flash ani E-Flash.
Uwaga Numery seryjne urządzeń z rodziny Kinetis oznaczają tylko rozmiar bloku P-Flash, zatem pojemność FlexNVM nie jest podana w sposób jawny w nazwie elementu. Na przykład MK60X256 posiada 256 kB P-Flash i 256 kB FlexNVM. |
Rys. 1. Układ 256 kB wykorzystujący FlexMemory przed partycjonowaniem
Na rysunku 2 przedstawiono funkcjonowanie bloków pamięci procesora wykorzystującego FlexMemory w sytuacji, gdy opcja EEE jest wyłączona.
Rys. 2. Układ 256 kB z FlexMemory i wyłączonym EEE
P-Flash zawsze pozostaje pamiecią typu P-Flash. Jej zastosowanie nie zmienia się w żadnej z konfiguracji FlexMemory. Ponieważ w tym wypadku funkcja EEE nie jest używana, cała pamięć FlexNVM jest zaalokowana w przestrzeni D-Flash (E-Flash nie jest potrzebna). Pamięć FlexNVM staje się 4 kilobajtami tradycyjnej pamięci RAM. Oznacza to, że może być użyta jako dodatkowa przestrzeń pamięci, lecz należy pamiętać, że jest taktowana tym samym zegarem co pamięć Flash, a nie zegarem rdzenia. Automat EEE jest obecny w urządzeniu, ale nieaktywny.
Na rysunku 3 przedstawiono funkcje bloków pamięci procesora wykorzystującego FlexMemory w sytuacji, gdy opcja EEE jest wyłączona, a cała FlexNVM przechowuje kopię danych EEE.
Rys. 3. Układ 256 kB z FlexMemory i aktywnym EEE (Całe FlexNVM jest wykorzystywane do buforowania EEE)