Yaffs (Yet Another Flash File System) és un sistema de fitxers dissenyat i escrit per Charles Manning per a l'empresa Aleph One.
Yaffs1 va ser la primera versió d'aquest sistema de fitxers i va ser dissenyada per als xips NAND actuals amb una mida de pàgina de 512 bytes (+ 16 bytes de recanvi (OOB; àrea fora de banda)). El treball va començar l'any 2002 i es va publicar per primera vegada més tard aquell any. El treball inicial va ser patrocinat per Toby Churchill Ltd i Brightstar Engineering.[1]
Aquests xips més antics també permeten generalment 2 o 3 cicles d'escriptura per pàgina. YAFFS n'aprofita: les pàgines brutes es marquen escrivint en un byte d'àrea de recanvi específic. Els xips flash NAND més nous tenen pàgines més grans, primeres pàgines de 2K (+ 64 bytes OOB), després 4K, amb requisits d'escriptura més estrictes. Cada pàgina d'un bloc d'esborrat (128 kilobytes) s'ha d'escriure en ordre seqüencial i cada pàgina s'ha d'escriure només una vegada.
YAFFS és un sistema de fitxers estructurat de registre robust que manté la integritat de les dades com a alta prioritat. Un objectiu secundari de YAFFS és l'alt rendiment. YAFFS normalment superarà la majoria de les alternatives.[2] També està dissenyat per ser portàtil i s'ha utilitzat a Linux, WinCE, pSOS, RTEMS, eCos, ThreadX i diversos sistemes operatius especials. Una variant 'YAFFS/Direct' s'utilitza en situacions en què no hi ha sistema operatiu, sistema operatiu incrustat o carregador d'arrencada: té el mateix sistema de fitxers bàsic però una interfície més senzilla tant amb el codi de nivell superior com inferior i amb el maquinari flash NAND.[3]
YAFFS1
No hi ha cap procediment especial per inicialitzar un sistema de fitxers YAFFS més enllà de simplement esborrar la memòria flaix. Quan es troba un bloc dolent, YAFFS segueix l'esquema de mitjans intel·ligents de marcar el cinquè byte de l'àrea de recanvi del bloc. Els blocs marcats com a tals romanen sense assignar a partir d'aleshores.
YAFFS2
YAFFS2 és similar en concepte a YAFFS1, i comparteix gran part del mateix codi; la base de codi YAFFS2 admet els formats de dades YAFFS1 mitjançant la compatibilitat enrere. La diferència principal és que YAFFS2 ha de saltar a través de cèrcols significatius per complir el requisit d'"escriure una vegada" del flaix NAND modern.[4]
Referències