错误:目标CPU不支持ARM模式

4

我正在尝试为各种ARM处理器交叉编译一个包含内联汇编的简单程序。它包含了根据this document是有效的ARM和Thumb-2指令的QSUB汇编指令。

当我构建针对cortex-a8时,这个程序可以成功编译。

但是当我尝试为cortex-m3构建时,我遇到了标题中的编译错误,并且无法找出原因。我尝试使用编译器选项-mthumb强制启用Thumb模式,然后错误变成了"选择的处理器不支持Thumb模式"。这让我有些困惑,因为cortex-m3实际上是支持Thumb模式的。

这是我使用Codesourcery的gcc时的编译选项:

arm-none-linux-gnueabi-gcc helloworld.c -o a.out -lm -mthumb -mcpu=cortex-m3

3
试试这个方法,有时gcc在选项顺序方面可能会挑剔,尝试先设置CPU类型再设置Thumb模式。(-mcpu=cortex-m3 -mthumb)或许可以把它们都放在helloworld.c之前。 - Joachim Isaksson
1
thumb(不是thumb2)在ARM系列中最具可移植性。我找不到来自ARM的具体列表,但似乎cortex-m4是ARMv7E-M,而cortex-m3是ARMv7-M。查看当前的ARMv7-M ARM,它显示QSUB是ARMv7E-M特定的,而不是所有ARMv7核心。 (旧的armv7-m arm将QSUB显示为简单的ARMv7-M指令,非常令人困惑)。请注意,Cortex-m0和-m1基于armv6,并且具有非常有限的thumb2指令集... - old_timer
2个回答

4

4

谢谢,我也独立找到了这个。我想我得另寻他法来解决我的饱和算术问题。 - Brandon Yates
2
从链接页面中@BrandonYates所说:“对于ARMv7-M架构,它们仅在ARMv7E-M实现中可用”。ARMv7E-M在Cortex-M4中实现(M3只是ARMv7-M)。也许可以查看一下CMSIS-DSP库是否满足您的需求;它支持M3和M4。 - Igor Skochinsky

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接