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.

TMS570LS1224: Linker error creating CRC tables

Part Number: TMS570LS1224


Hi,

I have some troubles using the CRC flash program checking as described in SPNA235.

Indeed I added a CRC check for all my sections in FLASH. See my sys_link.cmd :

/*----------------------------------------------------------------------------*/
/* Linker Settings                                                            */

--retain="*(.intvecs)"

/* USER CODE BEGIN (1) */
/* USER CODE END */

/*----------------------------------------------------------------------------*/
/* Memory Map                                                                 */

MEMORY
{
    VECTORS (X)  : origin=0x00000000 length=0x00000020
    FLASH0  (RX) : origin=0x00000020 length=0x000BFFE0
    STACKS  (RW) : origin=0x08000000 length=0x00004500
    RAM     (RW) : origin=0x08004500 length=0x0001bb00

/* USER CODE BEGIN (2) */
/* USER CODE END */
}

/* USER CODE BEGIN (3) */
#if 0
/* USER CODE END */

/*----------------------------------------------------------------------------*/
/* Section Configuration                                                      */

SECTIONS
{
    .intvecs : {} > VECTORS
    .text    : {} > FLASH0
    .const   : {} > FLASH0
    .cinit   : {} > FLASH0
    .pinit   : {} > FLASH0
    .bss     : {} > RAM
    .data    : {} > RAM
    .sysmem  : {} > RAM


/* USER CODE BEGIN (4) */
#endif
SECTIONS                               /* re-defines real sections here */
{
    .intvecs :    {} palign=32, fill=0xFF,       crc_table(_my_crc_table,   algorithm=TMS570_CRC64_ISO) > VECTORS
    .text :       {} palign=8,  fill=0xFFFFFFFF, crc_table(_prog_crc_table, algorithm=TMS570_CRC64_ISO) > FLASH0
    .const :      {} palign=8,  fill=0xFFFFFFFF, crc_table(_prog_crc_table, algorithm=TMS570_CRC64_ISO) > FLASH0
    .cinit :      {} palign=8,  fill=0xFFFFFFFF, crc_table(_prog_crc_table, algorithm=TMS570_CRC64_ISO) > FLASH0
    .init_array : {} palign=8,  fill=0xFFFFFFFF, crc_table(_prog_crc_table, algorithm=TMS570_CRC64_ISO) > FLASH0
    .ARM.exidx :  {} palign=8,  fill=0xFFFFFFFF, crc_table(_prog_crc_table, algorithm=TMS570_CRC64_ISO) > FLASH0
    .TI.crctab :  {} palign=8,                                                                          > FLASH0

    .bss    : {} > RAM
    .data   : {} > RAM
    .sysmem : {} > RAM

/* USER CODE END */
}

Then, when i compile/link my program, a get an internal linker error :

../../master/ELFLNK/table.c:1734:internal fatal error #10120: (".ARM.exidx")

INTERNAL ERROR: C:\ti\ccs1011\ccs\tools\compiler\ti-cgt-arm_20.2.1.LTS\bin\armlnk.exe had an internal inconsistency and aborted

This is caused by a defect in the TI Linker.
TI Customer Support may be able to suggest a workaround to avoid this....

 

So what's wrong ?

Also, I wondering what's the purpose of ARM.exidx section ??? I see it's related to runtime librairie but I don't undestand well.

Complier version : V20.2.1 LTS

CCS version : 10.1.1

C++ project