Other Parts Discussed in Thread:MSP430F5438A
以前的一个工程,在CCS4上编译没问题,现在需要更换到CCS5.5上,结果出了问题,具体情况如下:
工程文件夹如下图,包含:
RTU3Sd文件夹(SD卡与FAT16的源文件和头文件)
RTU3Lib文件夹(基于电路板的库函数的源文件和头文件)
RTU3Trans文件夹(通讯部分的源文件与头文件)
RTU3文件夹(应用程序的源文件与头文件)
proj文件夹(工程文件夹)
Lib文件夹(包含所有的头文件和lib文件文件夹)
RTU3Sd文件夹,RTU3Lib文件夹,RTU3Trans文件夹,RTU3文件夹内均包含一个src文件夹(内含 .C 文件)和一个inc文件夹(内含 .H 文件)
在RTU3Sd文件夹中建立库工程,编译出库文件,建立工程配置如下图:
RTU3工程语法使能GCC扩展:
结果报错,如下图:
这样同样的配置,在ccs4上编译就没有问题。
Susan Yang:
抱歉,您的错误图片看不太清晰。所以能否重新上传或者复制一下错误信息?
另外若是可以的话,请您私信/上传一下工程,我们来详细测试一下,谢谢
,
user4215035:
nrtu.rar
,
user4215035:
已经上传工程文件,这个文件在CCS4是可以编译成功的,在CCS5.5编译失败。
,
Aries:
嗯,以前的同事帮忙发的贴子,我是在ccs4下面建立的4个工程,其中三个是Static Library,编译出三个 .lib文件,一个是Executable,会调用这三个 .lib库,现在因为需要,将其移到ccs5.5环境里编译,然后报错,现在通过更改Linker里面的File Search Path的Include library file的前后顺序,先include我自己的那三个lib,然后才是libmath.a和lib.a,这样就消除了¥10056 symbol "__TI_int42"redefined …… 这类问题,但是因为我修改了cmd文件,在flash里划分了好几块,结果目前出错了,
我将FLASH的头两个字节,划分出来做一个固定的版本信息保存,在main函数里就可以指定区域(#pragma DATA_SECTION(rtuVersion, "VERSION")),cmd改为
INFOD : origin = 0x1800, length = 0x0080 VERSION : origin = 0x5C00, length = 0x0002 FLASH : origin = 0x5C02, length = 0xA37E
同时也在sections里指定了 VERSION : {} > VERSION,
这样在ccs4中都是编译没问题的,可是到ccs5.5里,编译完后会报错,#10100-D conflicting placement
,
Aries:
cmd文件里的memory部分修改如下
INFOD : origin = 0x1800, length = 0x0080 VERSION : origin = 0x5C00, length = 0x0002 FLASH : origin = 0x5C02, length = 0xA37E FLASH2 : origin = 0x10000,length = 0x2CA00 USERDATA : origin = 0x3CA00,length = 0x1400 UPDATECNT : origin = 0x3DE00,length = 0x0200 UPDATEIDX : origin = 0x3E000,length = 0x1E00 INFOE : origin = 0x3FE00,length = 0x0200 INT00 : origin = 0xFF80, length = 0x0002
sections部分修改如下:
.text:_isr : {} > FLASH isrFun : {} > FLASH#ifdef __LARGE_DATA_MODEL__ .cinit : {} > FLASH | FLASH2 .const : {} > FLASH | FLASH2#else .cinit : {} > FLASH .const : {} > FLASH#endif VERSION : {} > VERSION .cio : {} > RAM
编译完结果,
在 《VERSION : {} > VERSION》这一行前面报错,#10100-D conflicting placement,
在《.cinit : {} > FLASH》这一行前面报错,#10099-D program will not fit into available memory. placement with alignment fails for section ".cinit" size 0xdf . Available memory ranges: lnk_msp430f5438a.cmd /RTU3 line 154 C/C++ Problem
在《.const : {} > FLASH》这一行前面报错,#10099-D program will not fit into available memory. placement with alignment fails for section ".const" size 0x31b1 . Available memory ranges: lnk_msp430f5438a.cmd /RTU3 line 155 C/C++ Problem
是我在那里设置不对吗?
我已经在 工程的compiler设置里的Predefined Symbols里添加了 __LARGE_DATA_MODEL__,
,
Susan Yang:
我导入了CCS6.2(电脑上没有安装CCS5),并没有您所述的错误。我的console如下:
fatal error: object files have incompatible formats ("C:/Users/Desktop/CUSTOMER CCS PROJECT/nrtu/nrtu/Lib/RTU3Trans.lib<rtu_trans.obj>" = TI-COFF, "./src/data/rtu_dat_man.obj" = ELF)gmake: *** [RTU3.out] Error 1gmake: Target 'all' not remade because of errors.
解决方式如下:
e2e.ti.com/…/295846
,
Aries:
嗯,那我马上试一下看看,谢谢您了
,
Aries:
您好,还是不行呢,console如下:
"../lnk_msp430f5438a.cmd", line 148: error #10099-D: program will not fit into available memory.placement with alignment fails for section ".cinit" size 0x4f0 .Available memory ranges:
FLASHsize: 0xa380unused: 0x0max hole: 0x0map文件里写的
.cinit000000000000004f0FAILED TO ALLOCATE
,
Susan Yang:
请您先不要修改cmd文件,还是使用之前在CCS4内可以成功编译的cmd文件试试
若是还不能成功的话,有可能是编译器版本差异的问题,尝试使用同一编译器版本试一下
若是还不能成功的话,请您将工程(使用之前在CCS4内可以成功编译的cmd文件)再次发送给我,我下载CCS5.5试试
,
Aries:
嗯呐,目前使用ccs6.2,直接用编译器自带的cmd文件,编译完后console为:
warning #10247-D: creating output section "VERSION" without a SECTIONS specificationwarning #10247-D: creating output section "isrFun" without a SECTIONS specification'Finished building target: RTU3.out'
如果用在CCS4上修改且编译过的cmd文件,编译后的console为:
"../lnk_msp430f5438a.cmd", line 129: warning #10424-D: Linker command file has no sections of type=VECT_INIT, but does contain .intXX sections. This file may be out of date. Generating interrupt pointers for all .intXX sections. The default handler provided in the RTS will be used if no other handler is found. It is recommend that you update your linker command file to the latest version.remark #10372-D: (ULP 4.1) Detected uninitialized Port F in this project. Recommend initializing all unused ports to eliminate wasted current consumption on unused pins.warning #10247-D: creating output section ".data" without a SECTIONS specification
>> Compilation failuremakefile:228: recipe for target 'RTU3.out' failed"../lnk_msp430f5438a.cmd", line 117: error #10099-D: program will not fit into available memory. placement with alignment fails for section ".cinit" size 0x75a . Available memory ranges: FLASH size: 0x73fe unused: 0x0 max hole: 0x0 error #10010: errors encountered during linking; "RTU3.out" not builtgmake: *** [RTU3.out] Error 1gmake: Target 'all' not remade because of errors.
,
Aries:
ccs4通过的cmd文件.rar