TI的Red Hat mspgcc-430编译错误

TI's Red Hat mspgcc-430 compilation error

所以,我正在尝试编译代码,用 C 语言为 linux SO 中的 msp430fx 编写。我最近重新编译 一个新版本的 mspgcc,因为之前使用的是 4.3 而不是 compatible/stable 扩展模式(20 位 -mlarge)。

我关注了这个site

安装后我 运行 一个简单的(主要的,调用一些随机函数)它编译得很好,但是现在,编译这个大项目我最后遇到了这个错误:

msp430-gcc -o build/MoteISTv5_mspgcc/projects/common/03oos_macpong_prog -mmcu=msp430f5438a -Wall -Wno-main -mlarge -O0 -g -ggdb build/MoteISTv5_mspgcc/projects/common/03oos_macpong/03oos_macpong.o -Lbuild/MoteISTv5_mspgcc/bsp/boards -Lbuild/MoteISTv5_mspgcc/kernel/openos -Lbuild/MoteISTv5_mspgcc/drivers -Lbuild/MoteISTv5_mspgcc/openstack -Lbuild/MoteISTv5_mspgcc/openapps -lopenstack -lopenapps -lkernel -ldrivers -lbsp /opt/msp430-toolchain/lib/gcc/msp430-none-elf/4.9.1/../../../../msp430-none-elf/bin/ld: cannot open linker script file msp430f5438a.ld: No such file or directory collect2: error: ld returned 1 exit status scons: *** [build/MoteISTv5_mspgcc/projects/common/03oos_macpong_prog] Error 1 scons: building terminated because of errors.

由于我对编译器了解不多,所以我需要一些帮助来解决这个问题。有人可以帮忙吗?

提前致谢,

迪奥戈·格拉

编辑: 在这个新版本的 msp430-elf-gcc 中,此函数被命名为 _read_SR() 而不是 __read_status_register()。

=======================/===================== = / =====================

好吧,显然我不得不使用 -L 强制将 .ld 文件的目录放入编译器标志中。

但是现在使用新的 msp430-gcc v4.9.1 他无法识别 __read_status_register 函数,而在 mspgcc-legacy (4.6.3) 中他编译没有问题...

我浏览了一下,显然 bin 库不支持大部分 __"spetial processor funcions"。他们说我们必须使用内联汇编来访问特殊寄存器,这很尴尬。 “他们为什么要取消这种支持?

如果您需要使用内联汇编,这里是 __read_status_register()

的示例
static inline __attribute__((always_inline))
unsigned int __read_status_register( void){
    unsigned int xReturn;
    asm volatile( "MOV  R2, %0"
                : "=r"  (xReturn)); // output parameters
    return xReturn;
}

要了解更多信息,您可以使用 this site,我发现它非常有用。