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


von Vinculum (Gast)


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

von Karl H. (kbuchegg)


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.

von Vinculum (Gast)


Lesenswert?

>oder musst sie auch von einem PC aus auslesen können

ich will sie ja am PC beschreiben können

von Olaf (Gast)


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

von sebastians (Gast)


Lesenswert?


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
Noch kein Account? Hier anmelden.