Ricerca personalizzata

venerdì 29 maggio 2009

Aggiungere memoria alle applicazioni.

Quando si lavora nel mondo integrato ci sono alcune possibilità che si possa andare incontro ad un’applicazione che richiede maggiore spazio di memoria di quanto sia disponibile nella maggior parte dei microcontrollori e anche degli EEPROM esterni. Ecco perché vanno molto bene le schede SD o MMC. Sono a basso costo e facile da lavorare.

Per la maggior parte delle applicazioni tutto ciò che serve è una porta SPI, e anche se non disponiamo di essa è possibile emularne facilmente una sulla maggior parte dei microcontrollori. Con la porta SPI si può comunicare e memorizzare i dati per la scheda SD, ma è un po’ più complicato. La maggior parte delle applicazioni richiede di memorizzare o recuperare i dati da un personal computer. Allora si ha bisogno di un modo per collegare l’applicazione al computer e soprattutto un metodo per organizzare i dati in un modo che sarà riconosciuto dal sistema operativo del computer. Per questo è necessario disporre di una sorta di sistema di gestione dei file. E’ possibile fare uso di un sistema FAT 16 o FAT 32. Il sistema File Allocation Table (FAT) è semplice e supportato da quasi tutti i sistemi operativi. E’ necessario per prima cosa capire come funziona prima di aggiungerla al dispositivo integrato.

Le schede SD o MMC tendono a gestire la loro memoria in dimensioni fisse conosciute come settori o talvolta dimensioni di pagina, che solitamente sono di 512 o 256 byte. In un sistema FAT alcuni di questi settori sono utilizzati per la File Allocation Table, che agisce come un indice, mentre gli altri settori sono utilizzati per la memorizzazione dei dati. Tutti questi settori possono essere uniti per formare ciò che è noto come cluster. Le dimensioni dei cluster possono variare da 1 a 64 settori. I cluster sono gli enti che sono stati monitorati all'interno della File Allocation Table. Dato che il cluster può variare da 1 a 64 settori, deve essere presa una decisione sulla dimensione dei cluster. Il vantaggio di avere una più ampia dimensione dei cluster è che per gestire la memoria viene utilizzato un minor numero di cluster e quindi è obbligatoria una minore File Allocation Table.

Questo rende le cose più efficiente sul sistema dei file, ma usa molto spazio della memoria quando ci sono memorizzati piccoli file per ogni cluster. Quindi sostanzialmente si desidera scegliere la dimensione dei cluster in base al tipo di dati e le dimensioni con cui si dovrà lavorare. Più piccoli sono i dati e più piccola sarà la dimensione dei cluster.. In tal modo si garantisce un uso efficiente della memoria.

La presente File Allocation Table è solo una tabella contenente informazioni relative a ciascun cluster. Ad esempio in un sistema FAT16 ogni tabella è un numero intero a 16-bit che dimostra se il cluster se è vuoto o pieno, legato ad un altro cluster, riservato o se contiene settori danneggiati. Un cluster pieno è rappresentato da 0xFFFF mentre uno vuoto è dato da 0x0000. Quando un file richiede più di un cluster di spazio di memoria, si forma una catena di cluster e la File Allocation Table collega questi cluster avendo l'indirizzo del prossimo cluster presente in ogni indice fino all'ultimo cluster, che ha un 0xFFFF per rappresentare la fine dei dati o l'ultimo cluster nel file. Anche 0x0001 rappresenta un cluster riservato mentre 0xFFF7 rappresenta un cattivo cluster. La tabella seguente descrive tali caratteristiche.

FAT 16 Features

La File Allocation Table è molto importante e due o più copie di essa sono memorizzate prima dei cluster dei dati. Lo scopo principale della File Allocation Table è quello di tenere traccia dello status dei cluster (vuoto, pieno) e la posizione, ma non contiene alcuna informazione circa i file attualmente archiviati. Per questo scopo abbiamo la root directory.

La root directory possiede un’importante informazione sul file come il nome, l'estensione, gli attributi (archivio, directory, se è nascosto, di sola lettura, sistema e volume), la data e l’ora della creazione, l'indirizzo del primo cluster del file/directory dei dati e, infine, le dimensioni del file/directory. La root directory è memorizzata dopo l'ultima copia della File Allocation Table e prima di presentare i cluster dei dati. La struttura della root directory è indicata nella seguente tabella.

Root Directory Structure

