Forum: Mikrocontroller und Digitale Elektronik Speicherverwaltung auf dem µC


von µC Amateur (Gast)


Lesenswert?

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

von Patrick (Gast)


Lesenswert?

µ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?

von Patrick (Gast)


Lesenswert?

... 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.

von µC Amateur (Gast)


Lesenswert?

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

von Karl H. (kbuchegg)


Lesenswert?

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