gelöschter Zustand einer SD Karte

Im Unterforum Grundlagen - Beschreibung: Grundlagen und Fragen für Einsteiger in der Elektronik

Elektronik Forum Nicht eingeloggt       Einloggen       Registrieren




[Registrieren]      --     [FAQ]      --     [ Einen Link auf Ihrer Homepage zum Forum]      --     [ Themen kostenlos per RSS in ihre Homepage einbauen]      --     [Einloggen]

Suchen


Serverzeit: 26 11 2024  07:33:07      TV   VCR Aufnahme   TFT   CRT-Monitor   Netzteile   LED-FAQ   Osziloskop-Schirmbilder            


Elektronik- und Elektroforum Forum Index   >>   Grundlagen        Grundlagen : Grundlagen und Fragen für Einsteiger in der Elektronik


Autor
gelöschter Zustand einer SD Karte

    







BID = 801050

wulf

Schreibmaschine



Beiträge: 2246
Wohnort: Bozen
 

  


Hallo,

wie im Titel bereits angedeutet würde ich gerne wissen welchen Zustand die Bits einer SD Karte haben wenn sie gelöscht sind.
Ich würde gerne eine Karte unformatiert mit einem µC beschreiben und dazu dann leere Bytes von beschriebenen Bytes unterscheiden können. Es wird ASCII verwendet, also kommen niemals Zeichen wie 0x00 oder 0xFF im "Text" vor. Prinzipiell könnte es mir eigentlich egal sein da ich die Karte sowieso vor dem Einsatz initialisieren (also löschen) muss, da SDHC Karten mit FAT32 ausgeliefert werden.
Dennoch wäre der "Ruhezustand" der Bits interessant zu wissen um das gleich ordentlich ausprogrammieren zu können.
Wikipedia meint zwar, dass der Ruhezustand eines NAND Flash "1" ist, aber wird das vom Speichercontroller möglicherweise invertiert, sodass ich dann "0" zum Löschen schreiben soll?

Kennt sich jemand in dieser Richtung aus?

Grüße
Simon

_________________
Simon
IW3BWH

BID = 801167

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach

 

  


Zitat :
Dennoch wäre der "Ruhezustand" der Bits interessant zu wissen um das gleich ordentlich ausprogrammieren zu können.


Zitat :
The card data after an erase operation is either “0” or “1”, depending on the card vendor.
The SCR register bit DATA_STAT_AFTER_ERASE (bit 55) defines whether it is “0” or “1”.
So stehts in der Spezifikation.

Prinzipiell kann es dir egal sein, denn du bekommst den wirklichen Speicherinhalt sowieso nicht zu Gesicht.
Das läuft alles durch den Controller, der z.B. ECC-Informationen hinzufügt und auswertet, Wear-Management betreibt und defekte Bereiche ummappt.
Bei diesem Speichermanagement lässt er sich auch nicht in die Karten schauen.

Du solltest nach dem Löschen wenigstens ein paar Verwaltungsinformationen aufbringen, aus denen hervorgeht, wo gültige Daten zu finden sind und was frei ist.

P.S.:
Zitat :
sodass ich dann "0" zum Löschen schreiben soll?
DU schreibst zum Löschen überhaupt keine Daten, sondern verwendest eines der Erase-Kommandos!



[ Diese Nachricht wurde geändert von: perl am 30 Nov 2011  0:37 ]

BID = 801184

wulf

Schreibmaschine



Beiträge: 2246
Wohnort: Bozen


Zitat :

DU schreibst zum Löschen überhaupt keine Daten, sondern verwendest eines der Erase-Kommandos!

Wie soll ich denn von einem Betriebssystem aus (damit soll die Karte initalisiert werden) einen SD spezifischen Befehl absetzen? Ich kann in Linux die Karte direkt mit Nullen oder Einsen beschreiben, mehr aber auch nicht. Die einzige Möglichekeit das selber zu machen, wäre das den µC erledigen zu lassen. Aber das wollte ich aus Zeitgründen vermeiden.

