www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Clustergröße SD-Card verringern


Autor: Jan Purrucker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich möchte mir einen Datenlogger mit einer SD-Card, die per SPI 
angesteuerert wird bauen. Nun ist es so, dass ich immer 1 Byte pro 
Zeiteinheit (z.B. 1s) darauf abspeichern will.
Nun ist es aber so, wenn ich ein Byte auf der SD Card abspeichere 
bereits 16kB (das 16000-fache!) belegt sind, weil diese eine 
Clustergröße von 16kB hat. Mit dem nächsten abgespeicherten Byte wären 
dann schon 32kB belegt. Das ist reine Platzverschwendung. Deshalb meine 
Frage, bevor ich weitere Überlegungen anstelle:

Gibt es eine Möglichkeit nacheinander 1 Byte auf einer SD Card im 
SPI-Modus abzuspeichern , ohne dass deswegen immer ein ganzes Cluster 
belegt ist?
Die Seite von www.ulrichradig.de habe ich schon durchsucht.Konnte aber 
nichts diebezüglich finden.
Für Hilfen wäre ich sehr dankbar.

Gruß
Jan Purrucker

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also die speicherbare Einheit bei SD-Karten ist meines Wissens 512 Byte. 
Du müsstest also entweder 512 Werte im RAM halten (Wenn dein Controller 
denn genügend RAM hat) oder halt jeweils 511 Byte verschwenden. Damit 
könntest du deinen Logger mit einer 256MB-Karte fast 6 Tage im 
Dauerbetrieb laufen lassen. Ob das reicht musst du selbst wissen.

Autor: Jan Purrucker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Philipp,

vielen Dank für deine Hilfe. Ich habe mal testweise eine 1Byte große 
Datei auf meine SD-Karte kopiert, und dann waren bereits 16kB belegt. 
Wenn ich unter Windows die Karte formatieren will, kann ich die 
Clustergröße auch nicht angeben.
Wie kann man dann eine SD-Karte formatieren, dass die Clustergröße 
512Byte beträgt? Und welches Dateisystem braucht man für einen 
Datenlogger?

Hab leider noch nicht so viel Erfahrungen mit SD-Karten Datenloggern. 
Deswegen die Fragen. Für weitere Antworten wäre ich sehr dankbar.

Gruß
Jan

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal nun ein byte oder zwei anzuhaengen und schau wie gross die 
datei dann ist.

rene

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mach doch einfach z.B. pro Tag/Stunde eine eigene Datei auf, in die du 
dann (evtl. mit Zeitstempel) deine Messwerte zyklisch hineinschreibst.

Ich würde die Datei dann ersteinmal in ausreichender Größe nur mit 
Leerzeichen anlegen, damit - falls du FAT16 verwendest - nicht bei jedem 
neuen Eintrag die FAT neu geschrieben werden muss (Abnutzung).
Die Position des letzten Eintrages kann man ja relativ einfach wieder 
auffinden.

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ihr sprecht von verschiedenen Sachen !

Ein Sektor auf der SD-Card wird sicher 512 Bytes haben, wahrscheinlich 
wird dieser schon durch mehrere Pages im Flash-Speicher gebildet. Das 
FAT-Dateisystem arrangiert dann mehrere Sektoren zu einem Cluster....

Ich würde erst mal darüber nachdenken, wie ich das FAT-Dateisystem in 
den uC bekomme, dann ist es auch leicht, an eine Datei ein weiteres Byte 
anzuhängen...

Autor: Jan Purrucker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe gerade 4 einzelne Dateien mit jeweils 1Byte gespeichert -> 64kB 
belegt.
Danach habe ich eine Datei mit 4Byte gespeichert ->16kB belegt.
Da muß ich wohl noch Überlegungen anstellen, bevor ich zu basteln 
beginne.
Meine Frage ist nur, ob ich (entsprechende Foramtierung vorausgesetzt) 
512 Byte einzeln reinschreiben kann.
Weiterhin müsste ich dann wissen, wie ich die SD-Card formatiere.

Gruß
Jan

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Weiterhin müsste ich dann wissen, wie ich die SD-Card formatiere.

Die handelsüblichen Karten sind schon in FAT16 formatiert.

Wenn du hier eine Datei erstellst, nimmt sie nunmal mindestens einen 
Cluster ein. Die Cluster sind nur bei Karten mit geringerer Kapazität 
kleiner, mindestens aber so groß wie ein Sektor.

Du musst halt mehr Daten in eine Datei schreiben, und nicht pro Datei 
nur 1 Byte!

Autor: Jan Purrucker (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Thomas,

mein yC hat 1024Bytes Ram. Nun sammle ich meine Daten, bis ich 512 Byte 
voll habe, und danach beschreibe ich die Karte. Aber 16kB kann ich 
leider nicht sammeln, da mein Ram halt nur 1024 Byte hat. Ich 
recherchiere am besten nochmal im Web, bevor ich hier weiter Fragen 
aufwerfe.
Vielen Dank einstweilen. Sollte jemand einen Link zu einem ähnlichen 
Problem haben, wäre das nicht schlecht.

Gruß
Jan

Autor: rene (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier's mal mit append zu einem bestehenden file.

rene

Autor: fabse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
also du kannst auf eine MMC karte immer nur in 512byte(sektor) 
schreiben, kleiner geht net.
deine 16kb ist die clustergrösse deiner MMC karte, welche 32 
sektoren(512byte) zu einem cluster zusammen fasssen.
ansprechen tust du deine MMc karte sektor(512byte) weise, also solltest 
du immer 512 byte in deinem mikrocontroller sammeln und anschliessend 
auf das medium schreiben; so verschwendest du auch kein einziges byte 
deiner MMC.
falls zeitrelevant solltest du einen zeistempel zu jedem byte speichern.

gruss fubu

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.