主题中讨论的其他部件:CC430F6137,SimpliciTI
工具/软件:TI C/C++编译器
我们想为cc430f6137编译C++代码,但使用缩减指令集430 (不带X和v2),因此我将-mmcu=cc430f6137和 -mcpu=430传递给编译器。 这会传递给子进程,它还会发出警告,提示我应该选择430x (“cc1plus: warning: MCU 'cc430f6137'支持430X ISA,但-MCPU选项设置为430",使用MNO-WARN-CMCU抑制),但该选项似乎被忽略。
请参见以下编译日志以及最后的错误说明:
//编译器/ti-MSP430-gcc/bin/MSP430-elf-g+"-L "/compiler/ti-MSP430-gcc/includes"-v -MCPU=430 -mmcu=cc430f6137 -I "/include"-i "src"-D -D "src"-D "src -d"-d"-d30w-d/nipc"-spici/srfici-低-sp-c"-cw-sp-cw-c"-cw-c"-cw-d-d-fici/src/-d-c"-cw-d-cw-c"-cw-c"-cw-fici/src/-cip-cw-c"-c"-cw-cw-cip-c"-cw-cip-c"-cip-c"-cw-c"-cw-c"-c"-c"-c"-cw-cw-cw-c"-cw-c"-cw-c"-c library-path=/include -fno-rtti -fno-threadsafe-statics -std=c+11 -L "/compiler/ti-MSP430-gcc/includes"-MNO-war-MCU -c -XC++"build/src/apps/Chronos_RF_Display/Cronos.acc"-xnone -I "APPS/RF_Display"
使用内置规格。
collect_gcc=/compiler/ti-MSP430-gcc/bin/MSP430-elf-g++
目标:MSP430-elf
配置为:/srv/net/MSP4I/Jenkins/workspace/MSP430-gcc-6-pkg-gnu/gcc.subtree/configure --build=i686-redhat-linux --host=i686-redhat-linux cc='x86_64-redhat-redhat-linux='x86_64-redhat-redhat-redhat-6.2 -redhat-redhat-1.16 -redhat-redhat-redhat-mcc=32-redhat-exp--mcc-exp-dimp-dimp-dimp-mnip-insp0-mb--mb-gb-gb-ginsp0-启用mnip-insp0-mip-insp0-gb-gb-
螺纹型号:单螺纹
GCC版本6.2 ..................................................................120161212 (SOMNIUM技术有限公司- MSP430-gcc 6.2 .1.16)
collect_gcc_options='-L/compiler/ti-MSP-gcc/includes''-v''-MCPU=430''-mmcu='cc430f6137''-i''/include''-I' Simplrc'''-D ''-I''''''''''-I' Simplrc''''''''''''-D ''''''''WD30''''''''''''''''''''''''''''''''''''''''''''''''''sdisable_WD30WD'''''''''''''''''WDT'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
/1/WDT-gcc-full-linux-installer-MSP.MSP/bin/../libexec/gcc/MSP430-elf/MSP.1/cc1plus 5.0 -quiet -v -i /include -i src-I src/compiler/ti-MSP430-gcc-gcc-gcc-gccspicicc-spici/srfcc-cc-spicurrfcc-spici/srfcc-cc-spician/spiciccspiciip-ccspicid/spicispicid/spicios-spicis/spicispicispicid-cc-spicis/spicispicis/spicispicicc-cc-ccspicispicispicispicis/spicid-cc-spicis/spicispici/src/spicid-cc-spicispicispicid-spici/src/spici/src/spicispicid-cc-spicispicid-spici/src/spicid 0.25 6.2 5.0 0.25 6.2 -fno-exceptions -ffuncion-sections -fmoo-loop-statists -fno-rtti -fno-threadsafe-statics -o /tmp/ccHaA3kR.s.
GNU C+11 (SOMNIUM技术有限公司- MSP430-gcc 6.2 .1.16)版本6.2 120161212 (MSP430-elf)
由GNU C版本4.8 520150623 (Red Hat ISL.5-4),GMP版本4.3 .2,MPFR版本2.4 .2,MPC版本4.8 0.8 .1,0.15 版本编译
GGC启发式:--param GGC-MIN-expand=100 --param GGC-MIN-heapsize=13.1072万
忽略不存在的目录"/compiler/MSP430-gcc-full-linux-installer-5.0 MSP.MSP/bin/./lib/gcc/MSP430-elf/MSP.1/../../../../MSP430-elf/sys-include" 0.25 6.2
忽略重复的目录"/compiler/MSP430-gcc-full-linux-installer-5.0 MSP.MSP/bin/./lib/gcc/ 0.25 .6.2 6.2 /./lib/gcc/MSP430-elf/MSP.1/../../../../MSP430-elf/include/c++/MSP.1"
忽略重复的目录"/compiler/MSP430-gcc-full-linux-installer-MSP.MSP/bin/./lib/gcc/ 0.25 .5.0 6.2 6.2 .1/elf-elf/430"
忽略重复的目录"/compiler/MSP430-gcc-full-linux-installer-5.0 MSP.MSP/bin/./lib/gcc/../././lib/gcc/MSP430-elf/MSP.1/../../../../MSP430-elf/include/c++/MSP.1/back" 0.25 6.2 6.2
忽略重复的目录"/compiler/MSP430-gcc-full-linux-installer-5.0 .0.25 .bin/./lib/gcc/./././lib/gcc/MSP430-elf/6.2 .1/include"
忽略重复的目录"/compiler/MSP430-gcc-full-linux-installer-5.0 .0.25 .bin/./lib/gcc/./././lib/gcc/MSP430-elf./INCLUDE 6.2 -fixed"
忽略不存在的目录"/compiler/MSP430-gcc-full-linux-installer-5.0 MSP.MSP/bin/./lib/gcc/ 0.25 .6.2 /./lib/gcc/MSP430-elf/MSP.1/../../../../MSP430-elf/sys-include"
忽略重复的目录"/compiler/MSP430-gcc-full-linux-installer-5.0 MSP.MSP/bin/./lib/gcc/ 0.25 .6.2 /./lib/gcc/MSP430-elf/MSP.1/../../../../MSP430-elf/include"
忽略不存在的目录"/include"
忽略不存在的目录"src/machine/SimpliciTI/BSP/boards/CC430EM"
忽略不存在的目录"src/machine/SimpliciTI/SimpliciTI/Nwk"
忽略不存在的目录"src/machine/SimpliciTI/SimpliciTI/Nwk_applications"
忽略重复的目录"src/"
忽略不存在的目录"src/ipstack"
#include "..."搜索从此处开始:
#include <...>搜索从此处开始:
源
/compiler/ti-MSP430-gcc/include/
构建
src/arch/cc430f6137
src/apps/Chronos_RF_Display
/compiler/MSP430-gcc-full-linux-installer-5.0 .0.25 .bin/./lib/gcc/MSP430-elf/6.2 .1/././././././././././MSP430-elf/include/c++/ 6.2 .1.
/compiler/MSP430-gcc-full-linux-installer-MSP.MSP/bin/./lib/gcc/MSP430-elf/MSP.1/../../../../../MSP430-elf/include/c++/MSP4.1/MSP430-elf/430 5.0 0.25 6.2 6.2
/compiler/MSP430-gcc-full-linux-installer-5.0 .0.25 .bin/./lib/gcc/MSP430-elf/6.2 .1/././././././././././././././include/c++/MSP4+/ 6.2 .1/back
/compiler/MSP430-gcc-full-linux-installer-5.0 .0.25 .bin/./lib/gcc/MSP430-elf/6.2 .1/include
/compiler/MSP430-gcc-full-linux-installer-5.0 .0.25 .bin/./lib/gcc/MSP430-elf/6.2 .1/include-fixed
/compiler/MSP430-gcc-full-linux-installer-MSP.MSP/bin/./lib/gcc/MSP430-elf/MSP.1/./../../../../MSP430-elf/include 5.0 0.25 6.2
搜索列表结束。
GNU C+11 (SOMNIUM技术有限公司- MSP430-gcc 6.2 .1.16)版本6.2 120161212 (MSP430-elf)
由GNU C版本4.8 520150623 (Red Hat ISL.5-4),GMP版本4.3 .2,MPFR版本2.4 .2,MPC版本4.8 0.8 .1,0.15 版本编译
GGC启发式:--param GGC-MIN-expand=100 --param GGC-MIN-heapsize=13.1072万
编译器可执行校验和:a7c174a8d75ac913c58b73c75de4.3678万
collect_gcc_options='-L/compiler/ti-MSP-gcc/includes''-v''-MCPU=430''-mmcu='cc430f6137''-i''/include''-I' Simplrc'''-D ''-I''''''''''-I' Simplrc''''''''''''-D ''''''''WD30''''''''''''''''''''''''''''''''''''''''''''''''''sdisable_WD30WD'''''''''''''''''WDT'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
/compiler/MSP430-gcc-full-linux-installer-RMSC.SPR/bin/../lib/gcc/MSP430-elf/RSo.// 5.0 ../../../MSP430-elf/bin/as -i /include -i src -i /compiler/ti-bsp-gcccc/spici/src/ipcipcartes -I /ipturs/nsp/ipcipckipcipcip-sp/ipts/iptc/ipcipcipcipts/ipcipts/ipcipts/ipcipciptc/ipcipcipcipcip-sp/ipts/ipcipcipcipcip-sp/ipts/ipcipts/ipcipcip-sp/ipcipcipcipcip-sp/ipcipcips/ipcipcipcip-sp/ipcipcipcipcipcip-sp/ips/ipcipcips/ips/ipcipcipcipcips/ipcipcipcip 0.25 6.2
使用BFD版本(SOMNIUM技术有限公司- MSP430-gcc 6.2 .1.16) 2.26 的GNU汇编器版本2.26 (MMSP430-elf).........2016.0125万
/tmp/ccHaA3kR.s:汇编程序消息:
/tmp/ccHaA3kR.s:34:错误:指令pushm需要MSP430X MCU
有问题的代码是下面的代码片段,在我看来,它类似于编译器生成的上下文保存代码:
;函数开始 ; framesize_regs: 8 ;framesize_nallons: 6 ;framesize_outgo: 0 ;framesize: 14 ;elim ap -> fp 10 ;elim fp -> sp 6 ;保存的注册:R7 R8 R9 R10 ;开头 PUSHM.W #4,R10 Sub.W #6,R1 ;序言结束
[............]
PUSHM指令显然是由优化器插入的。 使用-O0时,生成的汇编程序文件中没有PUSHM指令,但即使如此,也还有其他扩展指令,如RPT和RRAX,而在-MCPU=430时,我不会期望这些指令。
我错过了什么吗? 感谢您的帮助。