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
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.
>oder musst sie auch von einem PC aus auslesen können
ich will sie ja am PC beschreiben können
> 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
Auf dem PC kannst du sie auch ohne FAT beschreiben Beitrag "Re: kleinste SPI-SD+Fat Lib für AVR" Beitrag "Re: kleinste SPI-SD+Fat Lib für AVR"
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.