mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SD-Card Daten schreiben ohne FAT aber wie wieder lesen?


Autor: reflection (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Michael Wolf (mictronics) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich habe ja kein FAT auf der Karte, also sie ist FAT formatiert...
Was denn nun?

Ohne FAT im uC kannst du die Karte nicht ohne Diskeditor am PC auslesen.
Schreibst du mit dem uC Rohdaten auf die Karte (ohne Dateisystem) dann 
kanst du sie dir mit Tools wie Winhex oder Hexworkshop (im Diskmodus) 
anschauen und als Datei exportieren.

Autor: reflection (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salu

Danke für die Antwort, das habe ich gemeint.

Gruss

Autor: Michael Waiblinger (wiebel42)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Unter Linux würde es ein einfaches dd tun. Nur so als anregung. -wiebel

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Chrisi (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jörn-h. G. (joern_g)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Simon K. (simon) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Michael Waiblinger wrote:
> Unter Linux würde es ein einfaches dd tun. Nur so als anregung. -wiebel

Kleiner Tipp: Wenn man eh WinAVR installiert hat, hat man auch CygWin 
drauf. Probier mal in der Windows-Eingabeaufforderung "dd".

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.