Integrare il supporto MMC/SDIO nella progettazione

Integrare il supporto MMC/SDIO nella progettazione: Questo articolo descrive una mia idea sulla integrazione MMC/SDIO in sistemi embedded, comprensivo del software dell'host controller e il software del controller card in modo SPI. Anche se non ho il codice sorgente completo per dimostrare la fattibilita', teoricamente cio' è realizzabile.

Flash Cards dappertutto

Molti tipi di schede flash fanno parte della nostra vita digitale. Sono utilizzate in telefonini cellulari, fotocamere, MP3 e lettori DVD. Queste schede offrono più memoria ad un prezzo molto più basso. Tecnicamente queste schede sono abbastanza "mature" per essere integrate in molti dispositivi. Tuttavia gli ingegneri non possono trovare soluzioni stack open source adeguate a causa di questioni giuridiche dalle corrispondenti associazioni flash card.

Finora sul mercato si possono trovare le seguenti schede flash :

  1. Smart Media: E' stata una scheda NAND sviluppata da Samsung/Toshiba, e' stata gradualmente tolta dal mercato perché è troppo grande per i dispositivi di oggi .
  2. Compact Flash: Questa è una flash card professionale molto vecchia, ma ancora utilizzata in molte applicazioni. Le schede CF possono essere considerate come hard disk via le interfacce IDE/PCMCIA.
  3. Multimedia Card: Una scheda sviluppata da Infineon/Siemens/Sandisk,l'utilizzo e' autorizzato con licenza rilasciata da MMCA sotto NDA. Ha una versione mini chiamata RS-MMC.
  4. Memory Stick: Una famiglia di schede flash sviluppata da SONY, i progettisti possono ottenere delle specifiche solo da SONY sotto NDA. SanDisk è la seconda fonte importante per memory stick.
  5. XD card: In realtà si tratta di un contenitore alternativo per il chip NAND della memoria flash. Possiamo semplicemente considerarlo come una scheda SM in miniatura, che e' stata sviluppata da Fuji film e Olympus. Raramente è utilizzata in sistemi embedded.
  6. SD card: Una scheda flash da Matsushita/Toshiba/Sandisk, l'utilizzo e' autorizzato con licenza rilasciata da SDCA sotto NDA. Ha due versioni mini: mini-SD e micro-SD.
  7. Trans-flash card: E' sviluppata da Motorola/Sandisk e' utilizzata in cellulari. E' stata richiamata scheda micro-SD.

Nessun protocollo SD open source disponibile

Possiamo dire che Sandisk svolge un ruolo importante in industria flash card. La famiglia SD card e' il leader del mercato, perché la maggior parte delle schede offrono adattatori SD. Quindi, è importante sostenere scheda SD in un sistema embedded. La specifica semplice della SD card e' disponibile gratuitamente dal sito ufficiale SDCA, ma la specifica dettagliata è disponibile solo sotto NDA e rigorosi accordi. Per sostenere SD card in dispositivi, la maggior parte dei fornitori devono utilizzare nei progetti i protocolli brevettati della scheda SD. Per esempio, Sharp ha utilizzato un protocollo brevettato nel suo Linux Zaurus PDA. C'è un buon articolo su questo argomento. Verificate "reference" per la vostra informazione.

Sandisk ha rilasciato la scheda P-TAG, che è una flash card dedicata usata come scheda sanitaria dall'esercito degli USA. Ho verificato la specifica. E' quasi una specifica di scheda SD. Il file PDF e' stato eliminato dal sito Sandisk. Forse Sandisk ha realizzato che questo file rivelava troppe informazioni confidenziale al mondo.

Host SD Protocol in Latest Linux

Ora Linux inizia a integrare il supporto SD nelle ultime versioni del kernel. Consultate la posta citata dal mantenitore del kernel di Linux. Questa significa che il protocollo SD è una caratteristica standard del kernel di Linux. E' una notizia molto interessante per i progettisti dei sistemi embedded. Confrontando con altre interfacce, comprese USB e Bluetooth, SD (o SDIO) è relativamente semplice da implementare nei sistemi dal punto di vista tecnico. I costi di liste materiali e lo sforzo di sviluppo per le schede SDIO sono anche molto più bassi. Il motivo e' semplice, SD e SDIO supportano la modalità del funzionamento dell'SPI. Il modo SPI e' disponibile in molti microcontrollori low-end, anche emulato dal firmware all'interno dei microcontrollori. E non si deve eseguire uno stack complesso nella scheda SDIO. Il microcontrollore che si trova all'interno della scheda SDIO può facilmente mappare i suoi IO o registri di controller host, e lasciare che sia il controller host a gestire la comunicazione E' facile, ma ancora abbiamo bisogno di più programmazione per far lavorare una scheda SD in modalita' SPI.

