Stm32 错误:寄存器';sp&x27;不适用于此目标上的全局寄存器变量

Stm32 错误:寄存器';sp&x27;不适用于此目标上的全局寄存器变量,stm32,cpputest,Stm32,Cpputest,我正在玩一个STM32µC项目。我在Mac OSX系统上使用workbench和CubeMX。我的项目本身很好,一切都会相应地编译,并在设备上按预期运行 为了进一步学习,我想使用该框架实现单元测试。我已经设置好了一切,得到了我的测试目录和一个makefile来配置MakefileWorker变量 但是,在执行Makefile时,我不断得到错误: error: register 'sp' unsuitable for global register variables on this tar

我正在玩一个STM32µC项目。我在Mac OSX系统上使用workbench和CubeMX。我的项目本身很好,一切都会相应地编译,并在设备上按预期运行

为了进一步学习,我想使用该框架实现单元测试。我已经设置好了一切,得到了我的测试目录和一个makefile来配置MakefileWorker变量

但是,在执行Makefile时,我不断得到错误:

error: 
  register 'sp' unsuitable for global register variables on this target
此错误源于syscalls.c文件(由CubeMX生成的文件)。导致错误的行是:

register char * stack_ptr asm("sp");
在做了研究之后,似乎没有简单的解决方法。源代码由Cube生成,在使用sw4stm32工具链(使用mcu gcc编译器)编译时运行良好。 然而,CppUTest工具链使用的是clang,它无法处理全局寄存器变量(正如错误所说)

我的问题是:

在OSx系统上为sw4stm32项目设置CppUTest时,你们中有没有人有过相同的错误或更多的经验?有人知道如何解决这个问题吗

如果您需要我提供更多信息/代码片段,我很乐意与您分享

非常感谢大家!任何帮助都将不胜感激:-)

干杯,
托比

你能坚持像asm(“mov sp,%0”:“=r”(stack_ptr))这样的东西吗?这(真的)很难看,但可能有用。或者甚至有一个(Inlineable)GetStackPtr()包含此代码?我在编译CubeMX生成的代码时遇到了相同的错误。它在Atolic Studio上运行良好,但当我在Sourcetrail中使用它时,出现了错误。您是否可以粘贴类似于
asm(“mov sp,%0”:“=r”(stack_ptr))?这(真的)很难看,但可能有用。或者甚至有一个(Inlineable)GetStackPtr()包含此代码?我在编译CubeMX生成的代码时遇到了相同的错误。它在Atolic Studio上运行良好,但当我在Sourcetrail中使用它时,会出现错误。