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.
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).
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.