Deine Idee mit den Verwaltungsdaten auf der Karte ist zwar nicht schlecht. Die Karte soll als Speicher für eine Wetterstation nebenbei mitlaufen und alle Werte loggen.
Da brauchts m.E. keine Verwaltungsdaten. Der Karte wird einfach linear beschrieben.
Leider hat die aktuelle Hardware keinen Batteriegestüzten SRAM, sonst könnte ich die Schreib- und Lesepointer so mitschreiben. In der nächsten Hardware wird das vorgesehen (sprich die RTC hat dann genug General purpose SRAM).
Mit dieser Hardware soll der Schreibpointer beim Einschalten durch einen binären Suchalgorithmus gefunden werden. Der Lesepointer hingegen wird vom Server mitgeliefert (der Server ruft die Station regelmäßig über GSM an und fragt neue Daten ab).

Grüße
Simon

_________________
Simon
IW3BWH

BID = 801188

Ltof

Inventar



Beiträge: 9333
Wohnort: Hommingberg

Du kannst Doch selbst einen definierten Zustand herstellen: Erzeuge ein Textfile, das die Karte vollständig ausfüllt.

Mit einer geschickten Struktur einer darin befindlichen Tabelle findet sich der µC ganz einfach zurecht. Nebenbei können die Daten im Klartext lesbar abgelegt werden.

Das könnte dann so aussehen:

#000001;0025;1013;0012;0001
#000002;0025;1013;0012;0001
#000003;0025;1013;0012;0001
#000004;0025;1013;0012;0001
*000000;0000;0000;0000;0000
*000000;0000;0000;0000;0000
*000000;0000;0000;0000;0000
*000000;0000;0000;0000;0000
*000000;0000;0000;0000;0000
*000000;0000;0000;0000;0000

Der µC müsste nicht die erste freie Zelle suchen, sondern nur die erste freie Zeile.

_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 801232

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
Wie soll ich denn von einem Betriebssystem aus (damit soll die Karte initalisiert werden) einen SD spezifischen Befehl absetzen?
Prinzipiell genau so, wie du es beim Lesen und Schreiben der Daten machst.
Dabei kannst du auch nicht einfach die Daten rein kloppen, sondern brauchst die entsprechenden Befehle, damit der Controller weiß wohin, woher und wieviel.
Überhaupt werden die Daten auch nicht byteweise, sondern blockweise geschrieben. Insofern hat die Bedienung eines solchen Speichers einiges mit dem Betrieb einer Harddisk gemeinsam.
Nebenbei gesagt fühlt sich eine CF-Karte genau wie ein IDE-Laufwerk an und ist sogar nahezu pinkompatibel.

Egal, ob USB, CF oder SD, auf jeden Fall geht das Löschen über Erase viel schneller, als ein Neubeschreiben.
Wenn du erst einmal versuchst 2GB mit dem µC zu schreiben, wirst du dich wundern, wie lange das dauert.

BID = 801254

Ltof

Inventar



Beiträge: 9333
Wohnort: Hommingberg


Zitat :
perl hat am 30 Nov 2011 10:54 geschrieben :

... damit der Controller ...

Mir kommt der Verdacht, dass wulf nicht verstanden hat, dass damit der Controller auf der Karte gemeint ist und nicht der µC, der das ganze bedienen soll.


_________________
„Schreibe nichts der Böswilligkeit zu, was durch Dummheit hinreichend erklärbar ist.“
(Hanlon’s Razor)

BID = 801328

wulf

Schreibmaschine



Beiträge: 2246
Wohnort: Bozen

Neee das hab ich schon verstanden. Nur läuft das alles über eine relativ langsame SPI Schnittstelle und selbst wenn Blockweise gelöscht wird, dann könnte das mit dem µC lange dauern.

Bisher habe ich auch selbst einen definierten Zustand hergestellt. Ich wollte eigentlich nur wissen ob ich als Grundzustand lieber '1' oder '0' nehmen sollte.
Aber da ich (laut perl) keine Möglichkeit habe zu wissen was der Memory Controller genau macht, werde ich einfach wie bisher angedacht, die Karte mit '0' vollschreiben.


