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.

[参考译文] TMS320F280049C:来自链接器命令文件的警告消息

Guru**** 2553450 points
Other Parts Discussed in Thread: SFRA

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1237990/tms320f280049c-warning-message-from-my-linker-command-file

器件型号:TMS320F280049C
主题中讨论的其他器件:SFRA

您好!

我最近将我的代码构建输出格式从 COFF 更改为 EABI 格式。 在此之后、我收到以下警告

#10272-D 段不能混合来自不同输出段的相对符号;"page0_crc_table"位于".bss"段中、"dot operator"位于".TI.crctab"段中

我已尝试清除在链接器命令文件上工作的警告、但该警告无法清除。 由于该警告、代码不会在调试模式下运行。 当我禁用 CRC 校验代码时、会清除警告。 CRC 校验代码 和其他代码如下:

void SAF_CRC::InitCRC (void)
{
CRC_RESET ();
genCRC32Table();

void SAF_CRC::CRCCal (void)
{
SAF_CRC::CRCCalPages (&page0_crc_table);

void SAF_CRC::CRCCalPages (const crc_table *p_crc_table)
{
uint16_t Cou = 0;
uint32_t crc_cal_val;
while (cou < p_crc_table->num_recs)
{
crc_cal_val = getCRC32_CPU (init_CRC32、(uint16*)(p_crc_table->recs [cou].addr)、(crc_chitate_e) crc_chitate_even、((p_crc_table->recs [cou].size)<< 1));
如果(crc_cal_val!= p_crc_table->recs[cou].crc_value)
{
SAF_DEV::SafeFail (88、9、0);

Cou++;

每当我注释掉这行代码时、

SAF_CRC::CRCCalPages (&page0_crc_table);

警告将被删除。

我的链接器命令文件的一个部分如下所示


/***所需编译器部分***/
部分
{

/*程序存储器(第0页)段*/
codestart :> begin, page = 0, align (8)
.text:>> FLASH_BANK0_SEC0 | FLASH_BANK0_SEC1 | FLASH_BANK0_SEC2 | FLASH_BANK0_SEC3 |FLASH_BANK0_SEC4 |FLASH_BANK0_SEC5 |FLASH_BANK0_SEC6 |FLASH_BANK0_SEC7
|FLASH_BANK0_SEC8 | FLASH_BANK0_SEC10_11、
PAGE = 0、ALIGN (4)、crc_table (page0_crc_table、算法= CRC32_PRIME)
.cinit:>FLASH_BANK0_SEC8、page = 0、align (4)、crc_table (page0_crc_table、algorithm=CRC32_PRIME)
init_array:> FLASH_BANK0_SEC8、page = 0、align (4)、crc_table (page0_crc_table、algorithm= CRC32_PRIME)

//显式初始化的全局和静态常量变量
.const:> FLASH_BANK0_SEC6、page = 0、align (4)、crc_table (page0_crc_table、algorithm=CRC32_PRIME)
.switch:> FLASH_BANK0_SEC4、PAGE = 0、ALIGN (4)//EMPTY
.reset:>RESET、PAGE = 0、TYPE = DSECT /*未使用、*/

/*数据存储器(第1页)段*/
.stack:> RAMM0、page = 1
.bss:> RAMLS6_RAMLS7、page = 1 //仅适用于 COFF 的全局和静态变量//验证该值是否足够大
.sysmem:> RAMLS2、page = 1 //仅针对 COFF 的 malloc 函数(堆)的存储器
.cio:> RAMLS2、page = 1
.const:> RAMLS2、page = 1
.data :> RAMLS3, page = 1
.bss_cla:> RAMLS3、页= 1

/*** CLA 编译器所需部分***/
scratchpad:> RAMLS3、page = 1 /* CLA C 编译器的 Scratchpad 存储器*/
//controlVariablesClaa:> CLA1_MSGRAMLOW,page = 1 /*保留 CLA 调用函数中使用的变量*/
controlVariablesCla :> RAMLS3,page = 1 /*保持 CLA 调用函数中使用的变量*/

/*文件 device.c 使用的段 Ramfuncs。 */

{
.TI.ramfunc
{
//-l sfra_f32_tmu_coff.lib

// ramfuncs

}LOAD = FLASH_BANK0_sec7
运行= RAMLS0_RAMLS1、
Load_start (RamfuncsLoadStart)、
Load_Size (RamfuncsLoadSize)、
Load_End (RamfuncsLoadEnd)、
RUN_START (RamfuncsRunStart)、
RUN_SIZE (RamfuncsRunSize)、
RUN_END (RamfuncsRunEnd)、
PAGE = 0、ALIGN (4)、crc_table (page0_crc_table、算法= CRC32_PRIME)

.TI.crctab:{}> FLASH_BANK0_SEC8

/***用户定义的部分***/
dclfuncs :> RAMLS0_RAMLS1,page = 0 /*将 DCL 函数链接到 RAM */
dmaMemBufs :> RAMGS2, page = 1 /*链接到 DMA 可访问的存储器*/
Cla1ToCpuMsgRAM:> CLA1_MSGRAMLOW、page = 1 /*链接到 CLA 消息 RAM */
CpuToCla1MsgRAM:> CLA1_MSGRAMHIGH、page = 1 /* CLA 消息 RAM 链接*/
Cla1DATA1:> RAMLS3、page = 1 /*链接到 CLA 数据 RAM */
Cla1Data2:> RAMLS3、page = 1 /*链接到 CLA 数据 RAM */

SFRA_F32_Data:> RAMGS2、ALIGN = 64、PAGE = 1
SFRA_Data:> RAMGS2、ALIGN = 64、PAGE=1

/*文件 cla.c 使用的 Cla1Prog 段*/
Cla1Prog:load = flash_BANK0_SEC10_11、/*加载到闪存、从 CLA 程序 RAM 运行*/
RUN = RAMLS5、
Load_Start (Cla1ProgLoadStart)、
Load_Size (Cla1ProgLoadSize)、
RUN_START (Cla1ProgRunStart)、
PAGE = 0、ALIGN (4)、crc_table (page0_crc_table、算法= CRC32_PRIME)

/*
//========================================
//文件结尾。
//========================================
*/

请如何解决该警告或我的代码有什么问题。

谢谢