C++ auf Embedded Features

OP #6598462
Lesenswert?

Moin :),

ich habe eine C++17 Bibliothek geschrieben, die idealerweise auch im 
Embedded-Umfeld nutzbar sein soll.

Die Vermutung liegt nahe, dass nicht alle C++ Features per se auf 
Embedded Plattformen verfügbar sind.

Ich nutze u.a.
- std::string
- std::ostringstream
- Exceptions (sind optional bzw. deaktivierbar)

Mir steht aktuell keine C++ Toolchain für Embedded zur Verfügung und 
daher wollte ich euch fragen, ob eure Toolchain die o.g. Features 
unterstützt.

Da diese intern ja irgendwie dynamisch Speicher verwalten und nicht jede 
Plattform einen Heap hat habe ich das ungute Gefühl, dass meine Lib für 
Embedded nicht nutzbar ist bzw. umfangreiche Anpassungen nötig sind um 
das zu ändern.
OP #6598481
Lesenswert?

Slippin J. schrieb:
> Ich habe zwei Embedded-Systeme. Auf einem wäre sie nutzbar, auf dem
> anderen nicht. ;-)

Magst du mir auch erzählen um welche Systeme es sich handelt und welche 
Toolchain (gcc?) du nutzt?

Arduino Fanboy D. schrieb:
> Wenn du von 32 Bit Maschinchen sprichst, stehen dir sowohl string, als
> auch die iostream Geschichte zur Verfügung ....
>
> Bei den 8Bit, z.B. AVR, kannste das erstmal knicken.
> Die ganze LibC++ ist nicht dabei.

Damit kann ich leben.  Wenn die ARMs (Cortex M0 ... Cortex A) 
unterstützt werden ist das für mich ausreichend.
#6598491
Lesenswert?

Danish B. schrieb:
> Slippin J. schrieb:
>> Ich habe zwei Embedded-Systeme. Auf einem wäre sie nutzbar, auf dem
>> anderen nicht. ;-)
>
> Magst du mir auch erzählen um welche Systeme es sich handelt und welche
> Toolchain (gcc?) du nutzt?

Das eine ist ein ARM mit Linux drauf (gcc-Toolchain). Darauf 
funktioniert deine Lib.
Das ist andere ist ein STM32 mit deaktivierter dynamischer 
Speicherverwaltung. Darauf funktioniert deine Lib nicht.
Beide sind 32 Bit Systeme.
(Firma: Torrox.de) #6598663
Lesenswert?

Danish B. schrieb:
> Moin :),

Moin, Moin,

> Die Vermutung liegt nahe, dass nicht alle C++ Features per se auf
> Embedded Plattformen verfügbar sind.

Dynamische Speicherverwaltung würde ich in der Regel versuchen, zu 
vermeiden. Kannst Du das nicht anders lösen (String-Typen mit fester 
Länge z.B.)?

Exceptions haben im Embedded Bereich wenig Verwendung. Die benötigten 
Ressourcen stehen in keinen Verhältnis zum Nutzen. Im Embedded Bereich 
hast Du halt selten wirkliche Fehler (die allermeisten Fehlersituationen 
sind bekannt und müssen eh irgend wie bearbeitet werden; der Rest sind 
Hardwarefehler ;-).

> Mir steht aktuell keine C++ Toolchain für Embedded zur Verfügung und
> daher wollte ich euch fragen, ob eure Toolchain die o.g. Features
> unterstützt.

Der gcc kann das sicherlich. Für beide features braucht es eigentlich 
keine besondere Hardware-Unterstützung.

schöne Grüße,
Torsten
Gast #6598712
Lesenswert?

Torsten R. schrieb:
> Im Embedded Bereich
> hast Du halt selten wirkliche Fehler (die allermeisten Fehlersituationen
> sind bekannt und müssen eh irgend wie bearbeitet werden; der Rest sind
> Hardwarefehler ;-).

Wo ist da der Unterschied zu einer Anwendung auf dem PC? Wenn die 
Exception nicht behandelt wird und der Anwender die Exception zu sehen 
bekommt, hat der Entwickler in den meisten Fällen etwas falsch gemacht.
Gast #6598758
Lesenswert?

mh schrieb:
> Wenn die
> Exception nicht behandelt wird und der Anwender die Exception zu sehen
> bekommt, hat der Entwickler in den meisten Fällen etwas falsch gemacht

Typische Exceptions sind doch, dass Speicherplatz oder eine Datei fehlt. 
Alternativ ein Eingabegerät (Sensor) oder ein Ausgabegerät (Aktor) 
fehlt. Und dann steht das ganze, bis der Benutzer das behebt. Im 
Embedded ist das keine Option.
(Firma: Torrox.de) #6599038
Lesenswert?

mh schrieb:

> Wo ist da der Unterschied zu einer Anwendung auf dem PC? Wenn die
> Exception nicht behandelt wird und der Anwender die Exception zu sehen
> bekommt, hat der Entwickler in den meisten Fällen etwas falsch gemacht.

Der Unterschied liegt meistens in der Komplexität der Applikation. Wenn 
ein Großteil des Codes aus Error-Propagation besteht und / oder Fehler 
nicht lokal handhabbar sind, dann sind Exceptions ein schönes Mittel, 
den Code schlanker zu bekommen.

Fehler kann ich sowohl mit Exceptions, als auch ohne Exceptions 
ignorieren, nicht behandeln etc.
Gast #6599229
Lesenswert?

> Da diese intern ja irgendwie dynamisch Speicher verwalten und nicht jede
> Plattform einen Heap hat habe ich das ungute Gefühl

Geh mal davon aus das du in der Regel keinen Heap haben wirst.

Wieso? Du muesstest dann fest einen Teil des Speicher reservieren
der irgendwie vom Heap genutzt wird. Da ist es dann wesentlich
speichereffizienter wenn man Variablen feste Groessen zuweisst.

Ausser man hat ein komplexes Multitastkingsystem wo unterschiedliche
Tasks nicht immer Speicher brauchen. Dann koennte man die Hoffnung haben
so den Speicher mehrfach nutzen zu koennen.
Allerdings was macht dann ein System wenn der Speicher mal nicht 
verfuegbar
ist? Auf Festplatte auslagern? Ein Fenster aufmachen? Oder doch eher
eine Maschine verschrotten?

Olaf

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren