www.mikrocontroller.net

Forum: Compiler & IDEs Single file Datenbank auf SD-Karte mit linearem Zugriff


Autor: Vinculum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

von einem AVR-Prozessor möchte ich Zugriff auf eine "Datenbank" haben, 
die 2^24=16M Felder hat. Jedes Feld soll fixe 16 bytes umfassen, 
insgesamt sollen also 268 MB addressierbar sein. Die ZUgriffszeit ist 
nicht kritisch.

Auf die "Datenbank" wird mit der 24-Bit-Feldadresse zugegriffen, dann 
sollen die 16 bytes aus dem Feld eingelesen werden. Gesucht wird nicht, 
der Zugriff ist linear.

Ich habe mir das so vorgestellt, dass ich eine SD-Karte mit einem 
einzigen File beschreibe, der die 268 MB enthält. Das passiert am PC. 
Der Zugriff erfolgt dann vom AVR auf die SD-Karte sozusagen über die 
Zugriffsadresse= FAT+Fileheader+(Feldadresse*16) (grob gesprochen).

ISt so etwas praktikabel. Bevor ich mich an die praktiche Umsetzung wage 
und mich in den SD-Kartenzugriff etc. pp. vertiefe, wollte ich mal Eure 
Meinung hören.

Danke

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vinculum schrieb:

> Auf die "Datenbank" wird mit der 24-Bit-Feldadresse zugegriffen, dann
> sollen die 16 bytes aus dem Feld eingelesen werden. Gesucht wird nicht,
> der Zugriff ist linear.

Also eigentlich ein Array

> Ich habe mir das so vorgestellt, dass ich eine SD-Karte mit einem
> einzigen File beschreibe, der die 268 MB enthält. Das passiert am PC.
> Der Zugriff erfolgt dann vom AVR auf die SD-Karte sozusagen über die
> Zugriffsadresse= FAT+Fileheader+(Feldadresse*16) (grob gesprochen).

Wozu brauchst du da eine FAT?

(Oder willst du die SD-Karte auch noch für andere Zwecke benutzen, oder 
musst sie auch von einem PC aus auslesen können)

Ich würde die SD-Karte einfach nur als Speichermedium betrachten, 
welches linear adressiert werden kann.

Aus der Zugriffsadresse die 'Sektornummer' und die 'Adresse der Bytes 
innerhalb des Sektors' ausrechnen und zugreifen.

Autor: Vinculum (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>oder musst sie auch von einem PC aus auslesen können

ich will sie ja am PC beschreiben können

Autor: Olaf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Der Zugriff erfolgt dann vom AVR auf die SD-Karte sozusagen über die
> Zugriffsadresse= FAT+Fileheader+(Feldadresse*16) (grob gesprochen).

Grundsaetzlich ist sowas machbar. Allerdings die Berechnung des
ersten Sektors ueber FAT-Groessen und Position ist quatsch weil
das bei jeder Karte oder auch bei derselben Karte wenn sie in
verschiedenen Rechnern formatiert wurde, unterschiedlich ist.

Du musst im ersten Sektor deines Datenfiles eine MagicNumber haben. Die 
suchst du dann in deinem Programm beim starten einmal und adressierst 
dann relativ dazu. Klugerweise reservierst du dir gleich den ganzen 
Sektor
fuer Verwaltungsaufgaben. So kann dein Microcontroller dort auch ein
paar Daten reinschreiben die problemlos im PC gefunden werden.

Das ganze setzt natuerlich voraus das du dein Datenfile am PC nur auf 
eine ganz leere Karte kopierst. Wenn da bereits Daten drauf sind dann 
kann das schiefgehen.

Olaf

Autor: sebastians (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.