[zxspectrum] Re: sd/mmc

  • From: "Alessandro" <apoppi@xxxxxxxx>
  • To: <zxspectrum@xxxxxxxxxxxxx>
  • Date: Fri, 28 Jul 2006 23:38:24 +0200

On Friday, July 28, 2006 7:10 PM [GMT+1],
Mario <mario.prato@xxxxxxxx> wrote:

http://www.sandisk.com/Oem/Manuals/

Bel colpo! Nel PDF piu` grosso mi sono letto il significato dei bit del byte di risposta ai comandi, secondo quella che chiamano la codifica R1 (risposta a tutti i comandi eccetto SEND_STATUS).


Ho scoperto che uno degli esempi dai quali avevo tratto pezzetti di codice non era granche` esatto: dopo aver mandato il comando MMC_SEND_OP_COND (passa in modalita` attiva), il mio firmware attendeva semplicemente qualsiasi cosa purche` non fosse 0xFF, poi andava avanti.

Sbagliato: bisogna aspettare che D0 sia basso, che e` quello che indica "init_still_in_progress". La Kingston era velocissima e faceva appena in tempo a completare l'operazione prima del comando successivo, GET_CID. Quella cinese (marca "eXagerate" :-)) invece impiega qualche decimo di secondo, ed al comando GET_CID (che arrivava troppo presto) rispondeva 0x05 (= comando illegale + init_still_in_progress).

Tienilo presente, quando inizializzi una card.

Adesso funziona perfettamente, salvo un particolare: la scrittura e` lentissima! (snapshot 128K in quasi 9 secondi, contro "un lampo" con la kingston). La lettura invece e` fulminea in ogni caso.

Molto probabilmente la differenza sta nel fatto di non aver mai implementato la scrittura "multiblock", mentre la lettura si. A quanto pare questa mmc e` piu` lenta ogni volta che deve effettuare una operazione, ed usando una scrittura a blocco singolo di operazioni elementari ce ne sono molte (512 bytes/blocco)...

c'era un altro documento che girava ma ho i link sul pc al lavoro, te
li mando lunedi'

Se ti ricordi mandamelo lo stesso, che piu` documentazione ho e meglio e`

Grazie!


Other related posts: