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!
Dann guck dir an wie fat16 aufgebaut ist oder nimm einfach direkt einen fat ip core..
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?
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.
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.
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.
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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.


