Domanda

Di recente ho usato una scheda microSD da uALFAT GHI Electronics per la registrazione dei dati, ma sto avendo problemi con la sua affidabilità; alcune delle sue chiamate di funzione, a volte, prende molto più a lungo di quanto io possa gestire. Attualmente sto usando un MSP430 microcontrollore a parlare con l'uALFAT.

Quali pannelli simili, sono là fuori che avrei potuto utilizzare al posto del uALFAT che si spera essere più affidabile?

o

Quale sarebbe la soluzione più favorevole OEM se avevo bisogno di progettare la mia scheda di interfaccia di lavorare con un MSP430?

È stato utile?

Soluzione

vorrei pensare a questo un po 'diverso. Qualsiasi dispositivo di archiviazione basato su flash può avere fasatura variabile sulle scritture. In particolare uno con un file system e di livellamento usura e le caratteristiche del genere. Si tende ad essere la natura di Flash dal momento che è necessario cancellare interi blocchi e spostare le cose intorno. Se non è possibile vivere con la fasatura variabile, quello che ho fatto in passato è quello di spostare questo pezzo fuori della porzione critica tempo del codice.

In genere posso aggiungere una coda di cui il codice critica tempo scrive, e poi sullo sfondo tiro dalla coda e scrivere sulla scheda SD. In un RTOS, questo sarebbe un compito con priorità inferiore. In un ciclo di polling, sarebbe una funzione chiamata quando il sistema è inattivo.

Questo cambia il vincolo di essere i tempi caso peggiore per una chiamata di funzione semplicemente essere in grado di soddisfare i requisiti di throughput medio per la registrazione. Il caso di latenza peggiore e il throughput determinano quanto è grande la coda deve essere; in genere questo può essere di piccole dimensioni.

Altri suggerimenti

E 'probabilmente più complesso di quello e la soluzione migliore è come @sbass ha consigliato, anche se si sceglie di modificare il file system. È necessario determinare esattamente dove e perché la latenza si verifica prima che la colpa uALFAT.

Comunque per la cronaca, ho usato con successo ELM FatFs , e la sua cut-down ELM Petit FatFs , e anche EFSL .

Con riferimento alla latenza, mentre per esempio con ELM ho raggiunto velocità di scrittura fino a 300 kbit al secondo utilizzando SPI (la velocità dipende in gran parte la carta, e velocità può variare da 30 kbit / s per 1 Mbit / s), non ho potuto usare con successo per registrare un flusso di dati di 96 kbit / s per un certo periodo prolungato di tempo, anche con ottimizzato tampone dimensioni (multipli di una dimensione di settore), e 50 kbit coda di settori da 512 byte. Questo non è sceso in biblioteca, ma piuttosto la natura della scheda SD, che a quanto pare su 1 Mbit confini, sarebbe stallo per un massimo di 128 millisecondi, che è stato sufficiente per esaurire il buffer fornito dalla coda. La soluzione è ovviamente aumentare il buffering @sbas ha detto, ma in questo caso il sistema RAM totale era solo 64 kbit così che non era possibile.

Se si può buttare la memoria e un compito RTOS (probabilmente di TI proprio SYS / BIOS nel tuo caso) il problema si dovrebbe essere in grado di farlo funzionare con la libreria che avete. La quantità di RAM necessaria dipende dalla velocità dei dati e se scoppia o è continuo.

Grazie ragazzi, ho finito per l'attuazione di un buffer circolare di sorta con la memoria aggiuntiva e che sembra aver fatto il trucco. Grazie per il bene di ingresso!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top