Forum: Mikrocontroller und Digitale Elektronik Daten in der SD-Karte mit HxD Editor finden


von Yann B. (yann)


Angehängte Dateien:

Lesenswert?

Hallo,

ich habe ein JPG-Bild (siehe Anhang 1) in Binär-Datei mit einem Tools 
konvertiert und in eine 2GB SD-Karte kopiert. Jetzt möchte ich wissen, 
wo genau (also ab welcher Addresse oder ab welchem Sektor) meine 
Binärdaten in der SD-Karte liegen, um diese mit meinem FPGA-Board über 
SPI zu lesen.

Dazu nutze ich den HxD-Editor. Damit kann ich die SD-Karte und die Datei 
öffnen, um den Inhalt in HEX-Daten zu sehen. Im Anhang 2 ist der Inhalt 
des ersten Sektors (0) der SD-Karte zu sehen und im Anhang 3 sind die 
ersten 512 Bytes der Binär-Datei zu sehen.

Die SD-Karte ist mit dem Dateisystem FAT16 formatiert.

Ich freue mich auf eure Hilfe.

Vielen Dank!

von TestX (Gast)


Lesenswert?

Dann guck dir an wie fat16 aufgebaut ist oder nimm einfach direkt einen 
fat ip core..

von Yann B. (yann)


Lesenswert?

TestX schrieb:
> oder nimm einfach direkt einen
> fat ip core..

Hallo TextX,

und dke erst mal für deinen Beitrag. Wofür soll ich den FAT IP core 
nehmen? Das brauche ich nicht. Ich möchte die Daten RAW lesen also nur 
Bits.

Nach meiner Recherche ist der erste Sektor (von HxD angezeigt) der 
Bootsektor also können die Daten da nich angelegt werden. Oder? Wenn ja, 
ab welchem Sektor liegen denn die Daten?

von S. R. (svenska)


Lesenswert?

Yann B. schrieb:
> Die SD-Karte ist mit dem Dateisystem FAT16 formatiert.

Dann solltest du einen FAT16-Treiber benutzen. Entweder als IP-Core oder 
als Software für einen Softcore, muss ja nicht schnell sein.

Wenn du direkt drauf zugreifen willst, dann lasse FAT16 weg und schreibe 
dein Bild direkt auf die SD-Karte ab Sektor 0. Das ist nicht 
standardkonform, funktioniert aber trotzdem.

von Donni D. (Gast)


Lesenswert?

Du nutzt FAT16, also schau dir an wie dort die Dateien abgelegt werden 
und schon findest du den Anfang deiner Daten. Einfacher wäre es für dich 
kein Dateisystem zu verwenden, die Daten über SPI draufschreiben und 
wieder lesen.

von Jim M. (turboj)


Lesenswert?

Yann B. schrieb:
> Oder? Wenn ja,
> ab welchem Sektor liegen denn die Daten?

Mal die FAT Spec gelesen..?

Die Daten können irgendwo auf der Karte liegen,
abhängig davon was vorher drauf war müssen die nichtmal am Stück sein 
(Stichwort Fragmentierung).

Ohne eine FAT Implementation als IP Core (oder Software) kommt man nicht 
weit.

Übrigens zeigt Dir HxD NICHT den ersten Sektor der Karte an, wenn Du 
den Laufwerksbuchstaben öffnest. SD Karten sind partitioniert - die 
Partitionstabelle sieht man nur nach Öffnen des physischen Laufwerks als 
Admin.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Yann B. schrieb:
> Wofür soll ich den FAT IP core nehmen?

Damit Du das Dateisystem korrekt auswertest.

> Das brauche ich nicht.

Doch.

> Ich möchte
> die Daten RAW lesen also nur Bits.

Ja, aber dazu musst Du wissen, wo die Daten auf der SD-Karte sind. Du 
erinnerst Dich: Das war Deine Fragestellung, mit der Du diesen Thread 
eröffnet hast.

Das Dateisystem besteht aus vier für Dich wichtigen Dingen:

Der Partitionstabelle, dem Bootsektor, der FAT und dem Root-Directory.

In der Partitionstabelle steht, wo der Bootsektor zu finden ist.

