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