Gli attributi hanno alcune maschere di bit nell’entrata della directory. Sono 01 per la sola lettura, nascosto per 02, 04 per il sistema, 08 per l’etichetta di volume, 10 per la sottodirectory, e il 20 per l’archivio. La data e l'ora memorizzano l'ultima volta che il file è stato modificato. Per quanto riguarda il Tempo i bit 15 a 11 rappresentano le ore, i bit 10 a 5 rappresentano i minuti e i bit 4 a 0 rappresentano i secondi diviso per due. Per quanto riguarda la Data i bit 15 a 9 rappresentano anno a partire dal 1980 al 2107, 8 bit per rappresentare Mese 5, e 4 a 0 bit rappresentano la il giorno. La sezione del primo cluster collega il file con la File Allocation Table. Questo numero punta al primo cluster contenente il file dei dati. Infine, la sezione Dimensioni contiene (in byte) le dimensioni dei file dei dati.

È possibile utilizzare le informazioni dalla directory principale per scrivere una varietà di funzioni per il vostro sistema integrato. Ad esempio, l'ora e la data di stampa di un sensore di dati in un logger dati.

Ora che si conosce la struttura di base del sistema FAT16, è possibile iniziare a sviluppare applicazioni per le quali gli utenti possono facilmente comunicare con il dispositivo integrato e un computer. Aggiungere un dispositivo di memorizzazione di massa come una scheda SD significa aumentare la flessibilità a qualsiasi dispositivo. Consuma molto scrivere il codice necessario per l'attuazione del sistema FAT16, nonché il codice per supportare la comunicazione con una scheda SD. La buona notizia è che ci sono molti software liberi e librerie a pagamento che si prendono cura dei codici al posto vostro. Tutto quello che bisogna fare è modificare il codice per adattare le piadinature specifiche e l'architettura del microcontrollore.

Ad esempio Microchip offre “File I/O Functions Using Microchip's Memory Disk Drive File System Library”, che è fondamentalmente il sistema FAT16 per alcuni dispositivi PIC. È possibile scaricare il codice sorgente e il report dell’applicazione da qui. Inoltre, in alcuni casi ci sono a disposizione moduli di hardware che implementano il sistema FAT per voi. Grazie a loro si risparmia il tempo di sviluppo, ma questi chip sono molto costosi e utilizzati in gran parte in dispositivi di archiviazione di massa USB. Personalmente trovo che siano uno spreco di denaro, dato che è relativamente semplice implementare il sistema FAT sul microcontrollore.



Nessun commento:

Privacy Policy

This site uses Google AdSense for advertisements. The DoubleClick DART cookie is used by Google in the ads served on publisher websites displaying AdSense for content ads. When users visit an AdSense publisher's website and either view or click on an ad, a cookie may be dropped on that end user's browser. The data gathered from these cookies will be used to help AdSense publishers better serve and manage the ads on their site(s) and across the web. * Google, as a third party vendor, uses cookies to serve ads on this site. * Google's use of the DART cookie enables it to serve ads to you users based on your visit to this site and other sites on the Internet. * Users may opt out of the use of the DART cookie by visiting the Google ad and content network privacy policy. We use third-party advertising companies to serve ads when you visit our website. These companies may use information (not including your name, address, email address, or telephone number) about your visits to this and other websites in order to provide advertisements about goods and services of interest to you.

Questo sito utilizza Google AdSense per la pubblicità. Il DoubleClick DART cookie è utilizzato da Google per gli annunci pubblicati su siti web publisher AdSense per i contenuti, visualizzazzandone gli annunci. Quando un utente visita un sito web publisher AdSense e clicca su un annuncio, un cookie può essere rilasciato a tal fine, nel browser dell'utente. I dati raccolti da questi cookie verranno utilizzati per aiutare i publisher AdSense a servire meglio e a gestire gli annunci sul loro sito(i) in tutto il web. * Google, come parte di terzo fornitore, utilizza i cookie per la pubblicazione di annunci su questo sito. * L'uso del DART cookie consente a Google di pubblicare annunci per gli utenti, e si basa sulla vostra visita a questo sito e su altri siti su Internet. * Gli utenti possono scegliere di utilizzare i DART cookie visitando i contenuti sulla privacy nell'annuncio di Google. Usiamo società di pubblicità per la pubblicazione di annunci di terze parti, quando si visita il nostro sito web. Queste aziende possono utilizzare le informazioni (non compreso il vostro nome, indirizzo, indirizzo e-mail, o numero di telefono) sulle visite a questo e ad altri siti web, al fine di fornire la pubblicità su beni e servizi di vostro interesse.