主题:C2000WARE 中讨论的其他器件
工具/软件:
您好:
在工程中、我想链接 f28002x_globalvariabledefs.c 中的全局变量定义 我试用了 c2000Ware、版本 5.02、5.04 和 5.05、所有这些都具有非常相同的结果:f28002x_globalvariabledefs.c 中的 UidRegsFile 段不适合 UID 存储器、如 f28002x_headers_nonbios.cmd 中所定义:
"/Applications/ti/c2000/C2000Ware_5_05_00_00/device_support/f28002x/headers/cmd/f28002x_headers_nonBIOS.cmd", line 224: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section "UidRegsFile" size 0x10 page 1. Available memory ranges: UID size: 0x10 unused: 0x10 max hole: 0x10
`UidRegs`定义如下:
#ifdef __cplusplus
#pragma DATA_SECTION("UidRegsFile")
#else
#pragma DATA_SECTION(UidRegs,"UidRegsFile");
#endif
volatile struct UID_REGS UidRegs;
在链接器脚本 (f28002x_headers_nonbios.cmd) 中、`UidRegsFile`放置在`UID`中:
UidRegsFile : > UID, type=NOINIT
在非常相同的链接器脚本中、`UID`定义为:
UID : origin = 0x000701F4, length = 0x00000010
根据`struct UID_REGS`(取自 f28002x_OTP.h)的定义、结构的大小为 0x10(8 个 UINT32 成员)。 这“应该“适合 UID 存储器,所以我怀疑问题不是数据结构的大小,而是结构的对齐(并且错误消息有点误导)。 将 UID 存储器的大小更改为 0x20。 链接有效、根据映射文件、UID_REGS 放置在 00070200(不是 00701F4)!
我要编写“TMS320F28002x 实时微控制器“参考手册 (SPRUIN7C)、据此、 UidRegs 应从 0x0007_01E8(不是 00701F4)开始 。 将 UID 存储器的链接器脚本条目更改为该起始地址可以修复链接器 错误。
这是已知问题吗? 我的分析是否正确?
此致
Torsten
 
				 
		 
					