0

我目前正在尝试将为 IAR 编译器编写的代码移植到 GCC,并且遇到了涉及 Micrium 的 uC/OS - III RTOS 的错误。

错误:

undefined reference to `CPU_SR_Save'

这个错误最终导致我在cpu.h调用 CPU_SR_Save 的 uC/OS-III 代码中找到这一行:

#define  CPU_INT_DIS()         do { cpu_sr = CPU_SR_Save(); } while (0) /* Save    CPU status word & disable interrupts.*/

然后...

CPU_SR      CPU_SR_Save      (void);

CPU_SR_Save 位于cpu_a.s同一目录中的程序集文件中:

.thumb_func
CPU_SR_Save:
    MRS     R0, PRIMASK                     @ Set prio int mask to mask all (except faults)
    CPSID   I
    BX      LR

在文件中更进一步......

.global  CPU_SR_Save

我很确定编译器/链接器不知道这个程序集文件存在,我正在努力寻找一种方法将它集成到构建的其余部分中。我已经在互联网上查看了所有内容,但到目前为止还没有找到任何有效的方法。我对这些东西还很陌生,所以我可能会错误地思考事情。

有人对我如何让我的程序看到这个程序集文件有任何建议吗?

以下是我迄今为止尝试过的所有事情:

  • 添加extern到行CPU_SR CPU_SR_Save (void);
  • 将文件扩展名从更改.s.S
  • 添加-x assembler-with-cpp "fullPath\cpu_a.s"到编译器选项
  • 将 Visual Studio 项目中的 Item Type 更改为Microsoft Macro Assembler
  • 其他我认为不值得一提的

我正在使用Visual StudioVisualGDB,这里是给我这个错误的代码的链接:https ://github.com/lhr-solar/uCOS-III-STM32F4/tree/master/uC-CPU/ARM -Cortex-M4/GNU

4

0 回答 0