Hogyan építs naplót: fájlrendszerrel vagy nélküle?
A naplózás nem attól lesz jó, hogy “adatot írunk valahova”, hanem attól, hogy később vissza tudjuk olvasni és értelmezni.
Ehhez pedig adatstruktúra kell – akár fájlszerkezetben elrendezve, akár a nyers memóriában dolgozunk.
1️⃣ Log fájl fájlrendszerrel (SD kártya, FAT)
Ez a legismertebb megközelítés.
Alapelvek
- a log append jellegű (hozzáfűzés)
- nem írjuk felül a meglévő adatot
- ritkán nyitjuk/zárjuk a fájlt
Tipikus fájlstruktúra
[timestamp] [esemény] [értékek] [CRC]
Példa:
2026-01-29 12:34:10; TEMP; 23.6
Jó gyakorlatok
- egy sor = egy esemény
- egyszerű, szöveges vagy bináris forma
- időbélyeg mindig legyen
- fájl rotálás (pl. naponta új fájl)
👉 Előny: PC-n azonnal olvasható
👉 Hátrány: áramszünetnél sérülhet a fájlrendszer
2️⃣ Körkörös log (circular buffer) – fájl nélkül
Ha nincs fájlrendszer, neked kell a struktúrát megalkotni. Ez tipikus EEPROM, FRAM, SPI Flash esetén.
Körkörös log alapelve:
- fix méretű memória áll rendelkezésre,
- rekordok egymás után következnek,
- ha betelik a hely → az elejéről folytatjuk.
👉 A régi adatok automatikusan kiesnek.
Alap rekord struktúra (nyers memória)
[verzió] [timestamp / offset] [adat] [CRC]
Minden rekord kialakítása:
- azonos méretű,
- önállóan, egyetlen adatsor is értelmezhető.
Ez kulcsfontosságú kérdés áramszünetnél.
Mutatók kezelése
De mit is tud a mutató? Szükség van rá, hogy megtudjuk, hogy hol tartunk:
- az írási pozícióra, vagy
- opcionálisan az olvasási pozícióra.
Ezeket a mutatókat:
- külön memóriában vagy külön területen
- duplikálva és
- verziószámmal ellátva
érdemes tárolni.
3️⃣ EEPROM alapú logolás
EEPROM-nál különösen fontos szabályok:
- ritka írás legyen,
- kis rekordmérettel és
- esemény alapú logolást végezzünk.
Ajánlott EEPROM log-minta:
- csak fontos események,
- max. néhány száz rekord,
- sorszám + CRC is legyen benne.
👉 Folyamatos log írása az EEPROM-ba = rossz ötlet (pl. az elhasználódás miatt).
4️⃣ SPI Flash log – a “köztes megoldás”
SPI Flash mmória használata esetén:
- nagyobb hely áll rendelkezésre,
- nincs alapértelmezett fájlrendszere (ha nem akarsz ilyet használni),
- strukturált bináris log kialakításához ideális.
Ajánlott:
- blokk-alapú íráskor,
- körkörös buffer használatakor,
- verziózott rekordok elhelyezésére.
👉 Az SPI FLASH memória használata az egyik legstabilabb beágyazott naplózási forma.
5️⃣ Hogyan olvassuk vissza a log adatokat?
Fájlrendszer használatakor:
- PC-n közvetlenül megtehetjük
Nyers memória esetén:
- soros porton kiolvasásva,
- debug parancs segítségével,
- firmware frissítéskor dump állományként.
Fontos követelmények a log adatokkal szemben, hogy:
- a struktúra legyen dokumentált,
- legyen mód az “érvényes rekord” felismerésére.
Gyakori hibák, amiket a log tervezésekor elkövetünk
- változó méretű rekordokat használunk,
- CRC nélküli log készül,
- egyetlen globális mutatónk van,
- fájlrendszer nélküli “fájlszerű” gondolkodással hoztuk létre
👉 Memória ≠ fájl.
A log egyszerűen egy adatstruktúra, nem pedig a kész log-dokumentum.
De mikor mit is használjunk?
- SD kártya → fájlrendszer, append használata, és rotálás
- EEPROM → kevés, fontos esemény esetén
- SPI Flash → körkörös, strukturált bináris log készítéshez ideális
Ha nincs fájlrendszerünk, akkor:
neked kell a fájlrendszer helyett gondolkodnod.
De ha jól csinálod, ez a megoldás stabilabb és kiszámíthatóbb, mint bármilyen “automatikus” megoldás.
Ez a cikk a → Az adattárolás háttere mini-cikksorozat része.
← Előző: 🧭 Időbélyeg tárolási formák
→ Következő: 💾 Memória méretezés