Im Bootsektor steht, wo FAT und Root-Directory zu finden sind, und wie 
groß ein Cluster ("Zuordnungseinheit") ist.

Da FAT16 gerade mal 2^16 Einträge verwalten kann, müssen bei größeren 
Datenträgern mehrere Sektoren zusammengefasst werden - mit 
512-Byte-Einheiten wären gerade mal 32 MByte verwaltbar.

Im Root-Directory findest Du Dateinamen und weitere Verwaltungsdaten, 
unter anderem die Nummer des ersten Clusters, in dem die Daten der Datei 
zu finden sind.

Wenn die Datei größer ist als ein Cluster, musst Du in der FAT 
nachsehen, welche(r) Cluster der/die Folgecluster des ersten Clusters 
der Datei ist/sind, und kannst mit dieser Information die Daten aus 
Deiner Datei lesen. Wie lang die Datei ist, kannst Du dem Eintrag im 
Directory entnehmen.

Liegt die Datei nicht im Root-Directory, sondern einem Subdirectory, 
musst Du zunächst dieses Subdirectory lesen und auswerten; das 
funktioniert genauso wie das Lesen einer Datei.


Dich stumpf darauf zu verlassen, daß die Datei immer an der gleichen 
Stelle auf der SD-Karte abgelegt ist, ist nicht sinnvoll. Das ist 
Pfusch, und geht schnell schief.

von Yann B. (yann)


Lesenswert?

Hallo Svenska,

und dke für deinen Beitrag. Ich werde mir diesen FAT 16 IP core 
anschauen.

S. R. schrieb:
> Wenn du direkt drauf zugreifen willst, dann lasse FAT16 weg und schreibe
> dein Bild direkt auf die SD-Karte ab Sektor 0. Das ist nicht
> standardkonform, funktioniert aber trotzdem.

Wie oben gesagt, möchte ich nur die Daten lesen. Schreiben mache ich 
manuel also nicht mit dem Board sondern einfach copy & paste in die 
Karte.

von Yann B. (yann)


Lesenswert?

Donni D. schrieb:
> Du nutzt FAT16, also schau dir an wie dort die Dateien abgelegt werden

Hallo Donni,

und dke für deinen Beitrag. Ob ich FAT 16 nutze, würde ich nicht sagen 
aber die SD-Karte ist so formatiert. Aber ich beschäftige mich schon mit 
dem FAT 16.

Donni D. schrieb:
> Einfacher wäre es für dich
> kein Dateisystem zu verwenden, die Daten über SPI draufschreiben und
> wieder lesen.

Genau das möchte ich tun aber nicht schreiben.

von Yann B. (yann)


Lesenswert?

Hallo Jim,

und dke für deinen Beitrag.

Jim M. schrieb:
> Mal die FAT Spec gelesen..?

Bin jetzt daran.

Jim M. schrieb:
> Die Daten können irgendwo auf der Karte liegen,
> abhängig davon was vorher drauf war müssen die nichtmal am Stück sein
> (Stichwort Fragmentierung).

Du hast Recht. Ich habe die SD-Karte mit Gparted unter Ubuntu geöffnet 
und er sagt mir, dass mein erster Sektor 255 ist. Dieser soll der 
physikallische Sektor sein. Was meinst du mit der Fragmentierung?

Jim M. schrieb:
> Ohne eine FAT Implementation als IP Core (oder Software) kommt man nicht
> weit.

Hummm...

Jim M. schrieb:
> Übrigens zeigt Dir HxD NICHT den ersten Sektor der Karte an, wenn Du
> den Laufwerksbuchstaben öffnest. SD Karten sind partitioniert - die
> Partitionstabelle sieht man nur nach Öffnen des physischen Laufwerks als
> Admin.

HxD habe ich als Admin geöffnet und konnte trotzdem die SD-Karte als 
physikallischer Datenträger nicht öffnen. Nach meiner Recherche geht es 
nicht mit HxD aber dies lässt ich mit gparted lösen.

von Yann B. (yann)


Lesenswert?

Hallo Rufus,

und vielen Dank für deinen Beitrag und die ausführliche Erklärung.

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.