veiner.eu
ÚVODODDÍLY A SOUBOROVÝ SYSTÉM FAT32ZAPOJENÍ, KOMUNIKACE A PROTOKOLINICIALIZACE, ČTENÍ, ZÁPISCO NAJDEME NA KARTĚ
VYUŽITÍ
ZDROJOVÉ KÓDY

SD karta - využití

9.6.2018

SD karta se dá využít v mnoha projektech jako úložiště dat s celkem velikou kapacitou. Budu se zabývat způsoby, ve kterých použiju znalosti problematiky okolo SD karty, které jsme si ukázali. To znamená, že nebudu uvažovat možnost využití nějakého "hotového" řešení v podobě softwarové knihovny nebo celého zařízení.

Uvažujme o nějakém jednoduchém projektu typu záznamu dat z nějakého senzoru - například teplotního čidla DS18B20. Tento senzor poskytuje informaci o teplotě ve dvou bytech, které budu chtít na kartu ukládat. Jak komplikovanou softwarovou část v takovém případě budu k ovládání karty potřebovat, záleží na tom, jestli budu požadovat, aby z karty mohlo číst i jiné zařízení. Tedy, jestli když kartu vložím např. do počítače, tak bude umožněno nashromážděná data překopírovat třeba na pevný disk. Neboli ještě jinak, data budou na kartě ukládána do nějakého standardního souborového systému - např. FAT32. Druhou možností je, že karta bude umístěna pouze v mém zařízení a data budou do PC nebo jinam přenášena v případě potřeby například prostřednictvím USB. Podíváme se nejprve na druhou možnost.

Ukládání dat bez souborového systému

Jestliže nepožaduju, aby jiné zařízení bylo schopné interpretovat formát uložených dat, potom záleží zcela na mém uvážení, jakým způsobem budu data na kartu ukládat.

Předpokládejme, že zařízení bude neustále ukládat data v pravidelných intervalech do té doby, než mu dojde volná paměť, načež data přenesu přes nějaké rozhraní do PC. V takovém případě můžu ukládání řešit tímto způsobem:

  1. Na kartě nemusí být souborový systém.
  2. Data budu ukládat jednoduše za sebe. Ve zmíněném případě senzoru DS18B20 se do jednoho sektoru vejde 512 / 2 = 256 záznamů. Pokud by se během zápisu zařízení vypnulo (např. výpadek napájení nebo zásah uživatele), bylo by možné po opětovném spuštění pokračovat v zápise dat, protože adresu do paměti by si zařízení uchovalo v nějaké permanentní paměti, např. EEPROM.
  3. Po přenesení dat do PC, by pro další cyklus zápisu dat nebylo nutné data mazat, pouze by se ukazatel do paměti nastavil na nulu a zapisovalo by se znovu od začátku.
  4. Praktické provedení zápisu by fungovalo třeba tak, že by se data průběžně ukládala do pomocné paměti a jakmile by objem dat dosáhl 512 B, zapsala by se data do příslušného sektoru na kartě.

Ukládání dat s využitím FAT32

V tomto případě uvažuju podobný cyklus práce s daty jako v předešlém případě s drobným rozdílem. Zařízení zapisuje data, než mu dojde volná paměť, a v tom okamžiku kartu přenesu do PC a data jednoduše překopíruju. Jedna z otázek je, jak chci ukládaná data strukturovat. Budu vytvářet adresáře? Jak velké soubory budu používat? Vzhledem k tomu, že ve FAT32 není velikost kořenového adresáře omezená, můžu ukládat soubory přímo do něho. Určím si, jak velké soubory budu používat - to zejména s ohledem na to, aby bylo efektivně využito místo na kartě. To znamená, aby velikost souboru byla celým násobkem velikosti clusteru. Pokud toto budu mít rozmyšlené, budu předem vědět, jak velký bude kořenový adresář po zaplnění veškerého volného místa. Jelikož na kartu bude zapisovat pouze mé zařízení, můžu si práci se souborovým systémem zjednodušit:

  1. Soubory budu ukládat jeden za druhým, fyzicky cluster za clusterem.
  2. Zařízení si bude pamatovat aktuální cluster.
  3. Po zaplnění karty a překopírování dat do PC, se vynulují data v kořenovém adresáři a data se budou zapisovat znovu od začátku.