Forum: Compiler & IDEs tinyXML2 auf Microcontroller mit embOS und emfile


von Jochen (Gast)


Lesenswert?

Hallo zusammen!

Hat jemand schon mal tinyXML2 auf ein nicht Windows/Linux System 
portiert?
Auf dem Targetsystem läuft embOS und emfile von Segger.
Ich "sehe" hier keine saubere Portierungsschicht. Alles im Code manuell 
zu ändern ist nicht nur sehr aufwändig, sondern verwehrt einem auch die 
Möglichkeit ein Update durchzuführen ...

Bei mir geht es um essentielle Funktionen zur dynamischen 
Speicherallokierung und Verwendung, sowie auch dem Filesystemzugriff.

Oder übersehe ich hier was?

Danke & Grüße
Jochen

von abcde (Gast)


Lesenswert?

Das Ding nutzt C++. Auf Microcontrollern kann man das problemlos nutzen 
- aber Menge gilt es dabei zu beachten (viele  "schöne" C++ Befehle 
setzen auf gruselige Allokatoren oder fressen eine Menge Flash weg).

Wuerde mir einen anderen Stack suchen.

von Christopher J. (christopher_j23)


Lesenswert?

https://github.com/leethomason/tinyxml2 sagt:
> It does not rely on exceptions, RTTI, or the STL.

Das sind schonmal gute Vorraussetzungen für einen erfolgreichen Port.

Ich finde die Schnittstelle jetzt nicht so schwer zu verstehen. Im 
einfachsten Fall übergibst du einen Text und lässt den parsen:
https://github.com/leethomason/tinyxml2/blob/master/xmltest.cpp#L145

Wenn du es direkt aus einer Datei parsen willst, dann würde ich mal 
einen Blick auf die Methoden
1
 XMLError LoadFile( FILE* );
2
3
// und/oder
4
5
 XMLError LoadFile( const char* filename );

werfen. Die musst du natürlich entsprechend anpassen. Generell finde ich 
XML (nicht nur auf uC) nicht so prickelnd. "XML combines the readability 
of binary with the efficiency of text data" ist leider viel zu wahr. bei 
JSON gibt es einige Parser, die nicht nur rasend schnell, sondern auch 
sehr kompakt sind und denen einer Verwendung in kleinsten 
Embedded-Systemen absolut nichts im Weg steht, z.B. cJSON: 
https://github.com/DaveGamble/cJSON

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

Hi

Bau das Ding Mal für Linux und lass Mal einen profiler drüberlaufen. I'm 
Mal einen Eindruck vom resourcenverbrauch zu bekommen. Kann sein das ein 
Port danach schon nicht mehr sinnvoll erscheint.

Matthias

von Jochen (Gast)


Lesenswert?

Hallo!

Danke für die Antworten!
Die Frage ist, ob es ein besseres Dateiformat oder Parser gibt.
Ich sehe hier nur keine saubere Portierungsschicht, um tinyXML2 auf mein 
Target zu bringen. Die Frage ist daher, ob das jemand schon gemacht hat 
und wie "wartbar" das Ganze zum Schluss ist.

Danke & Grüße
Jochen

von Dr. Sommer (Gast)


Lesenswert?

Jochen schrieb:
> Die Frage ist, ob es ein besseres Dateiformat oder Parser gibt.

Na, brauchst du wirklich ein Format das Daten rekursiv ablegen kann und 
praktisch beliebige Kombinationen ermöglicht? Reicht vielleicht auch 
eine einfache binäre Serialisierung?

von Vincent H. (vinci)


Lesenswert?

Jochen schrieb:
> Hallo!
>
> Danke für die Antworten!
> Die Frage ist, ob es ein besseres Dateiformat oder Parser gibt.
> Ich sehe hier nur keine saubere Portierungsschicht, um tinyXML2 auf mein
> Target zu bringen. Die Frage ist daher, ob das jemand schon gemacht hat
> und wie "wartbar" das Ganze zum Schluss ist.
>
> Danke & Grüße
> Jochen

BSON oder MessagePack sind deutlich bessere Kandidaten für kleine 
Prozessoren mit wenig Speicher.

von Til S. (Firma: SEGGER) (til_s)


Lesenswert?

Jochen schrieb:
> Hat jemand schon mal tinyXML2 auf ein nicht Windows/Linux System
> portiert?

Was ist denn genau der Anwendungsfall? Muss es XML sein? Vielleicht 
können wir ja auch etwas neues bauen oder zumindest behilflich sein.

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
Noch kein Account? Hier anmelden.