Forum: Mikrocontroller und Digitale Elektronik Dynamisches Array


von Student 08 (Gast)


Lesenswert?

Hallo ich beschäftige mich gerade mit dem 28035 Dsp von TI.Ich soll nun 
eine Routine schreiben welche CAN Nachrichten empfängt und in einem 
Array speichert.Eine Nachricht kann aus mehreren Teilen bestehen.Aus 
diesem Grund kann ich die Grösse meines Arrays nicht vorher 
festlegen.Kann mir irgend Jemand einen Tipp geben wie ich dies 
realisieren kann?
Besten Dank schon mal.

von Manuel (Gast)


Lesenswert?

mit Zeigern? Ist aber nicht so trivial...

von Karl H. (kbuchegg)


Lesenswert?

Student 08 schrieb:
> Hallo ich beschäftige mich gerade mit dem 28035 Dsp von TI.

Schön.
Welche Programmiersprache?
Ich nehme mal C an.

> festlegen.Kann mir irgend Jemand einen Tipp geben wie ich dies
> realisieren kann?

Indem du in die nächste Buchhandlung gehst und dir ein C-Buch kaufst?
Im Ernst. Ich sag das nicht, weil ich dich ärgern will. Aber solche 
Dinge, und noch viele, viele mehr, stehen in jedem C Buch drinnen.

Wenn du weiterhin programmieren willst, wirst du um den Ankauf von 
Literatur nicht umhinkommen (das gilt wieder für alle 
Programmiersprachen).

von Olaf (Gast)


Lesenswert?

Dann muesstest du das das Array zur Laufzeit anlegen indem
du dir mit malloc Speicher vom Heap besorgt. Das sind aber
eigentlich C Grundlagen die in jedem Buch stehen duerften.

Allerdings frage dich mal warum man das macht und was dein
Prozessor machen soll wenn er Speicher anfordert und keiner
da ist. Swappt er dann auf eine SD-Karte? Wird ein kleiner
Motor eingeschaltet der eine rote Fahne schwenkt? :-)

Es ist bei Microcontrollern IMHO guenstiger wenn man sich
vorher klarmacht wie gross ein Array maximal werden kann
und das statisch allokiert. Schliesslich musst du dir
deinen Speicher ja nicht mit anderen Programmen teilen
und das vermeidet spaeter VIEL Stress.

Olaf

von Arne (Gast)


Lesenswert?

Das Array kann ja nicht beliebig groß werden (wg. endlicher Speicher). 
Wie wäre es, wenn Du einen Ringpuffer mit Zeigern auf Speicherbereiche 
anlegst, die dann per malloc allokiert werden? In diese 
malloc-Speicherbereiche kannst Du ja eine eigene Struktur für die 
CAN-Nachrichten legen. Irgendjemand muss ja auch die CAN-Nachrichten 
abarbeiten?
Wobei ich dyn. Speicherallokierung auf einem embedded Target nicht für 
sonderlich knusprig halte! Wir hatten sowas mal mit 1-2MB SRAM gemacht 
und dann einen eigenen Speichermanager geschrieben, der auch sog. 
Handles (gibts m.W. bis MacOS9 auch) anfordert, deren Speichersegment 
dann im SRAM verschiebbar war, um Fragmentierung zu umgehen. Läuft aber 
schlecht bis gar nicht mit preemptiven RTOS zusammen.

von Marko B. (glagnar)


Lesenswert?

Linked List?

von Karl H. (kbuchegg)


Lesenswert?

Marko B. schrieb:
> Linked List?

Hoffentlich aber aus einem statischen Array heraus.
dynamische Allokierung mit malloc möchte man in einem kleinen µC 
eigentlich nicht haben. Dann schon lieber die Pest.

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.