Zitat :
Wenn du erst einmal versuchst 2GB mit dem µC zu schreiben, wirst du dich wundern, wie lange das dauert.

Genau darum geht es ja, und deshalb wird die SD Karte am PC "initialisiert".

@Ltof:
Die DAten werden sowieso menschenlesbar (ASCII) abgelegt.
Das mit dem zeilenweisen Ansatz habe ich mir auch schon durchdacht. Es gibt zwar für mehrere Stationen als gleiche Hardware, aber jeweils eine unterschiedliche Anzahl von Sensoren, und damit Werten. Um das so universell wie möglich zu gestalten bleibe ich beim byteweisen Ansatz und programmiere einen binären Suchalgorithmus wenn der µC neu gesta[/ot]rtet wird (um das Lesen und Schreiben der Blöcke kümmert sich eine darunterliegende Bibliothek).


Zitat :
Prinzipiell genau so, wie du es beim Lesen und Schreiben der Daten machst.

Das sehe ich ja ein. Aber das Betriebssystem stellt mir diese (tiefen) Befehle ja nicht direkt zur Verfügung.

Zusammenfassung; Ich werde es so machen:
PC initialisiert Karte mit '0'.
µC beschreibt Karte mit einem Endlosstring.
Um die Karte im Notfall aus der Ferne neu initialisieren zu können, werde ich die C Bibliothek der SD Karte um einen Löschbefehl erweitern (auf dem tiefen Level kann ich ja).


Ich danke euch für eure Ausführungen und schreite zur Tat =)

[ Diese Nachricht wurde geändert von: wulf am 30 Nov 2011 17:08 ]

BID = 801330

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
Aber das Betriebssystem stellt mir diese (tiefen) Befehle ja nicht direkt zur Verfügung.
Ich denke du verwendest Linux?
Das sollte der Quellcode offen gelegt sein, sodaß du ggfs. die nötigen Befehle noch dazustricken kannst.

BID = 801335

wulf

Schreibmaschine



Beiträge: 2246
Wohnort: Bozen

Wie recht du da hast. Wenn ich nur diese Fähigkeiten hätte.
Im Ernst, so gut bin ich leider nicht. Und um mich da einzuarbeiten fehlt mir auch die Zeit.

Grüße
Simon

_________________
Simon
IW3BWH

BID = 801441

perl

Ehrenmitglied



Beiträge: 11110,1
Wohnort: Rheinbach


Zitat :
Wenn ich nur diese Fähigkeiten hätte
Dann bring das Erase doch dem µC bei.
Read_Data und Write_Data musst du ja ohnehin implementieren und damit ist das Ärgste ja schon geschafft.

BID = 801451

wulf

Schreibmaschine



Beiträge: 2246
Wohnort: Bozen

Ja das werde ich machen.

Danke nochmal.

_________________
Simon
IW3BWH


Zurück zur Seite 1 im Unterforum          Vorheriges Thema Nächstes Thema 


Zum Ersatzteileshop


Bezeichnungen von Produkten, Abbildungen und Logos , die in diesem Forum oder im Shop verwendet werden, sind Eigentum des entsprechenden Herstellers oder Besitzers. Diese dienen lediglich zur Identifikation!
Impressum       Datenschutz       Copyright © Baldur Brock Fernsehtechnik und Versand Ersatzteile in Heilbronn Deutschland       

gerechnet auf die letzten 30 Tage haben wir 20 Beiträge im Durchschnitt pro Tag       heute wurden bisher 0 Beiträge verfasst
© x sparkkelsputz        Besucher : 182401146   Heute : 921    Gestern : 7426    Online : 256        26.11.2024    7:33
10 Besucher in den letzten 60 Sekunden        alle 6.00 Sekunden ein neuer Besucher ---- logout ----viewtopic ---- logout ----
xcvb ycvb
0.0763251781464