Forum: Mikrocontroller und Digitale Elektronik SiLabs C8051F340 und microSD Karte beschreiben


von Michelle K. (Firma: electronica@tdnet) (michellekonzack) Benutzerseite


Lesenswert?

Ich muß in einem Langzeit-Meßdatenerfassungssystem, welches an mich erst 
nach defekt der LiPoly Batterien zurückkommt, die Daten der LiPoly 
Batterien erfassen.

Das sind pro Minute 64 Bytes oder 320 MByte in 10 Jahren

Nun will ich diese Daten alle 8 Minuten in einem einzigen Block von 512 
Bytes schreiben.

Frage:

Wieviele Dateien kann man eigentlich in eine FAT16 Tabelle schreiben?

Ich meine, bei mir währen das 65535 Dateien wenn ich NUR jede Minute 
einmal die Daten erfasse und eigentlich war von mir geplant, den 
intervall auf 15 sekunden zu reduzieren, womit alle 2 Minuten eine Datei 
geschrieben werden muß.

Hat jemand erfahrung damit?

Vor allem muß die microSD von einem PC mit standard software gelesen 
werden können.

Grüße
Michelle

von MarioT (Gast)


Lesenswert?

http://de.wikipedia.org/wiki/File_Allocation_Table
Es können 216 − 12 = 65.524 Cluster angesprochen werden (12 Cluster 
reserviert FAT16, deshalb nicht 65.536).
Man muß sowieso immer einen Block komplett schreiben der normalerweise 
512Byte groß ist. Die Datei muß aber nicht "geschlossen" werden. Es kann 
auch für jedes "Jahr" oder man schreibt nur eine große Datei. Wenn man 
sich das ganze FAT auf dem µC sparen will, legt man auf dem PC diese 
Datei an mit der größe "also alles voll ' '(Leerzeichen)wie die Datei 
werden könnte. wenn man sie am PC ausliest ist da die Datei mit den 
Daten und der Rest hat halt Leerzeichen

von Michelle K. (Firma: electronica@tdnet) (michellekonzack) Benutzerseite


Lesenswert?

Das mit der einzelnen Datei habe ich versucht, aber die kann unter 
WinDOS nicht gelesen werden.

Sprich, ich habe einfachin der FAT eine Datei angelegt und dann vo 
bezeichtneten Block an weggeschrieben...

Vor allem nicht vergessen die lezten zwei Bytes des 512 Byte Blocks mit 
dem Folgesektor zu versehen.

Weder Windows noch Linux könnend das lesen

Deswegen dachte ich, das ich die Sourcen aus der AppNote 282 (SiLabs) 
nehme, aber das bedeutet erst mal, das ich das ganze USB Zeugs daraus 
entfernen muß.

Das schöne an diesem "Referenz Design" ist, das es beschreibt wie Du 
eine SD, MMC und CF-Card an einen 8051 im Mass-Storage Modus ansprichst.

Ich werde mal bei SiLabs nachfragen, ob die ne RAW-API zu FAT haben.

Grüße
Michelle

von R. W. (quakeman)


Lesenswert?

Michelle Konzack schrieb:
> Das mit der einzelnen Datei habe ich versucht, aber die kann unter
> WinDOS nicht gelesen werden.
>
> Sprich, ich habe einfachin der FAT eine Datei angelegt und dann vo
> bezeichtneten Block an weggeschrieben...

Das muß aber gehen, da ich das selber auch schon so benutzt habe. Die 
Datei muss auf jeden Fall defragmentiert sein, damit das funktioniert. 
Dann den Start- und Endblock aus dem Dateieintrag raussuchen und als 
Grenzen zum Schreiben benutzen. Einfach die Karte unter Windows 
formatieren und eine leere Textdatei mit Größe X dort anlegen lassen, 
welche später für deine Daten benutzt werden soll.

> Vor allem nicht vergessen die lezten zwei Bytes des 512 Byte Blocks mit
> dem Folgesektor zu versehen.

Das ist mir jetzt nicht klar. Wenn du den obigen Ansatz mit einer 
einzelnen großen Datei benutzt, dann brauchst du, abgesehen von deinen 
Daten, nichts besonderes am Ende der Blöcke zu schreiben. Sämtliche 
Blöcke innerhalb der Grenzen sind ausschließlich für deine Daten 
verfügbar. Diese Datei kann man anschließend am PC problemlos auslesen 
und analysieren. Du hast auf deinem Controller dann nichts mit dem FAT 
Dateisystem am Hut. Du brauchst eben nur den Start- und Endblock und 
schreibst dort die Rohdaten direkt rein.

Ciao,
     Rainer

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.