Dynamisches Array

Gast #1630818
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.
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).
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
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.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.