Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: Schreibgeschwindigkeit SD-Card Kategorie: Programmierung C (von UlliS - 3.09.2015 14:14)
Als Antwort auf Re: Schreibgeschwindigkeit SD-Card von Volker - 3.09.2015 0:10

> > > > > > > > Hallo,
> > > > > > > >
> > > > > > > > ich verwende den Mega128CAN mit SD-Kartenmodul, Display usw.
> > > > > > > > Bei meiner Anwendung werden alle 10ms 5 Bytes vom CAN gelesen und mit 5 weiteren Bytes (also
> > > > > > > > insgesamt 10 Bytes) in ein geöffnetes File der SD-Karte geschrieben. Das funktioniert auch
> > > > > > > > für ein paar Sekunden, dann dauert der Schreibvorgang über 10ms und das gesamte Programm kommt
> > > > > > > > durcheiander. Ich vermute das passiert immer wenn 512 Bytes voll sind und der Sektor physikalisch
> > > > > > > > geschrieben wird.
> > > > > > > > Ich habe den SPI-Bus auf max Datenrate konfiguriert (fosz/4). Damit müssten bei 16MHz 4 kByte/ms
> > > > > > > > übertragen werden. Ich habe schon alle möglichen Abläufe mit SDC_FSync (auch nach jedem 10 Byte-
> > > > > > > > Paket) versucht. Damit kann ich zwar die Ã?bertragungszeit beeinflussen, komme jedoch nicht unter
> > > > > > > > 10ms.
> > > > > > > > Es kann doch nicht sein, dass für schlappe 512Bytes mehr als 40kBytes Strukturdaten gesendet werden -
> > > > > > > > oder mache ich einen Granatenfehler???
> > > > > > > >
> > > > > > > > Ich bin für jede Hilfe dankbar - mir gehen echt die Ideen aus!
> > > > > > > >
> > > > > > > > Danke im Voraus
> > > > > > > > Volker
> > > > > > > >
> > > > > > >
> > > > > > > Hallo Voker
> > > > > > > speichere deine Daten doch erst mal im RAM.
> > > > > > > Wenn dann mal Zeit ist, können die Daten auf die SD geschrieben werden.
> > > > > > > GruÃ? Daneie
> > > > > >
> > > > > > Hallo Daneie,
> > > > > >
> > > > > > danke für den Tip. Es fallen jedoch zu viele Daten für das RAM an: Die Messung muss bis 20Min ohne
> > > > > > Unterbrechung funktionieren. D.h. es fallen bei 10Bytes/10ms -> 1kBytes/Sec -> 60kBytes/min ->
> > > > > > 1,2MBytes/20Min an. Deshalb kam ich auf die Idee mit der SD-Card. Dass die Datenübertragung so lange
> > > > > > dauert hatte ich mir jedoch nicht träumen lassen.
> > > > > > GruÃ? Volker
> > > > >
> > > > > Hallo,
> > > > >
> > > > > und wie ist das, wenn man immer 512Byte im RAM sammelt und die Daten in einem thread oder verschickt?
> > > > >
> > > > > Grü�e Joerg
> > > >
> > > > Hallo,
> > > > wie sehen deine Daten aus?
> > > > Ã?ndern die sich alle 10ms oder hast du auch 50-mal hintereinander den gleichen Wert.
> > > > Wenn das so ist könntest du die Daten komprimieren.
> > > > Man kann 50-mal eine Null (50 Byte) senden oder man kann sagen jetzt kommen 50 Nullen (5 Byte).
> > > > Das gleiche geht auch mit gleichen Datenfolgen.
> > > > GruÃ? Daneie
> > > >
> > > Hallo Joerg und Daneie,
> > > bei dem Gerät handelt es sich um einen sogen. Tripmaster, der in einem Rallye-Fahrzeug dem Beifahrer
> > > hauptsächlich Wegstrecken, Zeit und einige Stoppuhren zur Verfügnung stellt. Nebenbei will ich
> > > Betriebsdaten vom CAN mitloggen. Diese Daten sind also nicht konstant. Es würde vielleicht reichen
> > > nur alle 100ms zu speichern, aber auch dafür reicht das RAM nicht über die Messzeit.
> > > An das Ã?bertragen in einem separaten Threat habe ich auch schon gedacht jedoch bisher noch nie mit
> > > Threats gearbeitet. So wie ich das verstanden habe kann man jedoch nicht in den gleichen 10ms
> > > in einem Threat die Daten erfassen und die Anzeige bedienen und im zweiten Threat Daten übertragen.
> > > Die Datenerfassung muss aber zwingend alle 10ms erfolgen sonst stimmen Uhren und Strecken nicht.
> > > Wenn jedoch in den gleichen 10ms zwei Threats bearbeitet werden könnten wäre das die Lösung - nur
> > > brauche ich dazu einen Tip ob das geht. Sonst fällt mir nur noch ein die Daten mit einem selbst
> > > programmierten Protokoll an die SD-Card zu schicken. Sie lägen dann aber nicht in einem FAT-System
> > > vor und wären nicht mit Windows auslesbar.
> > >
> > > Also wenn Euch noch etwas einfällt - Danke!
> > > Volker
> >
> > SD-Karten und Timing ist immer problematisch.
> > Schau dir mal SPI SRAM Bausteine an z. B.
> >
> > http://www.conrad.de/ce/de/product/651222/NVSRAM-nichtfluechtiges-SRAM-23LCV1024-IST-
> > TSSOP-8-Microchip-Technology?ref=searchDetail
> >
> Hallo Ulli,
> gute Idee. Muss dann zwar die Datenrate reduzieren um 20 Min messen zu können und das Layout
> überarbeiten aber so kann es gehen.
> Ich danke Euch allen für Eure Tipps. Schade finde ich nur, dass sich vom Entwicklerteam niemand
> meldet. Die müssten doch wissen was an Daten ausgetauscht wird. Mit einer kurzen Antwort wäre dann
> klar ob ich den aktuellen Weg verlassen muss. Aber irgendwie habe ich den Eindruck die C-Control
> stirbt aus.
> Volker

Hi Volker,

in der C-Control wir eine Art von http://elm-chan.org/fsw/ff/00index_e.html SD-Card Lib. verwendet.
Leider sind die Timings bei SD-Cards unterschiedlich und für deine Anwendung nicht so wirklich geeignet.
Ich würde den "Umweg" über den SRAM machen, evtl. auch nur um die Daten zu puffern (Ringpuffer).
SD-Cards halten auch nicht wirklich lange, wenn Sie so oft beschrieben werden. In den meisten Anwendungen
werden die Daten nur 1x am Tag auf die SD geschrieben (Langzeit Aufzeichnungen).



    Antwort schreiben


Antworten:

Re: Schreibgeschwindigkeit SD-Card (von Joerg - 4.09.2015 14:09)
    Re: Schreibgeschwindigkeit SD-Card (von UlliS - 4.09.2015 16:24)