工具/软件:TI C/C++编译器
大家好,支持!
我的客户在编译器的16.9 版本4 LTS中遇到链接器问题。
基本上,它不喜欢链接程序命令文件中的内存填充选项,该选项由以下行表示
Flash (RX) :origin = flash_start,length = start(CRCD)-flash_start,fill = 0xFFFFFFFF
如果已删除填充选项,则一切正常。 您能帮我解决问题吗?
这是输出控制台中显示的链接命令。
'构建目标:455.529万_NCC.Out '
'调用:ARM链接器'
“c:/ti/ccsv7/tools/compiler/ti-CGT-arm_mp.4.LTS/bin/armcl" 16.9 -mv7m4 --code_state=16 --float_support=fpv4spd16 -me -O2 --define=cc="cc"--define=part _tm4c1237H6Pz=16 2.1 5.2 5.3 6.1 6.2 6.5 8.1 8.5 8.6 8.11 8.12 2.3 ,5.4 ,6.4 ,8.2 ,8.8 ,,,,,di=10b -fabb=d= stack_size=0 -i"C:/ti/ccsv7/tools/compiler/ti-CGT-arm_cms.4.ls/lib" 16.9 -I:C:/ti/TivaWare_C_Serie-cm.lin/driverlib/cc/Debug" 2.1 -I:/projects/BIC 58.0181万 - cosmotas/2 - cm/lib_lip/lip_lip_lip/lin-55b.cm/rew_lip_lip_lip_lip/reb.ip_lip_lip_lip_lip-f.ip/b.cm/b.ip_lip_lip_lip_lip-f.ip_ip_ip-f.ip_ip_.ip_ip_ip-f.ip_.ip_.ip_.ip_c.ip_ip_ip_.ip_.ip_库3.156 -库-f.ip/b.ip/ip/ip_c.ip_c.ip_lip_.ip_.ip_lip_.ip_.ip_c.ip_.ip_. 16.9
链接>
编译器的版本17.6 .........0 STS (或15.X:X)不会发生这种情况。
'构建目标:455.529万_NCC.Out '
'调用:ARM链接器'
“c:/ti/ccsv7/tools/compiler/ti-CGT-arm_mp.0.sts/bin/armcl" 17.6 -mv7m4 --code_state=16 --float_support=fpv4spd16 -me -O2 --define=cc="cc"--define=part _tm4c1237H6Pz=16 --diag_diag_diag_diag_diag_diag_diag_diag_diag_diag-fab_-fab_-flous-flous-y,m=-from-fab_-from-2b -from_diag_diag_diag_diag_diag_diag_-yb -yb -yb -yb -yb -yb -b -from_diag_diag_diag_diag_diag_diag_diab_diab_fab_-from-fab_fab_-fab_-from-from-from-b -from_diag_diab 2.1 2.3 5.2 5.3 5.4 6.1 6.2 6.4 6.5 8.1 8.2 8.5 8.6 8.8 8.11 8.12 stack_size=0 -i"C:/ti/ccsv7/tools/compiler/ti-CGT-arm_cms.0.sts/lib" 17.6 -i"C:/ti/TivaWare_C_Serie-cm.lin/driverlib/cs/Debug" 2.1 -i"C:/projects/bics/bc:3.156 17.6 cosmot/crnc/lib_lip_lip_lip/fulb.cm/re_lip_lip-f.cm/f.ip_lip_lip_lip_f.crs/b.crs/ip_lip-f.crs/ip_lip_lip-f.crs/ip_lip_lip-f.crs/ip_lip-f.crs/ip_lip_lip-f.crs/ip_lip_c.crm.crm.crm.crm.crm.crm.crm./f_-f_-f./f./ip_c_cip_c_c_cip_c.crm.crs/ip_-f.crm.cr
链接>
'完成构建目标:455.529万_NCC.Out '
''
"C:/ti/ccsv7/utils/tiobj2bin/tiobj2bin""455.529万_NCC.ut""455.529万_NCC.bin""C:/ti/Ccsv7/tools/compiler/ti-CGT-arm_STS.0.sts/bin/armofd" 17.6 :C:17.6 /ti/ccsvc/mksvc/mbin/jutilti/crs/xf/reach/crs/j/crs/j/ft/crs/f_7/cm/j/f_7/cm/crs/f_7/f_/crf_/crf_/crs/j/crs/j/ft/j/f_/crs/crs/j/crs/
"C:/ti/ccsv7/tools/compiler/ti-CGT-arm_NCC.0.0.sts/bin/armdi" 17.6 "455.529万_NCC.ut""455.529万_NCC.lst"
将455.529万_NCC.OUT分解为455.529万_NCC.lst
"C:/ti/ccsv7/tools/compiler/ti-CGT-arm_NCC.0.STS/bin/armnm" 17.6 -o="455.529万_NCC.sym""455.529万_NCC.out
''
****构建已完成****
您能为我提供一些解决问题的信息和技巧吗?
顺便说一句,我还想使用链接器用特定模式(例如0xFEFEFEFEFEFE)填充堆栈。 有可能吗?
这是链接器命令文件,供您参考
/************************************************************************
*
*用于德州仪器(TI) TM4C1237H6PZ的默认链接器命令文件
*
*这源自TivaWare库的修订版1.0691万。
*
***************** /
--retain=g_pfnVectors
#defueFLASH_start 0x0万
#defueFLASH_SIZE 0x4万
#defeeFLASH_END (FLASH_START + FLASH_SIZE -1)
#defueRAM_START 0x2000万
#defineRAM_SIZE 0x0.8万
#defineRAM_END (RAM_START + RAM_SIZE -1)
#defueROM_start 0x100万
#defueROM_end 0x1.0087万FF
#defineROM_size (ROM_end - ROM_start + 1)
#defineVESTA_SIZE (0x0.8万 - CRCDATA SIZE)
#defineCRCDATA大小 (大小(CRCDATA)
内存
{
CDATA (R) :原点= 0x3FFFC,长度= 0x0.0004万,填充= 0xFFFFFFFF
Flash (RX) :origin = flash_start,length = start(CRCD)-flash_start,fill = 0xFFFFFFFF
SRAM (rwx) :origin = RAM_START,length = 0x0.0007万F00,vfill = 0x0万
持久性(RW):原点= 0x2.0007万F00,长度= 0x0.01万
}
/*以下命令行选项作为CCS项目的一部分进行设置。 */
/*如果您使用命令行进行构建,或出于某种原因希望 */
/*在此处定义它们,您可以根据需要取消注释和修改这些行。 */
/*如果您使用CCS进行构建,最好制作任何这样的*/
/*在CCS项目中进行修改,并将此文件保留为单独文件。 */
/* */
/*--heap_size=0 */
/*--stack_size=256 */
/*--library=rtsv7M4_T_le_eabi.lib */
/*内存中的部分分配*/
章节
{
intvecs: > 0x0万
text : >闪烁
const : > flash
.cinit : >闪烁
.Pinit : >闪光
init_array:>闪存
crcval1: >crcdc.
//.vtable: >0x2000万
.stack : > RAM_START /* Fill = 0xFEFEFEFEFEFE */
//.vtable: > SRAM
sysmem:> SRAM (高){__SYSMEM_START =.;}
数据 : > SRAM (高)
.bss : > SRAM (高)
.persistent:> persistent, type=NOINIT
}
__stack_size =__SYSMEM_START - RAM_START;
__XX =__SYSMEM_START;
__stack_top =__SYSMEM_START - 0x08;
__stack_end =__stack_top + 0x04;
__CRCDATH_START = FLASH_END+1-CRCDATH_SIZE;
__rom_start = rom_start;
__ROM_END = ROM_END;
__rom_size = rom_size;
__CRCVAL1_START =启动(CRCDATE);
__persistent_start = start (持久性);
__flash_start =启动(flash);
__flash_size =启动(CRCD)-flash_start;
__flash_end =__flash_start +__flash_size - 1;
__RAM_START =启动(SRAM);
__RAM_SIZE = RAM_SIZE;
__RAM_END =__RAM_START +__RAM_SIZE -1;