所以,我正在尝试编译代码,用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
答案 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。