Daten in der SD-Karte mit HxD Editor finden

#5817079
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!
Angehängte Dateien:
#5817111
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?
#5817117
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.
#5817119
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.
Persönliche Seite #5817128
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.
#5817157
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.
#5817162
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.
#5817176
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren