TI中文支持网
TI专业的中文技术问题搜集分享网站

MCU-PLUS-SDK-AM243X: 用__get_PSP获取PSP的值,编译不通过

Part Number:MCU-PLUS-SDK-AM243X

代码跑在R5的核中,需要获取PSP的值,所以#include "cmsis_armclang.h",想用里面的__get_PSP函数来获取PSP的值,但是编译不通过,会发生如图的错误, ,该怎么解决?

Gary Lu:

加CMSIS头文件了吗

,

? ?:

试过加入#include "cmsis_armclang.h",但是还是不行

,

? ?:

 这么多头文件应该加哪个?

,

Gary Lu:

core_cm4.h和core_cm7.h都试试加上

,

Gary Lu:

不是这个

? ? 说:"cmsis_armclang.h"

,

? ?:

我是R5的核,不应该用M4或M7的,而且试了一下,会报其他错

,

Gary Lu:

先检查一下编译器是否支持CMSIS内联汇编指令。

如果编译器不支持,试试用汇编语言实现。

或者

? ? 说:我是R5的核,不应该用M4或M7的,而且试了一下,会报其他错

再试试其他的

,

? ?:

编译器是能支持内联汇编指令的,如下图中, __asm volatile ("MRS R0, cpsr") ; __asm volatile ("MRS R0, spsr") ;这两句话都能编译通过,唯独 __asm volatile ("MRS R0,  psp") ;这句话不行。我用汇编也试过,同样的效果,获取cpsr和spsr寄存器是可以的,但是psp寄存器不行,是不是psp指针根本不支持?

,

Gary Lu:

或者你尝试一下用不同的语法形式吧,下面是C的

register uint32_t psp_value;
__asm volatile("MRS %0, psp" : "=r"(psp_value));

用了寄存器约束 `"=r"`, 通过 `: "=r"(psp_value)` 将 `psp_value` 变量与寄存器关联起来。

,

? ?:

试过了,还是不行,如下图,还有另一个问题中提到的获取R14_USER,用汇编”mrs    r0, R14_USER“,也编译不通过,所以针对获取psp和R14_USER等这些特殊寄存器有没有明确的方法?

,

Gary Lu:

已在您另外发布的帖子下回复,请查看:e2echina.ti.com/…/mcu-plus-sdk-am243x-r5-pc

赞(0)
未经允许不得转载:TI中文支持网 » MCU-PLUS-SDK-AM243X: 用__get_PSP获取PSP的值,编译不通过
分享到: 更多 (0)