[英]TI's Red Hat mspgcc-430 compilation error
因此,我正在尝试为Linux SO中的msp430fx编写用C编写的代码。 我最近重新编译了新版本的mspgcc,因为以前使用的是4.3,并且与扩展模式(20位-mlarge)不兼容/不稳定。
我关注了这个网站 。
安装后,我运行一个简单的(主要是,调用一些随机函数)并且编译良好,但是现在,编译这个大项目时,我最终遇到了以下错误:
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 / voos_macpong / Moot_pgpong / 03oos_IST 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 / m / lib430 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)
编辑:在此新版本的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;
}
要了解更多,您可以使用这个网站 ,我发现要真正有用的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.