This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] 编译器/eZ430-Chronos:编译器似乎忽略了-MCPU=430

Guru**** 2393725 points
Other Parts Discussed in Thread: CC430F6137, SIMPLICITI

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/592530/compiler-ez430-chronos-compiler-seems-to-ignore--mcpu-430

部件号:eZ430-Chronos
主题中讨论的其他部件: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时,我不会期望这些指令。

我错过了什么吗? 感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请参阅  MSP430 GCC手册中标题为MSP430 GCC设置:运行时的表格。  它解释了选项-mcpu已弃用并替换为-mmcu。  和-mmcu选项必须与您使用的设备匹配。   在您的情况下,cc430f6137具有MSP430XV2 CPU内核。  唯一支持的方法是构建该CPU。  

    Ulrich Gabor 说:
    我们想要为 cc430f6137编译C++代码,但使用缩减指令集430 (不带X和v2)[/QUOT]

    可能有一种方法可以通过攻击命令行选项,链接程序脚本,启动文件等来使其工作。  但我们没有包含详细信息的文档或示例。

    谢谢,此致,

    -George

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的,感谢您的帮助!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    它实际上是按你所描述的方式工作的。 我们删除了-MCPU,设置了-mmcu=MSP430,并添加了-D __CC430F6137__以进行编译。 然后,我们在链接程序命令中更改了其他目标文件(例如CRTN.o)的路径,以使用430子目录中的文件,删除了给定的--script选项,并选择链接程序脚本cc430f6137.ld。 这似乎是可行的。 再次感谢!