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:创建 CRC 表时出现链接器错误

Guru**** 2551110 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/970297/tms570ls1224-linker-error-creating-crc-tables

器件型号:TMS570LS1224

您好!

我在使用 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++项目

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

    Sylvain、您好!

    我以前使用链接器 cmd 生成 CRC、从未看到过这种问题。 您是否尝试过以前版本的编译器? 我 稍后将尝试 V20.2-1 LTS。

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

    您好 QJ、

    感谢您的回复

    我使用较旧的编译器进行了尝试:

    对于版本"18.12.5.LTs"(来自 CCS 9.3.0)、它的故障方式相同、即使对于"15.12.3.LTs"(来自 CCS 6.2.0)、也是如此。

     

    也许在我的第一条消息中不清楚、但问题仅在我尝试使用".arm.exidx"段生成 CRC 时出现。

    当我删除此段的 CRC 生成时、所有其他段的 CRC 表都会生成良好。

    Sylvain

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

    尊敬的 Sylvain:

    这是一个已知问题、并在此处进行了记录: https://sir.ext.ti.com/jira/browse/EXT_EP-9780 (EXT_EP-9780指的是 C2000、但您在 Arm 上遇到了相同的问题)。

     当启用 C++异常处理(通过--exceptions 命令行选项)时、编译器会生成 arm.exidx 段。 您是否在应用程序中使用 C++异常?

    Ajay

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

    您好!

    感谢您的回复。

    实际上、我不在应用程序中使用异常、因此我删除了这些选项、并且不再需要.arm.exidx 段。

    问题迎刃而解!