pocitadlo

Velké problémy s malým filesystémem

Kompletní záznam celého letu by byla krásná funkce OGN krabiček. Problémem ovšem je, že SD karta, na kterou se záznam ukládá, se relativne rychle opotřebuje. Způsobuje to častý zápis do FAT tabulky, konkrétně pole poslední modifikace souboru, ale hlavně alokace sektorů a velikost souboru, které je pokaždé ve stejné buňce FATky. Času a datumu změny se lze snadno zbavit, ale ostatních častých zápisů už moc ne. Moc tomu ani nepomáhá velikost RAM (20kB) použitého mikrokotroléru a velikost sektorů (512B) FATky.

Proto jsem se rozhodl ji nahradit LittleFS. Schopnost filesystému přežít výpadek napájení, ale hlavně wear leveling (t.j. rozprostření ošoupávání buněk flešové paměti na celou kartu) napovídají tomu, že by karta mohla ve zdraví přežít značně větší množství zápisů a že toto je ta správná cesta. To vše jen do chvíle, kdy se 4000+ řádků LittleFS zkompilovalo do více než 8kB binárky, a to i po vynucení té nejsilnějsí optimalizace na velikost a nezahrnování nepoužitého kódu.

Toto, v kombinaci s blížícím se dalším problémem (konkrétně rozsáhlostí mého vlastního kódu + s bluetooth booloaderem taktéž o velikosti 8kB) způsobilo, že se podpora LittleFS prostě nevleze do 128kB flash paměti programu použitého mikrokontroléru F103CB.

A co ted s tím? Nabízí se dvě možnosti. První z nich je nahradit F103CB MCU jiným ze stejné řady, který má více FLASH, jako například F103CB. Ten má ovšem 64 nožiček a tudíž nesedne do footprintu na tištáku, kde se počítá jen se 48 nožičkovým pouzdrem. Proto je druhou otevřenou možností jej nahradit jiným – F030CB, který má stejný footprint (to je mimochodem moc pěkná vlastnost mikrokontrolérů od STM, že se snaží dodržovat stejný pinout i mezi různými řadami jejich MCU) a 256kB FLASH + 32kB RAM. Nemusel bych dělat nové tišťáky, ale budu muset upravit kód, aby podporoval architekturu F030ky (ARM Cortex M0 vs. M3, sběrnice a periférie jsou připojeny občas někde jinde a podobně). Ale zůstalo by tak stejně malé pouzdro s tím, že by se otevřely další možnosti vývoje! 🙂

Ovšem věci nemohou jít nikdy jen tak snadno. V několika posledních měsících jsem zaznamenal, že System Workbench for STM32 (sw4stm32) který používám není schopen stáhnout SPL firmware. Nepomáhá ani jejich ruční instalace z webu STM. Dotazoval jsem se proto na fóru openstm32.org (tady poprvé a tady podruhé), zda má někdo řešení tohoto problému, ale zatím neúspěšně.

(Edit) Tak nakonec se mi podařilo najít cestu jak to obejít 🙂

(Edit2) Zde je ke stažení záloha STM32 firmwarů které byly ješte dostupné na serverch odkazovaných v souboru stm32targets.xml.