Hallo, ich habe den SAM3S EK. Ich speichere die Daten im Moment auf dem SRAM die ich über DMA bekomme hintereinander (also letzte Adresse + Größe = Startadresse für die nächsten Daten usw.). Hier möchte ich jedoch eine flexible Speicherverwaltung implementieren, wo ich später diese Daten einzeln löschen bzw hinzufügen kann. Ich habe eher Erfahrung dinge am Rechner zu programmieren C/C++. Funktionieren Malloc, Alloc, free, realloc usw? Wie würdet ihr es machen? Wie ist es wenn ich eine SD card anschließen möchte? Mfg
µC Amateur schrieb: > Funktionieren Malloc, Alloc, free, realloc usw? Im Prinzip ja. Aber da Dein Mikrocontroller nur 48 kB SRAM hat, ist zu überlegen, inwieweit das sinnvoll ist (Stichwort: Heap-Fragmentierung) bzw. gefährlich werden kann (Soll heißen: Die ganze Chose stürzt ab, hängt sich auf o. ä.). µC Amateur schrieb: > Wie ist es wenn ich eine SD card anschließen möchte? Naja, kommt drauf an, wie es dann "weiter gehen" soll. Wie sollen die Daten gespeichert werden; jeder Datensatz als eigene Datei? Das wahlfreie Löschen einzelner Dateien sollte jedes Dateisystem beherrschen. Generell würde ich festhalten: Eine SD-Karte für Datenmengen im ein- bis zweistelligen kB-Bereich ist ein wenig mit Kanonen auf Spatzen geschossen. µC Amateur schrieb: > Wie würdet ihr es machen? Wie gesagt, kommt drauf an, was mit den Daten geschehen soll. D. h. wie werden die Daten dann weiterverarbeitet? Daraus folgen unverzüglich Fragen wie: Warum müssen einzelne Datensätze gelöscht werden? Wie groß ist der Umfang der Daten maximal?
... und das Wichtigste zum Schluss ;) : Wie sehen die Daten überhaupt aus - sind die einzelnen Pakete immer gleich groß? Und wie groß ist ein solches Datum? Ein paar Möglichkeiten der Umsetzung wären z. B.: Verkettete Listen (d. h. Zeiger auf den nächsten Datensatz speichern), Umkopieren der nachfolgenden Elemente beim wahlfreien Löschen bzw. Einfügen (d. h. Betrachtung der Gesamtmenge der Daten als Array; vmtl. hier das Sinnvollste), Überschreiben "leerer" Pakete mit einem eindeutig als ungültig erkennbaren Wert.
Patrick schrieb: > Aber da Dein Mikrocontroller nur 48 kB SRAM hat, ist zu > überlegen, inwieweit das sinnvoll ist Deshalb die SD Card... Patrick schrieb: > Naja, kommt drauf an, wie es dann "weiter gehen" soll. Wie sollen die > Daten gespeichert werden; jeder Datensatz als eigene Datei? Ja. Es sind schon fertige BMP files... Patrick schrieb: > Eine SD-Karte für Datenmengen im ein- bis > zweistelligen kB-Bereich ist ein wenig mit Kanonen auf Spatzen > geschossen. Patrick schrieb: > Wie groß ist der Umfang der Daten maximal? Es sollen bis zu mehrere GB gespeichert werden... Patrick schrieb: > wie > werden die Daten dann weiterverarbeitet? über die SPI weitergeben... an ein anderes Board zB... Was ich nicht verstehe ist dass wie das Board die SD Card sieht also ich lege einfach an eine entsprechende Adresse die Daten rein und es wird dann zur SD karte weitergeleitet oder wie kann ich das verstehen
µC Amateur schrieb: > Was ich nicht verstehe ist dass wie das Board die SD Card sieht also ich > lege einfach an eine entsprechende Adresse die Daten rein und es wird > dann zur SD karte weitergeleitet oder wie kann ich das verstehen Auf unterster Ebene kann man das durchaus so auffassen. Sinnvollerweise legt man darüber eine Schicht, die ein Dateisystem herstellst, so wie es zb auch auf einem PC existiert. Derartige Lib gibt es fertig. Du behandelst dann deine SD-Karte im Grunde auch nicht anders, als wie wenn du mit einem PC-Programm Fileverarbeitung betreibst. Vorteil: Zum Aufspielen der Daten auf dem PC, steckst du die SD-Karte einfach an den PC an und kopierst die Files drauf.
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.