Le memorie non volatili nei sistemi embedded

USB flash driveLa stragrande maggioranza dei sistemi embedded è dotata di una memoria non volatile utilizzata per immagazzinare il codice eseguito dal processore e dati di varia natura (parametri di configurazione, log, dati acquisiti da sensori ecc.). Esistono fondalmentalmente due tipologie di memorie non volatili: le memorie Flash di tipo NOR e le memorie Flash di tipo NAND (http://en.wikipedia.org/wiki/Flash_memory).

Entrambe fanno parte della più ampia famiglia denominata EEPROM, cioè memorie cancellabili elettricamente (http://en.wikipedia.org/wiki/Eeprom). Le differenze sostanziali tra i due tipi di memorie Flash sono relative all’affidabilità (le NOR sono di gran lunga più affidabili) e al costo (il costo per unità di memorizzazione è sensibilmente più basso nel caso delle NAND). Questo perché le NAND sono nate per il mondo consumer (SD card, chiavette USB, tablet, smartphone ecc.) dove i volumi di produzione sono elevatissimi, i costi devono essere ridotti al minimo ma si può tollerare un’affidabilità complessiva non elevatissima.

Nel caso del sistema embedded usato nel nostro progetto, si dovrà quindi tener conto di questi fattori per la scelta della memoria non volatile da utilizzare. Una eventuale corruzione dei dati immagazzinati nella stessa potrebbe infatti avere delle conseguenze gravi che potrebbero anche compromettere l’operatività dell’apparato. Come detto in precedenza, infatti, oltre ai dati raccolti nel corso degli esperimenti, la memoria non volatile immagazzina anche il codice eseguito dal processore, inclusi il kernel del sistema operativo e gli applicativi.

Una possibile soluzione per ridurre la probabilità che un eventuale problema alla memoria non volatile abbia condeguenze gravi, è quello di utilizzare due memorie, una più piccola di tipo NOR e una più grande di tipo NAND. Nella prima si memorizza tutto ciò che è indispensabile per le funzionalità minime del sistema (bootloader, kernel del sistema operativo, applicativi di base ecc.) mentre si utilizza la seconda per tutto ciò che non è considerato vitale (applicativi non fondamentali, i dati raccolti dai sensori, le eventuali immagini catturate dalla telecamera ecc). Si ricorda infine che la scelta delle memorie non volatili deve essere fatta tenendo anche conto di quali sono le tipologie supportate dal processore che si andrà ad utilizzare. Queste informazioni si trovano nel datasheet del componente.


Stampa   Email