SD-Card Daten schreiben ohne FAT aber wie wieder lesen?

Gast #633794
Lesenswert?

Salu zusammen

Ich habe gerade so wie ich das sehe die SD Card zum laufen gebracht. Es 
handelt sich um eine Sandisk 512MB mit dem Code von TI für den MSP430 
(slaa281a) Siehe Attachement.

Diesen habe ich nun angepasst und ich erhalte die Cardsize 507379712
nehme jetzt mal an das in demfall alles funktioniert (CS, SPI ect.)

Nun möchte ich ja was auf die Karte schreiben und das nacher im Computer 
wieder lesen. Die Daten müssen also nicht mehr mit dem MSP430 gelesen 
werden, lediglich mit dem PC. Wie mache ich das jetzt am einfachsten. 
Habe hier den Code aus dem Beispiel einmal übernommen:

for (i = 0; i <= 512; i++) buffer[i] = i;
    mmcWriteSector(1, buffer);                // write a 512 Byte big 
block beginning at the (aligned) adress

    for (i = 0; i <= 512; i++) buffer[i] = i+64;
    mmcWriteSector(2, buffer);                // write a 512 Byte big 
block beginning at the (aligned) adress

    mmcWriteBlock(1*512ul, 512, buffer);


Und nu? :o) Sorry für die Frage, aber was sehe ich dann wie im Computer? 
Ich habe ja kein FAT auf der Karte, also sie ist FAT formatiert, aber 
der SD Card Code arbeitet ja ohne FAT. Wie komme ich nun an meine Daten 
ran. Gibt es da für Windows ein Programm? Kann ich die Daten auch in 
eine fixe Datei schreiben? Habe gelesen man solle eine Datei so gross 
wie die Karte anlegen, wie macht man das? Ich blicke bei dem ganzen SD 
Karten Zeugs einfach nicht durch. Nun läuft sie endlich und ich komm 
schon wieder nicht weiter...

Hoffe Ihr könnt mir helfen

Gruss reflection
Angehängte Dateien:
Persönliche Seite #634922
Lesenswert?

Mit Linux ist das kein Problem mit Boardmitteln.
Unter Windows kannst Dir ein solches Programm aber schnell selber 
schreiben. Du sorgst einfach dafuer dass mindestens ein Null-Byte nach 
den Daten folgt oder Du schreibst eine Art Trailout-Sequenz hinter die 
Nutzdaten. Dann oeffnest Du das Device und liest einfach so lange Daten, 
bis der Trailer kommt. Die gelesenen Daten schreibst Du in eine Datei - 
fertig.


Michael
Gast #634934
Lesenswert?

>Du sorgst einfach dafuer dass mindestens ein Null-Byte nach
>den Daten folgt oder Du schreibst eine Art Trailout-Sequenz hinter die
>Nutzdaten.

Gute Idee wenn man Text Daten schreibt. In Binärdaten können
sowohl Null-Bytes wie auch die Trailout Sequenz in den Daten
vorkommen. Da hilft nur ein echtes FAT Dateisystem ohne
rumgemurkse.
Gast #634948
Lesenswert?

Ein echtes FAT-Dateisystem wäre in der Tat die ordentlichste Lösung.

Eine weitere "schnelle" Lösung wäre, den ersten Daten-Sektor nur für 
Verwaltungsinformationen zu nutzen. Dabei ist die einzige Info die 
momentane Länge der Nutzdaten in den folgenden Sektoren, z.B. als 
32-Bit-Zahl.
Persönliche Seite #635210
Lesenswert?

>Du sorgst einfach dafuer dass mindestens ein Null-Byte nach
>den Daten folgt oder Du schreibst eine Art Trailout-Sequenz hinter die
>Nutzdaten.

> Gute Idee wenn man Text Daten schreibt. In Binärdaten können
> sowohl Null-Bytes wie auch die Trailout Sequenz in den Daten
> vorkommen. Da hilft nur ein echtes FAT Dateisystem ohne
> rumgemurkse.

Nu gut dann schreibst halt noch einen Header davor, wo Du die 
Datenlaenge mit angibst, dann funktioniert die Methode auch fuer 
beliebige Daten.

Ein einfaches FAT-FS ist zur Not auch schnell implementiert. Kommt halt 
drauf an wieviel Aufwand man sich machen will. Es wuerde reichen, die 
FAT zu schreiben und einen Verzeichniseintrag im Wurzelverzeichnis. Dann 
kannste die Schese auch direkt mit nem Rechner auslesen ;) Das Beste is 
dann man formatiert das Ding am Rechner und sieht zu dass im 
Stammverzeichnis noch Platz ist.

Michael
#639518
Lesenswert?

Eine weitere Möglichkeit, die sehr einfach und sehr bequem ist, die 
Karte neu zu formatieren mit FAT und eine sehr große Datei, z.B. einfach 
eine Textdatei mit Spaces gefüllt oder eine Binärdatei mit 0x00 oder 
0xFF gefüllt anzulegen - kann ruhig die ganze Karte belegen, 
platzmässig.
Danach kannst du dann einfach ab einem bestimmten "Offset", wo diese 
Datei beginnt, blind Daten reinschreiben und sie mit jedem beliebigen 
Programm, also ohne Diskeditor lesen.
Bei Textdatei reicht dann schon das notepad.

Nur nicht die FAT selber überschreiben!

Aber wenn du eine 1GB Karte hast, dann beginn einfach bei 1MB oder so 
und du hast Platz ohne Ende.

cu joern

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