Money.plTechnologie dla biznesu Grupy dyskusyjne pl.misc.elektronika Organizacja danych w EEPROM

Organizacja danych w EEPROM

Organizacja danych w EEPROM

Bool <n...@nospam.com> / 2013-06-06 10:49:32
W pewnym urz▒dzeniu muszŕ zapisywaŠ do 512 zdarze˝ do pamiŕci EEPROM. Z tym urz▒dzeniem bŕdzie siŕ
komunikowaŠ drugie, ktˇre kolejno bŕdzie te dane odczytywaŠ. Potrzebujŕ wiŕc dodatkowo zapisywaŠ dwa
wska╝niki zapisu i odczytu danych. EEPROM ma 1mln cykli zapisu, wiŕc przy standardowym zapisie (dane
i wska╝niki zawsze pod tym samym adresem) zapiszŕ 1mln zdarze˝. Chcia│bym zwiŕkszyŠ t▒ liczbŕ.
EEPROMy s▒ bardzo tanie, wiŕc wykombinowa│em ┐e dam np. taki 8kB = 256 stron * 32 bajty.
Dane (zdarzenia) zapisywa│bym powiedzmy na 254 stronach a wska╝niki na dwˇch ostatnich stronach. No
i pojawia siŕ problem zapisu wska╝nikˇw. Najprostsze rozwi▒zanie jakie przychodzi mi do g│owy to na
pocz▒tku wyzerowaŠ ca│▒ stronŕ przeznaczon▒ na wska╝nik, i w momencie zapisu/odczytu zapisywaŠ
wska╝nik po kolei w pamiŕci, a po dojÂciu do ko˝ca pamiŕci zerowaŠ ca│▒ stronŕ i zapisywaŠ od
pocz▒tku. »eby odczytaŠ wska╝niki, trzeba by szukaŠ "wartownika" w postaci 0x0000 (adres 16 bitowy).
Czas nie jest tu elementem krytycznych, poniewa┐ minimalny czas pomiŕdzy wyst▒pieniem zdarze˝ to
400ms. Czy macie jakie inne pomys│y?
 
Czytaj tak┐e na forum

Re: Organizacja danych w EEPROM

Piotr_Ga│ka <p...@cutthismicromade.pl> / 2013-06-06 12:35:13

U┼╝ytkownik "Bool" napisa┼é w wiadomo┼Ťci
news:51b04d1f$0$1255$65785112@news.neostrada.pl...
>W pewnym urz─ůdzeniu musz─Ö zapisywa─ç do 512 zdarze┼ä do pami─Öci EEPROM. Z tym
>urz─ůdzeniem b─Ödzie si─Ö komunikowa─ç drugie, kt├│re kolejno b─Ödzie te dane
>odczytywa─ç. Potrzebuj─Ö wi─Öc dodatkowo zapisywa─ç dwa wska┼║niki zapisu i
>odczytu danych. EEPROM ma 1mln cykli zapisu, wi─Öc przy standardowym zapisie
>(dane i wskaźniki zawsze pod tym samym adresem) zapiszę 1mln zdarzeń.
>Chcia┼ébym zwi─Ökszy─ç t─ů liczb─Ö. EEPROMy s─ů bardzo tanie, wi─Öc wykombinowa┼éem
>┼╝e dam np. taki 8kB = 256 stron * 32 bajty.
> Dane (zdarzenia) zapisywałbym powiedzmy na 254 stronach a wskaźniki na
> dw├│ch ostatnich stronach. No i pojawia si─Ö problem zapisu wska┼║nik├│w.
> Najprostsze rozwi─ůzanie jakie przychodzi mi do g┼éowy to na pocz─ůtku
> wyzerowa─ç ca┼é─ů stron─Ö przeznaczon─ů na wska┼║nik, i w momencie
> zapisu/odczytu zapisywa─ç wska┼║nik po kolei w pami─Öci, a po doj┼Ťciu do
> ko┼äca pami─Öci zerowa─ç ca┼é─ů stron─Ö i zapisywa─ç od pocz─ůtku. ┼╗eby odczyta─ç
> wska┼║niki, trzeba by szuka─ç "wartownika" w postaci 0x0000 (adres 16
> bitowy). Czas nie jest tu elementem krytycznych, poniewa┼╝ minimalny czas
> pomi─Ödzy wyst─ůpieniem zdarze┼ä to 400ms. Czy macie jakie┼Ť inne pomys┼éy?

Sprawd┼║ FRAM.
Nigdy nie używałem, ale o ile wiem to różnica jest taka:
EEPROM - zapisy go zu┼╝ywaj─ů, czyta─ç mo┼╝na dowoln─ů ilo┼Ť─ç razy.
FRAM - zar├│wno zapisy jak i odczyty go zu┼╝ywaj─ů, ale ilo┼Ť─ç tych zapis├│w
odczyt├│w jest ile┼Ť (nie wiem ile) razy wi─Öksza od EEPROM├│w. Zapis jest chyba
tak samo szybki jak do RAM.
Jeszcze przed rokiem 2000 na targach Elektronika w Monachium widziałem taki
pokaz że razem były męczone EEPROM i FRAM. EEPROM wysiadał chyba po
kilkunastu minutach, a FRAM wytrzymywał cały dzień. Ale może wtedy to
EEPROMy były gorsze niż teraz.
P.G.
 

Re: Organizacja danych w EEPROM

Bool <n...@nospam.com> / 2013-06-06 12:51:25
W dniu 2013-06-06 12:35, Piotr Ga│ka pisze:
> Sprawd╝ FRAM.

FRAM to dobry trop. Zdecydowanie dro┐sze rozwi▒zanie, ale w tym projekcie mogŕ sobie na to pozwoliŠ.
Widzŕ ┐e s▒ F-RAMy z interfejsem I2C pinowo zgodne z AT24Cxx. W dokumentacji FM24CL64 widnieje
"Unlimited Read/Write Cycles". Trochŕ mnie to zaskoczy│o.

 

Re: Organizacja danych w EEPROM

"Gejzero SQ3OGX" <g...@poczta.onet.pl> / 2013-06-06 15:01:50

U┼╝ytkownik "Bool" napisa┼é w wiadomo┼Ťci
news:51b04d1f$0$1255$65785112@news.neostrada.pl...
>W pewnym urz─ůdzeniu musz─Ö zapisywa─ç do 512 zdarze┼ä do pami─Öci EEPROM. Z tym
>urz─ůdzeniem b─Ödzie si─Ö komunikowa─ç drugie, kt├│re kolejno b─Ödzie te dane
>odczytywa─ç. Potrzebuj─Ö wi─Öc dodatkowo zapisywa─ç dwa wska┼║niki zapisu i
>odczytu danych. EEPROM ma 1mln cykli zapisu, wi─Öc przy standardowym zapisie
>(dane i wskaźniki zawsze pod tym samym adresem) zapiszę 1mln zdarzeń.
>Chcia┼ébym zwi─Ökszy─ç t─ů liczb─Ö. EEPROMy s─ů bardzo tanie, wi─Öc wykombinowa┼éem
>┼╝e dam np. taki 8kB = 256 stron * 32 bajty.
> Dane (zdarzenia) zapisywałbym powiedzmy na 254 stronach a wskaźniki na
> dw├│ch ostatnich stronach. No i pojawia si─Ö problem zapisu wska┼║nik├│w.
> Najprostsze rozwi─ůzanie jakie przychodzi mi do g┼éowy to na pocz─ůtku
> wyzerowa─ç ca┼é─ů stron─Ö przeznaczon─ů na wska┼║nik, i w momencie
> zapisu/odczytu zapisywa─ç wska┼║nik po kolei w pami─Öci, a po doj┼Ťciu do
> ko┼äca pami─Öci zerowa─ç ca┼é─ů stron─Ö i zapisywa─ç od pocz─ůtku. ┼╗eby odczyta─ç
> wska┼║niki, trzeba by szuka─ç "wartownika" w postaci 0x0000 (adres 16
> bitowy). Czas nie jest tu elementem krytycznych, poniewa┼╝ minimalny czas
> pomi─Ödzy wyst─ůpieniem zdarze┼ä to 400ms. Czy macie jakie┼Ť inne pomys┼éy?

Nie wiele to da ale mo┼╝e tak - zastosowa─ç po┼Ťrednie wska┼║niki i lepiej
wykorzysta─ç pami─Ö─ç.
Podzieli─ç ca┼é─ů pami─Ö─ç na umowne strony np. po 584 bajt├│w co daje 14 obszar├│w
"umownych stron" i zajmuje 8176 bajt├│w
Pozostaje 16 poza stronami i w nich umieszczasz główny wskaźnik do umownej
strony (Wska┼║niki w przypadku rozjechania odczytu i zapisu mi─Ödzy stronami)
Na pocz─ůtku ka┼╝dej umownej strony masz 72 bajty na wskazniki w obszarze
strony i licznik przepełnienia strony
Ja bym wpakowa┼é w pierwszych 4 bajtach strony dwa wska┼╝niki "po┼Ťrednie" do
miejsca zapisu i odczytu w obszarzes danej strony,
w nast─Öpnych zale┼╝nie od przyj─Ötej ilo┼Ťci zapis├│w jakie wytrzyma wskaznik
tyle bajtów bym przeznaczył na zapisanie licznika przepełnien strony strony.
Po okre┼Ťlonej liczbie obieg├│w strony, zwi─Ökaszamy wska┼║nik g┼é├│wny
jednocze┼Ťnie przesuwamy sie ze wska┼╝nikami o 4 pozycje w "prawo".
Zostawiaj─ůc po "lewej stronie zu┼╝yte kom├│rki wska┼║nik├│w po┼Ťrednich" i
wykorzystujemy na wska┼║niki po┼Ťrednie kom├│rki dotychczas wykorzystywane na
zapis licznika przepełnienia strony
Zn├│w po okre┼Ťlonej liczbie obieg├│w strony powatarzamy zabieg zmiany w
g┼é├│wnym wska┼║niku i przesuwanie po┼Ťrednich wska┼╝nik├│w w prawo i tak d┼éugo a┼╝
uzamy ┼╝e obszar strony nie nadaje si─Ö do u┼╝ycia.

Po kolejnym zwi─Ökszeniu g┼é├│wnego wska┼║nika przeskakujemy na nast─Öpn─ů stron─Ö
i zn├│w "u┼Ťmercamy" kom├│rki w kolejnej umownej stronie.


Przyjmuj─ů─ç 1 mln cykli zapisu kom├│rek jako g├│rn─ů granic─Ö ┼╝ywotno┼Ťci, ┼╝eby
ka┼╝d─ů kom├│rk─Ö w obszarze strony zapisa─ç 1 mln razy liczniki zapisa┼éy by si─Ö
512 mln razy.

A w tym wykonaniu, maj─ůc 72 bajty na liczniki, z czego 4 bajty na wska┼║nik
w obszarze strony i 3 lub 4 bajty na licznik przepełnienia stron możemy
przesuwac si─Ö z licznikami 17 razy w praw─ů stron─Ö, i zawsze mie─ç licznik
zapisywany w miare ┼Ťwie┼╝ej kom├│rce.

Wychodzi ┼╝e ka┼╝d─ů stron─Ö mo┼╝na zapisa─ç 1mln / 512 * 17 czyli oko┼éo 33 ty┼Ť
razy.

Mo┼╝na zmniejszy─ç ilo┼Ť─ç stron jedno─çze┼Ťnie zwi─Ökszajac obszar na liczniki i
uzyskac wi─Öksz─ů ilo┼Ť─ç zapis├│w.

Zostajew jeszcze drobny szczegół jeżeli zapis dochodzi do końca "żwywotu"
strony to nale┼╝y zadba─ç ┼╝eby odczyt nast─ůpi┼é z w┼éa┼Ťciwej strony. Mo┼╝e trzeba
by zastosowa─ç osobne zestawy wska┼║nik├│w do zapisu i odczytu.

Cała idea polega na tym żeby przesuwac się ze wskaźnikami do coraz to nowych
komórek a położenie tych wskaźników wyliczać na podstawie jednego lub 2
wskaźników głównych które będa na tyle rzadko zapisywane że nie powinny się
uszkodzi─ç.

Z wylicze┼ä wida─ç ┼╝e ilo┼Ť─ç zapis├│w samych danych ni jak si─Ö ma do maksymalnej
wytrzyma┼éo┼Ťci kom├│rek. Wychodzi na to ┼╝e nale┼╝a┼éo by na wska┼║niki
przesnaczy─ç praktycznie ca┼éy obszar pami─Öci :/ pozostawiaj─ůc jedna stron─Ö na
same dane.

Tutaj masz wszystko wyliczane na podstawie odczytu kilku kom├│rek z czego 2
lub 4 pierwsze, kt├│e musimy odzyta─ç, znajduj─ů si─Ö w sta┼éym miejscu, a reszta
to dodawania i mno┼╝enie.

Ale elaborat wysmarowa┼éem ;) My┼Ťl─Ö ┼╝e nie waln─ů┼éem si─Ö w za┼éo┼╝eniach.

Pozdr. Gejzero


 

Re: Organizacja danych w EEPROM

Bool <n...@nospam.com> / 2013-06-06 15:09:23
W dniu 2013-06-06 15:01, Gejzero SQ3OGX pisze:
> Ale elaborat wysmarowa│em

Dziŕkujŕ! Ciekawy pomys│.


 
wstecz
1 2
wspˇ│praca