Я пытаюсь выполнить cross = скомпилировать простую программу с встроенной сборкой для различных ARM-процессоров. Он содержит инструкцию по сборке QSUB, которая согласно this document является действительной инструкцией ARM и Thumb-2.Ошибка: Целевой ЦП не поддерживает режим ARM
Это компилируется для меня при строительстве коры головного мозга a8.
Я получаю ошибку компиляции в названии, когда я пытаюсь построить для cortex-m3 и не могу понять, почему. Я попытался установить режим большого пальца с помощью переключателя компилятора -mthumb, а затем ошибка изменилась на «выбранный процессор не поддерживает режим большого пальца». Я немного смущен, потому что cortex-m3 действительно поддерживает режим большого пальца.
Вот опции компиляции я использую с GCC CodeSourcery в:
arm-none-linux-gnueabi-gcc helloworld.c -o a.out -lm -mthumb -mcpu=cortex-m3
Просто что-то попробовать, иногда gcc может быть придирчивым к порядку опций, попробуйте установить тип CPU _before_ в режиме большого пальца. ('-mcpu = cortex-m3 -mthumb') Возможно, они перемещаются до того, как даже helloworld.c –
большой палец (не thumb2) является наиболее переносимым по всему плечу. Я не могу найти конкретный список из руки, но кажется, что корекс-m4 является ARMv7E-M, а cortex-m3 - ARMv7-M. глядя на текущий ARMv7-M ARM, он показывает, что QSUB является ARMv7E-M специфичным не для всех ядер ARMv7. (более ранняя рука armv7-m показала QSUB как просто инструкцию ARMv7-M, очень запутанную). Обратите внимание, что Cortex-m0 и -m1 основаны на armv6 и имеют очень ограниченный набор инструкций thumb2 ... –