Forum: Mikrocontroller und Digitale Elektronik XML auf Arm7 (Phillips 2292)


von Dominik F. (buzzpuppet)


Lesenswert?

Hallo Zusammen,
hat jemand von euch Erfahrung mit dem Einsatz von XML auf einem ARM7?
Nach einigem suchen hab ich ein paar Parser gefunden, die darauf
vielleicht laufen könnten (expat,xmlparser,libxml2,tinyxml),
aber wie sieht es mit der Geschwindigkeit aus, wäre der wohl schnell
genug um ein per XML abgelegtes Menü auszulesen, und auch die
dazugehörigen Werte?

Und wie sieht das mit einer validierung aus, vor allem Geschwindigkeit
bei einer Schema validierung, vielleicht per libxml2?

Mir würde schon ein Wink in die Richtung reichen ob das möglich wäre,
bzw komplett Aussichtslos ;)

Danke schonmal für die Hilfe :)

Grüße
Buzzi

von jmoney (Gast)


Lesenswert?

Ich hab ehrlich gesagt mit xml noch nichts gemacht aber ich denke mal,
dass ein Arm7 damit auf keinen Fall überfordert sein sollte. Ein Menü
besteht ja aus einer recht kleinen, selbst für den Menschen
überschaubaren Anzahl von Punkten mit gewissen Eigenschaften. Sowas
sollte in keinem Format ein Problem darstellen.
Ich weiß natürlich nicht, wie die genannten XML-Implementationen sowas
auflösen aber ich denke nicht, dass es ein Problem wäre.

von Dominik F. (buzzpuppet)


Lesenswert?

Das XML an sich nichts aufregendes ist ist mir ja schon klar.
Der ARM hat ja aber nur 16kb RAM, und da ist die Frage ob das genug ist
für den Parser und die DOM Bäume die darin aufgebaut werden (falls der
Parser denn DOM macht).
Im Moment sieht es nach 4 XML Dokumenten aus, wobei nur 2 davon
umfangreicher sein werden.
Auch sollte der µc ja nicht nur mit XML parsen beschäftigt sein,
sondern nebenbei noch andere Aufgaben erledigen.

Grüße
Buzzi

von Martin Thomas (Gast)


Lesenswert?

Ein sogenannter SAX-Parser sollte mit relativ wenig RAM auskommen.
http://de.wikipedia.org/wiki/Simple_API_for_XML

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

XML? DOM-Bäume? Schema-Validierung? Auf einem Mikrocontroller mit 16 kB
RAM? Das ist ja absurd. Wieso muss es denn XML sein, das von allen
Dateiformaten dieser Welt am schlechtesten für einen Mikrocontroller
geeignete? CSV oder YAML ist besser menschenlesbar, braucht weniger
Speicher, und lässt sich mit ein paar Zeilen C interpretieren.

von Dominik F. (buzzpuppet)


Lesenswert?

@Martin,
das hatte ich mir auch schon gedacht, allerdings unterstützen die
meisten Parser (die in C geschrieben sind) nur DOM...

@Andreas:
endlich springt mal einer auf meine provokative Fragestellung an ;)
Die Sache ist; es geht um eine Machbarkeitsstudie, dabei sollen Daten
aus einem Softwaresystem gewonnen werden (als XML) und auf den
Mikrocontroller gebracht werden, und dort verarbeitet (angezeigt,
verändert,...) werden.
Schön wäre es natürlich auch die Sachen per XSLT z.B. zu html zu
transformieren und auf einem embedded webserver zur Verfügung zu
stellen.
Da es so viele Möglichkeiten gibt muss eben ausgelotet werden, was
davon realistisch ist.
Und so wie es im Moment aussieht könnte ich schon glücklich sein wenn
überhaupt _irgendein Parser auf dem Ding läuft.

Das wird dann wohl die nächste zu tuende Sache werden, mal sehen wann
ich dazu komme :)

Grüße
Buzzi

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich würde mir gründlich überlegen ob es nicht prinzipiell möglich ist
dem "Softwaresystem" ein anderes Datenformat beizubringen. Wenn ja,
dann würde ich die µC-seitige Lösung sofort vergessen, weil sie mit
einem Controller dieser Größe unrealistisch ist. Wenn du auf XML
bestehst, nimm gleich was größeres mit Speicher im MB-Bereich, z.B. das
Fox-Board.

Zu XSLT: ich habe keine Ahnung wofür diese Sprache sinnvoll nutzbar ist
- zur Transformation von XML ist sie es meiner Erfahrung nach nicht.
Alleine angesichts der Tatsache dass XSLT selber gültiges XML ist
sollten die Warnlichter mit der Aufschrift "overengineered" und
"praxisfern" zu blinken anfangen. Bei mir haben sie das damals leider
erst getan als ich es schon gelernt hatte.

von Werner B. (Gast)


Lesenswert?

@Andreas Schwarz,

verfalle bitte nicht in den gleichen Fehler wie viele andere.
Nur weil man das Konzept hinter einer Programmiersprache nicht
verstanden hat muss man sie nicht gleich niedermachen.
Das Hauptproblem bei XSLT ist, dass die meisten Leute nicht verstehen
wie man diese beschreibende Sprache einsetzt. Man kann sich eben nur
schwer vom prozeduralen Denken lösen. Wenn man das einmal geschafft hat
kann man in XSLT in wenigen (ok zugegeben - XSLT ist chatty, also doch
mehreren) Zeilen wahre Wunder mit strukturierten Daten vollbringen. Ich
habe vorbedacht nicht "mit XML Dokumenten", sondern "strukturierten
Daten" geschrieben, denn XSLT ist nicht auf XML beschränkt. Eine
seiner Stärken. Zudem arbeiten moderne XSLT Prozessoren nicht mehr
unbedingt mit DOM-Baeumen, viele setzen  inzwischen auf das
eventorientierte SAX.

Abgesehen davon...
Die LPC22xx haben ein externes Speicherinterface und können damit
ausreichend RAM/ROM/FLASH verwalten. Das sollte sogar für einen XML
Parser reichen. Vom Speed her ... sogar Linux läuft auf den LPC22xx in
brauchbarer Geschwindigkeit. Aber XML, geschweige denn XSLT, ist für
eine Menüsteuerung nun wirklich nicht nötig (aber zugegebenermaßen -
Elegant).

von Andreas S. (andreas) (Admin) Benutzerseite


Lesenswert?

Ich habe das Konzept von XSLT verstanden - das Konzept ist ja auch
ziemlich offensichtlich. Es mag formal "elegant" sein, und vielleicht
gibt es Anwendungsfälle wo es sinvoll einsetzabr ist, um XML in (X)HTML
umzuwandeln ist es (nicht nur meiner Erfahrung nach) in der Praxis aber
schlicht und einfach unbrauchbar, das selbe Problem lässt sich in einer
Scriptsprache mit XML-Unterstützung mit sehr viel weniger Zeit- und
Tippaufwand lösen.

von Werner B. (Gast)


Lesenswert?

Da steht das Stichwort:  XML in (X)HTML

Da muss ich dir recht geben; dafür eignet es sich definitiv "nur sehr
bedingt".

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.