Nabend!
Ich bin gerade dabei, einen CanOpen Stack auf einem Atxmega zu implementieren.
Bisher funktioniert auch alles Wundervoll, ich kann SDOs schicken und empfangen, das gleiche gilt für PDOs und PDO Mapping klappt auch schon, selbst die SPS meckert nicht mehr bei der Kommunikation .
Jetzt habe ich momentan das Problem, dass der Stack möglichst Flexibel für verschiedene Anwendungen genutzt werden soll.
Das heißt es müssen alle nötigen Objekte im Speicher vorhanden sein.
Aktuell Lege ich jedes Objekt einzeln fest, in der Art:
Das Problem ist, dass auf die Weise viele eventuell nicht genutzte Objekte den Speicher unnötig füllen.Code:CanObject LedState,Pulswidth,IOReg;
Am besten wäre, wenn immer nur die Objekte erzeugt werden, die die SPS per SDO konfigurieren will (Natürlich mit einigen Ausnahmen).
Also benötige ich eine Möglichkeit, die Objekte dynamisch, zur Laufzeit zu erzeugen.
Würde ich für einen PC Programmieren würde ich zu einer map greifen.
Auf dem Controller halte ich das für zu ineffektiv.
Was ist von der Nutzung von malloc() zu halten?
Dazu habe ich von vielen schlechtes, von einigen aber auch gutes gehört.
Hat jemand schon Erfahrungen mit so etwas gemacht und kann mir weiter helfen?
Oder macht vielleicht ein externer Speicher mehr sinn?
Grüße
Olaf
Lesezeichen