Host SD Protocol in embedded RTOS

Il kernel RTOS open source uC/OS-II della Micrium ha un file system embedded complementare chiamato uC/FS. E' un file system per applicazioni embedded e può essere utilizzato su qualsiasi media, per il quale è possibile fornire le funzioni d'accesso all'hardware di base. μC/FS e' una libreria a prestazioni elevate che e' stata ottimizzata per il consumo minimo di memoria RAM e di ROM, ad alta velocità e versatilità. E 'stata scritta in ANSI C e può essere utilizzata su qualsiasi CPU. Un dispositivo driver opzionale per le schede MultiMedia & SD puo essere integrato facilmente utilizzando il modo SPI o modo card. E' un buon punto di partenza per integrare il supporto SDIO nei sistemi embedded. Avevo un frammento di tutto il codice sorgente dell'uC/FS da un fornitore di schede di valutazione, che offre solo il driver della scheda SmartMedia. Se ho tempo, forse potrò trasportare un driver in modo SPI e accendere/aprire la scheda SD. Ma non so le condizioni di licenza di Micrium. Lo sviluppatore deve prima contattare il fornitore.

SPI mode in SDIO card

SD/SDIO offre tre modi di operare: il modo SPI, il modo SD 1-bit e SD 4-bit. Il modo SPI e SD 1-bit sono modi obbligatori, SD 4-bit e' obbligatorio per la scheda ad alta velocità. Il modo SPI non e' il modo predefinito della scheda SD. Quello predefinito e' il modo SD 1-bit. Nella pagina 17-18 della specifica semplificata dell'SDIO, si da il flusso di inizializzazione della scheda in modo SPI. Possiamo utilizzare la scheda SDIO modo SPI.

Per progettare un card controller con un microcontrollore, dobbiamo emulare la procedura di inizializzazione emulando il modo SD-1 bit nelle caratteristiche elettriche dell'I/O, di comunicazione e di calcolo CRC, ed i registri interni di parametri della scheda, che descrivono card timing, di tensione, etc. Durante questo periodo di inizializzazione, la scheda SD deve utilizzare il modo SD 1-bit. E' OK per questo piccolo periodo, perché la velocità è abbastanza bassa. C'è un problema per il calcolo CRC che e' richiesto per la comunicazione del modo SD. Ho trovato un modo di risolverlo. Siccome il calcolo CRC7/CRC16 e' "byte oriented algorithm" e richiesto solo per la comunicazione upstream, (si, e' richiesta in entrambe le direzioni, ma perche' calcolare il downstream quando di base i dati sono corretti?) possiamo utilizzare una tabella look-up per emularlo. Alcuni programmatori potrebbero avere dubbi sulla mia applicazione. Potrebbero chiedersi come posso calcolare il risultato CRC con due variabili di input. E' molto semplice perché i primi bytes sono i "descriptors " di parametri per le schede, che sono tutti bytes fissi. Naturalmente se un microcontrollore potente e' utilizzato nel progetto, il calcolo CRC e' ovvio. Quindi il modo SD 1-bit può essere utilizzato nella comunicazione successiva. Le caratteristiche elettriche di I/O possono essere ottenute cambiando l'I/O e la porta dei registri di configurazione nei microcontrollori.

Dopo la procedura di inizializzazione, si puo passare alla comunicazione in modo SPI, come ad esempio accesso ai registri, la comunicazione normale è abbastanza facile. E il calcolo CRC non e' richiesto in modo SPI, a meno che il sistema lo richieda esplicitamente.

Ho un codice di riferimento incompleto progettato per PSoC dalla Cypress. Forse dovrei fare uno sforzo per finirlo e venderlo.

Più problemi

Il modo SPI e' conveniente, ma SD offre una velocità di comunicazione più elevata. Nel caso in cui si vuole una comunicazione ad alta velocità su SD socket, il progettista deve firmare l'NDA con SDCA per realizzare un card controller SD.

Reference

 

La specifica della scheda semplice SDIO dal sito ufficiale per scheda SD.

 

 

 

 

PDA Linux Sharp promuove l'uso della scheda SD, ma la più aperta MMC funziona bene.

 

 

 

 


Dove sono gli stack SD/SDIO open source?

 

 

 

 

 


uC/FS dalla Micrium. E' un modulo complementare per uC/OS-II. L'uC/FS sostiene FAT12/16/32 in SmartMedia, SD/MMC card, Compact Flash e IDE hard disk driver.

 

 

 

 

 

"What's in mmc.git for 2.6.24?" Questo articolo parla del supporto SDIO in Linux kernel 2.6.24.

Repost: 9 Maggio 2008

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend