Newsgroup: it.hobby.elettronica.digitale
Titolo: Temporizzazioni MMC

Ciao a tutti!
Qualcuno ha un'idea delle temporizzazioni necessarie per le memorie MMC?
Mi spiego meglio, qualcuno conosce il transfer rate per una scrittura 
continua su questi dispositivi? (riferendosi a una MMC "media" odierna, 
da 512MBytes).
Vorrei realizzare un datalogger, che abbia una banda di 150KBytes/sec in 
scrittura sulla MMC, e mi chiedevo se con queste memorie la cosa fosse 
fattibile o meno. Finora ho visto dati discordanti sulla banda in 
scrittura "continuativa" (la sustained write speed).
Ho visto che esistono scritture
-single block
-multiple block
-burst
Il dato che proprio non riesco a trovare da nessuna parte e' la durata 
di un trasferimento "single block" (512 bytes), e di quelli "multiple 
block". :-(
Tutti i produttori si preoccupano di pubblicizzare la velocita' 
dell'interfaccia, che (se esaurisci il buffer di scrittura della MMC) ha 
poco a che vedere con quella di scrittura della flash!!
Voi che ne dite?
Grazie a tutti e ciao!
Aldo

block". :-(
Quindi vorresti usare un tuo sistema di accesso custom?
mmm... prevedo casini...
Ti consiglierei di usare la FAT16, che ti permette di usare files con
un interfaccia per PC e poi è un sistema noto..
Io ho usato per partire il Sourcecode2.0 scritto in C (con commenti in
tedesco, ma abbastanza comprensibile se sai come lavora la FAT16), che
legge blocchi da 512 bytes.
 
http://www.ulrichradig.de/site/atmel/avr_mmcsd/zip/SourceCode2.4.zip
 qui trovi della documentazione, molta in tedesco 
 
http://www.ulrichradig.de/index.html
  poi   > AVR  projekte  > MMC-SD
Ho trovato del codice in un forum tedesco:
 
http://www.mikrocontroller.net/forum/read-4-90147.html
ma devi sapere un pò la lingua,
ciao
  Stefano

 Qualcuno ha un'idea delle temporizzazioni necessarie per le memorie MMC?
Guarda sui ds della SANDISK (le cose più interessanti sono sui ds delle SD)
La SPI va al massimo a 20 MHz di clock.
La cosa veramente sconfortante sono i cicli di attesa...
Davide B.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 ma devi sapere un pò la lingua,
Danke schon. Ci guardero' subito!
Ciao! Aldo

 La cosa veramente sconfortante sono i cicli di attesa...
Esatto. L'interfaccia con il mondo esterno della MMC va a 20MHz, ma devo 
pero' aspettare che la flash scriva i dati prima di mandargliene altri.....
Sapresti a quanto corrispondono questi cicli di attesa?
Cioe' per scrivere un settore singolo, l'operazione quanto richiede, ms? 
decine di ms?centinaia?
Questo valore non riesco proprio a trovarlo.....
Ciao!
Aldo

 di un trasferimento "single block" (512 bytes)
Mi sembra di ricordare che questo dato ci sia (all'epoca lo cercai anche
io), ma non ho sott'occhio le specifiche. Se vuoi ci guardo.
-- 
asd

 
...e' una settimana che cerco sulle specifiche e su internet e non ho 
trovato nulla!
solo un valore pessimistico nella sezione "read/write timeout", che si 
ottiene facendo 2 conti con dei valori che si pescano nel registro 
CSD...ma e' un tempo MOLTO pessimistico.... ben lontano dai tuoi 
256KBytes/sec... (infatti la vel. media e' piu' alta, per questo sembra 
sia importante bufferare i dati se si devono stream-are su MMC)
se trovi il numeretto mi sarebbe molto utile! grazie in anticipo, in caso.
ciao,
aldo

Danke schon. Ci guardero' subito!
bitte schon
ciao
  Stefano

 se trovi il numeretto mi sarebbe molto utile! grazie in anticipo, in caso.
Ci guardo.
-- 
asd

 
Grazie!
Saluti,Aldo

 E nel caso della seconda, quanti settori bufferavi prima di scriverli?
Faccio single block writes e non bufferizzo. Trovo molto probabile che
scrivendo in quel modo sequenziale, ci pensi già la MMC a farlo.
-- 
asd

 interi settori.
In un sistema FAT non deve fare l'erase dei dati perchè scrive sui
cluster liberi.
Lo farà se si cancellano files.
Secondo me non ci dovrebbero essere differenze rilevanti di
performances tra i due sistemi, tranne ovviamente la maggior
complessità di un sistema FAT, compensata dal fatto che puoi usare i
dati ottenuti anche con un PC, cosa che in alcune applicazioni come la
mia è indispensabile.
ciao
  Stefano

 
Posso chiederti che prestazioni ottieni in scrittura, su una MMC? Quanti 
    kBytes/sec riesci a memorizzare?
Ciao grazie,
Aldo

 
Quindi scrivi i settori individualmente.
Quindi teoricamente ogni scrittura di settore è indipendente dalle 
altre, perchè per ogni scrittura ri-indirizzi tutto, e quindi forse sei 
nella situazione di tempo peggiore?
Scrivendo i blocchi sequenzialmente, oppure con una struttura FAT, 
l'unica differenza quindi potrebbe stare nel fatto che il sistema deve 
decidere in maniera  più intelligente in quale settore/cluster scrivere 
il pezzetto di file, piuttosto che fare un +1. Ma riterrei questo tempo 
<< del tempo di scrittura del settore...
Grazie ciao!
Aldo

    kBytes/sec riesci a memorizzare?
Non riesco a darti una risposta precisa perchè nella mia applicazione
viene usata soprattutto in lettura per usare dei profili di
lavorazione e scrive solo un piccolo logfile.
Comunque da qualche prova fatta con un MMC per PC e USB direi che
siamo tra 500kbytes/sec e 1Mbytes/sec, ma l'interfaccia è un USB 1.0.
La velocità dells SPI @20Mhz in teoria arriva fino a 2,5mBytes/sec, ma
credo che il tempo di scrittura flash sia il collo di bottiglia.
Comunque puoi guardare il lettore di Jesper, che rende disponibile
anche il sorgente:
http://www.myplace.nu/mp3/yampp7.htm
Lui usa la MMC-SD non con un FAT ma con un suo file system che carica
da USB e dice che va molto veloce.
ciao
  Stefano

 << del tempo di scrittura del settore...
Il tempo di decisione è sicuramente trascurabile, il problema è il tempo di
erase (e il fatto che quando fai l'erase di un blocco cancelli molti
settori, che se erano già occupati devono essere riscritti). Ribadisco
comunque che non ne so molto del funzionamento interno delle MMC, una cosa
che però mi pare quasi certa è che una preparazione della MMC (ossia la
cancellazione preventiva di tutti i settori) dovrebbe aumentare le
prestazioni.
-- 
asd