TI的Red Hat mspgcc-430编译错误

时间:2015-07-27 03:56:51

标签: c linux redhat mspgcc

所以,我正在尝试编译代码,用C语言编写,用于linux SO中的msp430fx。我最近重新编译了 一个新版本的mspgcc,导致之前使用的是4.3并且它与扩展模式(20位-mlarge)不兼容/稳定。

我遵循了site

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

  

msp430-gcc -o   建立/ MoteISTv5_mspgcc /项目/普通/ 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:   无法打开链接器脚本文件msp430f5438a.ld:没有这样的文件或   目录collect2:错误:ld返回1退出状态scons:***   [build / MoteISTv5_mspgcc / projects / common / 03oos_macpong_prog]错误1   scons:建筑因错误而终止。

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

提前完成,

Diogo Guerra

1 个答案:

答案 0 :(得分:0)

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

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

好吧,显然我必须使用-L强制.ld文件的目录到编译器标志中。

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

我做了一些浏览,显然bin库不支持大多数__“特殊处理器功能”。他们说我们必须使用内联汇编来访问特殊寄存器,这很尴尬。 “他们会删除那种支持吗?

如果你需要使用内联汇编,这里是__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