我收到以下警告:
-mcpu=cortex-r5 conflicts with -march=armv7-r switch
Run Code Online (Sandbox Code Playgroud)
当我将 -mcpu 设置为 cortex-r4 或 cortex-r4f 时,我没有遇到问题。由于 Cortex R5 是相同的 armv7-r 架构,我假设这是 GCC 工具链中的错误?我目前正在使用 Arm Launchpad 5.4 2016q3 工具。
我也想知道为什么没有 Cortex-r5f 选项,因为浮点单元是可选的。
我猜 -mcpu 选项并没有真正产生很大的不同?
如果有足够声誉的人可以创建一个 Cortex-R 标签,那将会很方便,拜托!
ARM Cortex-M内核文档说,在执行异常条目堆栈框架时.这导致寄存器R0,R1,R2,R3,R12,LR,PC,xPSR被推到当前堆栈上.我的问题是为什么这种方式只推动那些寄存器而不是所有的上下文?例如,如果某些数据位于R5寄存器中,则异常处理程序使用该寄存器时将覆盖该数据.
异常处理程序本身的编译函数会推送一些寄存器(以及所有其他常规函数,因为异常处理函数没有区别),但经过大量调试后我发现事实并非总是如此,因为不同的变体寄存器被推送然后恢复.