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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

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.