SD-Karte lesen für Anfänger

Gast #3154848
Hallo,

ich möchte gerne am PC eine Datei erstellen (eine Tabelle bestehend aus 
20 16-Bit-Werten) und auf SD-Karte schreiben. Anschließend soll die 
Karte in meine Schaltung gesteckt werden und der Controller (ein 
AtMega88) soll auf Kommando den Datensatz einlesen und im EEPROM 
abspeichern.

Ich habe nun bereits versucht mich etwas in die Materie einzulesen, 
allerdings habe ich immer noch keine Ahnung wie ich das am besten 
angehen soll.


Was ich nun suche ist eine möglichst einfache Möglichkeit das Ganze zu 
realisieren. Konkret fallen mir dazu erstmal folgende Fragen ein:


Wie erstelle ich die Datei am besten auf dem PC, sodass der Controller 
damit klar kommt?

Muss ich wirklich dieses ganze FAT Dateisystem auf meinem Controller 
implementieren nur um ein paar Zahlen von der Karte zu lesen?


Vielen Dank erstmal!

MfG,
Philipp
Gast #3154855
Cardreader schrieb:
> Muss ich wirklich dieses ganze FAT Dateisystem auf meinem Controller
> implementieren nur um ein paar Zahlen von der Karte zu lesen?

Wenn du deine Karte "normal" am PC bearbeiten willst ja. Ich weiß nicht, 
ob es PC Programme gibt die mit unformatierten SD Karten umgehen können 
um z.b. einfach einen Bitstrom drauf zu schieben.
#3154858
Nein, das filesystem braucht man nicht unbedingt. Der PC kann allerdings 
nur mit einem Filesystem schreiben. Du kannst einen Treiber fuer den 
Controller schreiben, der das SD als linearen, sektorisierten speicher 
anspricht.

Zentral ist allerdings der Zugriff auf die Sektoren der SD. Das musst 
erst mal drauf haben. Das FAT obendrauf, ist eine Frage der 
Implementaion einer vorgegebenen Struktur.

Eine durchschnittliche IDE hat allerdings Treiber fuer SD schon 
vorhanden. Sei das nun fuer fuer Atmel, PIC oder sonstwas, zu 
irgendeiner Sprache
Gast #3154908
Die 40 Bytes werden ja mit Sicherheit in einem Block hintereinander 
abgelegt. Im Prinzip brauchst du also nur den Blockanfang nur mit einer 
Schleife zu suchen, z.B. auf ein vorgesetztes Schlüsselwort.
Gast #3154915
Siebzehn und Fuenfzehn schrieb:
> Nein, das filesystem braucht man nicht unbedingt. Der PC kann allerdings
> nur mit einem Filesystem schreiben.

Unter Linux kann man auch das RAW-Device ohne Filesystem lesen und 
schreiben. Ich hab mal gehört, das geht auch unter Windows, kenn mich da 
aber nicht so aus.

MfG Klaus
Gast #3156080
Hallo nochmal,

ein extra Programm wollte ich eigentlich nicht installieren um die 
SD-Karte zu beschreiben... das sollte von jedem PC aus funktionieren. 
Dann lieber das FAT-System auf dem Controller! Da würde ja dann eine 
abgespeckte "Read-only" Version ausreichen oder?


Wäre es damit dann möglich den Datensatz einfach als .txt datei auf der 
Karte abzulegen oder welches Dateiformat würde sich da am besten eignen?

In welcher Form liegen die Daten dann im Controller nachdem die Datei 
von der SD-Karte gelesen wurde? Bzw. wie komme ich an die interessanten 
40 Bytes aus der .txt Datei?


Gruß,
Philipp
#3156088
Cardreader schrieb:
> Hallo nochmal,
>
> ein extra Programm wollte ich eigentlich nicht installieren um die
> SD-Karte zu beschreiben... das sollte von jedem PC aus funktionieren.
> Dann lieber das FAT-System auf dem Controller! Da würde ja dann eine
> abgespeckte "Read-only" Version ausreichen oder?

Das 'Problem' ist nicht der Code. Das Problem ist der Speicher, den du 
zur Zwischenspeicherung der FAT Tabellen brauchst.
#3156090
Cardreader schrieb:

> Wäre es damit dann möglich den Datensatz einfach als .txt datei auf der
> Karte abzulegen

wäre möglich.
Hat den Vorteil, dass du am PC ganz einfach Notepad dafür verwenden 
kannst.

> In welcher Form liegen die Daten dann im Controller nachdem die Datei
> von der SD-Karte gelesen wurde?

so wie du sie einliest.

  Datei auf
  Datensatz lesen
  Datei zu


Vielleicht doch erst mal im C-Buch deines Vertrauens nachlesen, wie 
Dateibearbeitung in C grundsätzlich funktioniert und am PC mal ein paar 
Übungen dazu machen, ehe man dann auf die Spezialitäten in der 
µC-Version umsteigt, die dem Umstand geschuldet sind, dass dort einiges 
nicht ganz so einfach ist, weil man in Resourcennot ist.
Gast #3156095
>In welcher Form liegen die Daten dann im Controller nachdem die Datei
>von der SD-Karte gelesen wurde? Bzw. wie komme ich an die interessanten
>40 Bytes aus der .txt Datei?

Alter ich krieg ne Krise wenn ich sowas lese.
Klatsch dir ne UART Verbindung an deine Schaltung
und beam die Daten so rüber. Oder mach es per ISP.

SD Karte ist sowas von gar nichts für dich.
#3156148
holger schrieb:
>>In welcher Form liegen die Daten dann im Controller nachdem die Datei
>>von der SD-Karte gelesen wurde? Bzw. wie komme ich an die interessanten
>>40 Bytes aus der .txt Datei?
>
> Alter ich krieg ne Krise wenn ich sowas lese.
> Klatsch dir ne UART Verbindung an deine Schaltung
> und beam die Daten so rüber. Oder mach es per ISP.
>
> SD Karte ist sowas von gar nichts für dich.

Sehe ich ähnlich. Ne RS232 Schnittstelle und dann mit nem RS232toUSB 
wärs in dem Fall wohl doch leichter als das Gezuppel mit FAT...
Gast #3156158
Mh ja... ich merke schon... das Ganze ist wohl doch ne Nummer zu hart 
für meine bescheidenen Programmierkenntnisse (wie man vielleicht merkt).

holger schrieb:
> Alter ich krieg ne Krise wenn ich sowas lese.
> Klatsch dir ne UART Verbindung an deine Schaltung
> und beam die Daten so rüber.

Du brauchst ja nicht gleich die Krise zu kriegen, der Thread heist nicht 
umsonst "...für Anfänger".

Genau wie du es schreibst funktioniert die ganze Geschichte zur Zeit ja 
schon... allerdings wäre es praktisch verschiedene Datensätze auf 
SD-Karten in der Hosentasche zu haben die man Zuhause vorbereiten kann 
und nur noch umzustecken braucht.

Aber ich werde mich jetzt nach einer anderen Lösung umsehen! (Evtl. 
direkt mehrere verschiedene Datensätze auf den Controller schieben die 
dann per DIP-Schalter ausgewählt werden können... oder einen kleinen 
"USART-Programmer")


Trotzdem herzlichen Dank an alle Schreiber!

Gruß,
Philipp
Gast #3156228
...werden in dem zusammenhang oft:
* Roland Riegel's FAT-Lib
* Petit-File System von Elm Chan

Beide schon gehabt.
Bei Elm Chan musst Du evtl. noch den HAL selber schreiben.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.