[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: