2016-03-23 3 views
0

Согласно документации boost :: context поддерживает системы ARM с ОС GNU/Linux. Просто интересно - можно ли использовать его на голой металлической (без каких-либо ОС) Cortex-M микроконтроллерах, или это дополнительный порт, который должен быть написан?Boost :: context на ARM Cortex-M?

+3

Самый простой способ ответить вам вопрос будет скомпилировать - ваш Набор инструментов скоро скажет вам, если есть отсутствуют зависимости, но мне кажется, что предоставленная функциональность не зависит от ОС и может быть реализована со стандартным setjmp/longjmp. Однако слово предупреждения, когда мой коллега попытался включить в библиотеку более мощные библиотеки (а не конкретно «контекст») в проект с открытым металсом Cortex-M, он был поражен полученным кодовым раздуванием, которое он решил обвинить в компиляторе ARM а не Boost; Я менее убежден. – Clifford

+0

Проблема в том, что для того, чтобы перекрестно скомпилировать boost с помощью произвольной инструментальной цепочки, нужно научиться внутренним системам форсированной сборки, поэтому, прежде чем вникать в эту задачу, я решил найти, если кто-то уже это сделал. –

+0

Глядя на [требования к библиотеке] (http://www.boost.org/doc/libs/1_60_0/libs/context/doc/html/context/requirements.html), кажется, что «контекст» включает код ассемблера, если только он явно поддерживает набор команд ARM Thumb-2, в любом случае вы не будете работать вне сборки. Это я догадываюсь, о чем говорит довольно краткий ответ @ xlrg. – Clifford

ответ

0

boost.context не поддерживает Cortex-M - только Cortex-A + ELF/MACH-O/PE

+0

Что конкретно связано с архитектурным ограничением, которое не поддерживает его? Можете ли вы привести ссылку на это утверждение? Я не вижу, какая разница в формате объектного файла, а ELF - достаточно распространенный формат объектного файла во встроенных системах. – Clifford

+0

Думаю, я ответил на свой вопрос; [требования к библиотеке] (http://www.boost.org/doc/libs/1_60_0/libs/context/doc/html/context/requirements.html) указывают, что библиотека содержит код ассемблера. Это серьезно ограничило бы переносимость. – Clifford