Mam 1 GB SD kartu. Niekde v strede je 1/zopar vadnych blokov. FS je FAT koly fotaku. Je sposob, ako poskodene bloky najst a znefunkcnit, aby FS na nich nezapisoval?
Ak totiz nahravam povedzme 10 minutove video a prekryje prave tieto poskodene bloky, tak video sa da prehrat iba po najblizsi vadny blok.
Pripadne ak to nevie FAT, tak by som mohol kartu pouzivat uz iba v linuxe s nejakym inym FS.
Diky
FAT myslim zadne takove nastroje nema, ale mel by se o to starat radic flashky, jestli to nedela, tak nevim - leda zkusit do tech vadnych bloku "zapsat" nejaka data a tak ten fotak donutit je preskocit (zapsat = prepsat kus FAT tak, aby v tech sektorech opticky neco bylo, tohle myslim dela Windowsi chkdsk)
FAT tabulka může označit clustery obsahující vadné bloky (kódy 0xFF7,
0xFFF7 nebo 0x?FFFFFF7 pro FAT12, FAT16 respektive FAT32). Standardní
DOSový či Win příkaz format volaný bez parametru /F celou užitou plochu
média kontroluje a vadné bloky označí.
Pod Linuxem to přímo fdformat ani mkdosfs myslím neumožňuje. Je ale
možné použít parametr -t u příkazu dosfsck, který zkontroluje čitelnost
bloků a jim příslušející clustery označí za vadné.
K hledání špatných bloků lze využít i příkaz badblocks, který umí i test
se zápisem (nedestruktivní -n, destruktivní -w).
Na magnetická média je to dostatečné. Bohužel na Flash disku to asi
fungovat nebude, protože wear leveling má snahu využívat co nejvíce
různých fyzických bloků a postupně na ně zapisované bloky mapuje.
Na druhou stranu si kontrolér na kartě udržuje seznam vadných bloků.
Ten není prázdný ani u převážné většiny nových výrobků. Když koupíte
i samotný NAND Flash chip, tak má většinou již povícero bloků vadných
a příslušně označených. Výrobce jen garantuje, že maximum vadných bloků
je menší než nějaký počet, či procento.
Pokud je tedy chyba na úrovni fyzického bloku tak je potřeba, aby se
o vyloučení bloku z používání postaral již samotný kontrolér karty.
Ten takto označí i bloky, ze kterých se sice data přečíst podařilo díky
korekci chyb, ale vykazují tyto výpadky příliš často. Pokud to kontrolér
neudělá, tak je buď vadný nebo mu již došla kapacita rezervních bloků.
Co lze v takovém případě udělat nevím. Lze zkusit zmenšit velikost
používané oblasti/partition. Ve skutečnosti by bylo potřeba zmenšit
reportovanou kapacitu karty příslušnou parametrizací kontroléru.
K tomu ale nástroje kromě výrobce karty dostupné nebudou.
Ona také chyba může být úplně jinde. Foťák může mít někde studeňák, a díky tomu čas od času zapsat nesprávná data. Ad absurdum může jít o závadu firmwaru, který po přetečení nějaké interní variable dělá neplechu. Třeba některé telefony po nějakém tom roku užívání mají hromadu dříve neviděných bugů, které zmizí resetem na tovární nastavení. Dalelo pravděpodobnější je ale špatný kontakt karty nebo baterií, koroze způsobená třeba mořskou vodou, atd. Jestli je karta opravdu vadná, to lze zjistit třeba zformátováním s ověřením bloků (ve Windows format /f), a použitím skriptu který cyklicky zapisuje na kartu a kontroluje výsledek. Osobně bych si vsadil spíše na chybu foťáku, než chybu karty, byť vyloučit nelze ani jedno.