-
-
Erfahrener Benutzer
Roboter Genie
Hi Duesentrieb,
ich habe das so gemacht:
Mit dem Editor eine Datei öffnen, Name z.B. Log01.txt, ist für den ATMEGA aber egal.
In die erste Zeile einen Text einfügen, der im normalen Betrieb nicht auftauchen kann. Ich habe da 510 Zeichen reingeschrieben
*12345678901234567890...123456789
Am Ende der Zeile ein Return fügt dann noch 2 Zeichen ein, nämlich <CR> und <LF>. Eine Zeile enthält dann 512 Zeichen, ist also genau einen Sektor lang.
Die Zeile habe ich dann im Editor kopiert bis die Datei 50MB groß war, also 100.000 Zeilen hatte.
Die SD Karte habe ich formatiert, sodass nichts auf der Karte steht.
Dann habe ich die Datei 20 mal auf die SD kopiert und jedesmal die Zahl im Namen erhöht. Die Dateien hießen also Log01.txt, Log02.txt, ..., Log20.txt. Insgesamt sind dies knapp 1GB.
Auf der SD stehen die Dateien dann direkt hintereinander, ohne Zwischenraum.
Wenn du nun immer sektorweise schreibst, füllst du eine Datei nach der anderen. Auf dem PC kannst du die Dateien weiterhin mit dem Editor öffnen, solange du immer 512 Zeichen pro Sektor hast und am End immer ein <CR> und ein <LF> steht.
Nachdem ich alles geschrieben hatte, habe ich die SD mit dem ATMEGA gelesen, und zwar die Sektoren von 0 an.
Wenn dann das erste Mal die Zeichenfolge *1234567890... gelesen wurde, hast du den Anfang der ersten Datei gefunden. Bei meiner 2GB Karte ist das der Sektor 768.
Durch den Trick mit der festen Zeichefolge brauche ich die aktuelle Sektornummer nicht zu speichern, sondern kann sie sehr schnell finden.
Du kannst dazu die "Binäre Suche" verwenden, da die Sektoren praktisch in zwei Bereiche geteilt sind: Die, die schon beschrieben wurden, und die, die noch frei sind (bei denen ist "*" das erste zeichen im Sektor).
Für meine 2.000.000 Sektoren muss ich dazu beim Programmstart nur 21 Sektoren lesen und habe den zuletzt geschriebenen Sektor gefunden.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen