2016-03-23 19 views
0

Laut Dokumentation unterstützt boost :: context ARM-Systeme mit GNU/Linux OS. Ich frage mich nur - ist es möglich, es auch auf Cortex-M-Mikrocontrollern mit Bare-Metal (ohne Betriebssystem) zu verwenden, oder ist dies ein zusätzlicher Port, der geschrieben werden sollte?Boost :: Kontext auf ARM Cortex-M?

+3

Der einfachste Weg, um Sie über die Beantwortung der Frage wäre es zu kompilieren - Ihre Werkzeugkette werden Sie schnell feststellen, ob es fehlen Abhängigkeiten, aber mir scheint, dass die Funktionalität nicht vom Betriebssystem abhängig ist und mit dem Standard setjmp/longjmp implementiert werden kann. Ein Wort der Warnung, als ein Kollege von mir versuchte, Boost-Bibliotheken (nicht speziell "Kontext") in ein Cortex-M-Bare-Metal-Projekt einzubauen, war er erstaunt über den resultierenden Code Bloat, den er dem ARM-Compiler zuschrieb anstatt Boost selbst; Ich bin weniger überzeugt. – Clifford

+0

Das Problem ist, dass, um Cross-Compile-Boost mit beliebiger Toolchain zu lernen, man Interna von Boost-Build-System lernen muss, also bevor ich mich mit dieser Aufgabe beschäftigte, entschied ich mich zu finden, ob das schon jemand getan hat. –

+0

Mit Blick auf die [Bibliothek Anforderungen] (http://www.boost.org/doc/libs/1_60_0/libs/context/doc/html/context/requirements.html) scheint es, dass "Kontext" Assembler-Code enthält, es sei denn Es unterstützt ausdrücklich den ARM Thumb-2-Befehlssatz, Sie werden in keinem Fall Out-of-the-Box-Builds ausführen. Das ist, denke ich, worauf sich die knappe Antwort von @xlrg bezieht. – Clifford

Antwort

0

boost.context nicht Cortex-M unterstützt - nur Cortex-A + ELF/MACH-O/PE

+0

Was genau ist die Architekturbeschränkung, die dazu führt, dass sie nicht unterstützt wird? Können Sie eine Referenz für diese Behauptung angeben? Ich kann nicht sehen, welchen Unterschied das Objektdateiformat macht, und ELF ist ein allgemein genug Objektdateiformat in eingebetteten Systemen. – Clifford

+0

Ich denke, ich habe meine eigene Frage beantwortet; Die [Bibliotheksanforderungen] (http://www.boost.org/doc/libs/1_60_0/libs/context/doc/html/context/requirements.html) geben an, dass die Bibliothek Assemblercode enthält. Das würde die Portabilität stark einschränken. – Clifford