[elektro] Mikroproci EEPROM kérdés

Móczik Gábor pm_levlista at progzmaster.hu
Tue Mar 22 01:51:14 CET 2016


2016.03.19. 8:41 keltezéssel, Karoly Kovacs írta:
> 1. csinált-e már valaki közületek hasonlót? (Úgy értem, hogy írt-e
> valamelyikőtök olyan sokat EEPROM-ba, hogy meg kellett oldania ezt az
> életciklus problémát?)
> 2. jó-e az, ha azt csinálom, hogy az adatok előtt egy (írási) számlálót
> is kiírok, s ha ez a számláló mondjuk eléri a 100 ezres határt, akkor az
> egészet (számláló + adatok) arrébb költöztetem az EEPROM még szűz
> területére? (És így tovább, 100 ezer írásonként.)

Azt azért érdemes kiszámolni, hogy mennyi az átlagos adatsebesség és 
mennyi a tárhelyed, mert kettő hányadosa szorozva az endurance értékkel 
az elméleti max. MTBF amit el tudsz érni bármilyen algoritmussal (ha 
nincs cache). Ha ez még mindig kevés, akkor nagyobb külső tárhely kell.

Én nem csinálnám úgy ahogy írtad, hanem inkább úgy, hogy mindig más 
területre kerüljön az adat, és valahogy megkeresed melyik a friss.

Ez a valahogy többféleképpen lehetséges:

- számlálót írsz ki a blokkok elé, amit célszerűen nagyobb számoktól 
indítasz és csökkentesz. Amíg fut a szoftver, addig nyilvántarthatod, 
hogy hová kell írni a következő blokkot. Bekapcsolás után végigolvasod 
az egész tárhelyet, és megkeresed melyik a legkisebb, az a legfrissebb,
ha mindig a legrégebbit törlöd, akkor az valószínűleg az egy blokkal
odébbi, de kikeresheted a max értéket is.

- timestamp. Ha az adatblokk amúgy is tartalmazza, és a monotonitás 
garantálható, akkor ez alapján a legegyszerűbb.

Ha esetleg megoldod, hogy legyen egy korai power-loss jeled, amikor még 
van CPU táp, akkor RAM-ban cache-elhetsz és mondjuk kimented T indőnként 
biztonsági okból + powerloss esetén.

De attól is függ, milyen az adat.
Ha pl. csak egy számláló (üzemidő, darabszám, stb.), és csak 
statisztikai/diagnosztikai célból gyűjtöd, ezért megengedhető, hogy a 
legfrissebb néha elvész, akkor számolhatsz a RAM-ban, és csak minden 
10-20 vagy akárhanyadikat írod ki.

Ha multibyte adatot írsz ki, tegyél bele valamit, amivel érvényesítheted 
a blokkot, CRC, ECC, stb... Ha nincs powerloss jel, és írás közben 
üzemszerűen elmehet a táp, akkor ez szinte kötelező.



More information about the Elektro mailing list