SEGGER emFile
emFile è un file system per applicazioni embedded che può essere usato su tutti i dispositivi per i quali è possibile fornire funzioni di accesso all'hardware di base. emFile è una libreria ad elevate performance che è stata ottimizzata per il consumo minimo di memoria RAM e ROM, alta velocità e versatilità. È scritta in ANSI C e può essere usata su qualsiasi CPU.
Caratteristiche
- Supporto per FAT12, FAT16 e FAT32 compatibile con MS-DOS/MS-Windows.
- Modulo opzionale che gestisce i nomi di file lunghi per dispositivi FAT.
- Supporto per device driver multipli. Con emFile potete utilizzare diversi driver che permettono di accedere contemporaneamente a diversi tipi di hardware con il file system.
- Supporto per device multipli. Un driver permette di accedere contemporaneamente a diversi dispositivi.
- Supporto per sistemi operativi. emFile può essere integrato facilmente in qualunque sistema operativo. In questo modo potete eseguire operazioni sui file in un ambiente multithread.
- API simili a quelle di stdio.h dell'ANSI C per le applicazioni utente. Un'applicazione che usa una libreria standard C per l'I/O può essere facilmente portata su emFile.
- Struttura dei driver molto semplice. I driver di emFile hanno bisogno soltanto delle funzioni di base per la scrittura e la lettura dei blocchi. Un template è incluso.
- Driver opzionale per NOR flash (EEPROM). Qualsiasi NOR flash CFI-compliant è supportata. Wear-leveling incluso.
- Driver opzionale per NAND flash. Velocità di lettura/scrittura molto elevata. ECC e wear-leveling inclusi.
- Driver opzionale generico per Multimedia e SD card in modalità SPI o card che può essere facilmente integrato.
- Driver IDE opzionale che è utile anche per CompactFlash che usano le modalità TrueIDE o Memory Mapped.
- File system proprietario opzionale (EFS) con supporto nativo ai nomi di file lunghi.
Struttura del software e componenti
API Layer
Il layer API è l'interfaccia tra emFile e l'applicazione utente. E' diviso in due parti: la Storage API e la File System API.
La File System API contiene funzioni simili a quelle dell'ANSI C stdio, quali FS_FOpen(), FS_FWrite(), ecc. Il layer API trasferisce queste chiamate al layer del file system. Attualmente sono supportati il file system FAT e un file system opzionale, chiamato EFS. Al momento non possono essere utilizzati contemporaneamente.
La Storage API contiene le funzioni che sono necessarie per l'inizializzazione e l'accesso al dispositivo di memorizzazione. La Storage API fornisce le operazioni per la lettura e la scrittura. Il layer API trasferisce queste chiamate al layer Storage. La Storage API è ottimizzata per applicazioni che non necessitano delle funzionalità del file system come la gestione dei file e delle directory. Una applicazione tipica che usa la Storage API potrebbe essere un device di mass storage USB che deve salvare i dati su un dipositivo, ma le cui funzionalità di file system sono gestite dal PC host.
File System Layer
Il layer di fil system traduce le operazioni sui file in operazioni sui blocchi logici (settori). Dopo questa traduzione, esso chiama lo strato del blocco logico e specifica il driver corrispondente al dispositivo.
Storage Layer
Lo scopo principale dello Storage Layer è di sincronizzare gli accessi ad un driver. Esso fornisce, inoltre, un'interfaccia semplice alla File System API. Lo Storage Layer chiama un driver per fare un'operazione su un blocco. Include inoltre la gestione della cache.
Device Layer
I driver sono costituiti da funzioni di basso livello che vengono utilizzare per l'accesso ai settori del dispositivo e per controllarne lo stato. E' indipendente dall'hardware, ma dipende dal tipo di dispositivo di storage.
Hardware Layer
E' costituito da funzioni di accesso all'hardware. Queste funzioni semplicemente leggono e scrivono settori di lunghezza fissa. La struttura dei driver è semplice in modo da permettere una facile integrazione con il proprio hardware.
