Barion Pixel
Adatstruktúra kérdése a memória típusénak függvényében

💾 Log fájl struktúrák

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

További írások