您好!
我在使用 SPNA235中描述的 CRC 闪存程序检查时遇到了一些问题 。
实际上、我为闪存中的所有段添加了 CRC 校验。 请参阅我的 sys_link.cmd:
/*------------------ */
/*链接器设置 */
--retain="*(.intvecs)"
/*用户代码开始(1)*/
/*用户代码结束*/
/*----------------- */
/*内存映射 */
MEMORY
{
引导程序(X):origin=0x00000000 length=0x00000020
FLASH0 (RX):origin=0x00000020 length=0x000BFFE0
堆栈(RW):origin=0x08000000 length=0x00004500
RAM (RW):origin=0x08004500 length=0x0001bb00
//*用户代码开始(2)*/*
用户代码结束*/
}/*
用户代码开始(3)*/
#if 0
/*用户代码结束*/*---
*/
/*段配置 */
SECTIONS
{
.intvecs:{}>向量
.text:{}> FLASH0
.const:{}>FLASH0
.cinit:{}> FLASH0
.pinit:{}> FLASH0
.bss :{}> RAM
.data :{}> RAM
.sysmem:{}>RAM
/*用户代码开始(4)*/
#endif
SECTIONS /*在此处重新定义实数段*/
{
.intvecs:{} palign =32,fill=0xFF, crc_table (_my_crc_table、算法=TMS570_CRC64_ISO)>向量
.text: {}palign = 8、fill=0xFFFFFFFF、crc_table (_prog_crc_table、算法= TMS570_CRC64_ISO)> FLASH0
const: {}palign = 8、fill=0xFFFFFFFF、crc_table (_prog_crc_table、算法= TMS570_CRC64_ISO)> FLASH0
.cinit: {}palign = 8、fill=0xFFFFFFFF、crc_table (_prog_crc_table、算法= TMS570_CRC64_ISO)> FLASH0
init_array:{}palign =8、fill=0xFFFFFFFF、crc_table (_prog_crc_table、算法=TMS570_CRC64_ISO)> FLASH0
arm.exidx:{}palign =8、fill=0xFFFFFFFF、crc_table (_prog_crc_table、算法=TMS570_CRC64_ISO)> FLASH0
.TI.crctab:{} palign =8, > FLASH0
.bss:{}> RAM
.data :{}> RAM
.sysmem:{}>RAM
/*用户代码结束*/
}
然后,当我编译/链接程序时,出现“Get an internal linker error:
./../master/ELFLNK/table.c:1734:内部致命错误#10120:(".arm.exidx")
内部错误:C:\ti\ccs1011\ccs\tools\compiler\ti-cgt-arm_20.2.1.LTS \bin\armlnk.exe 内部不一致并中止
这是由 TI 链接器中的缺陷引起的。
TI 客户支持可能会建议一种变通办法来避免这种情况....
那么,有什么问题呢?
另外,我想知道 arm.exidx 段的用途是什么???? 我觉得这与利布赖利的运行时间有关、但我不太清楚。
编译器版本:V20.2-1 LTS
CCS 版本:10.1.1
C++项目