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.

[参考译文] CCS/TMS570LS0432:当使用#39;fill 和#39定义存储器区域时、链接器残桩;

Guru**** 2524550 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/772001/ccs-tms570ls0432-linker-stucks-when-memory-area-is-defined-with-fill

器件型号:TMS570LS0432

工具/软件:Code Composer Studio

您好!

我在使用 armlnk.exe 时遇到了一种奇怪的行为、希望有人能帮我解决这个问题。

我想用预定义的图形填充存储器的未使用区域、但一旦我尝试使用填充选项、链接器会报告错误、甚至桩模块:


内部错误:C:\ti\ccsv7\tools\compiler\ti-cgt-arm_16.9.4.LTS \bin\armlnk.exe 遇到未处理的异常

、这是由 TI 链接器中的缺陷引起的。
TI 客户支持可能会建议解决方法来避免这种情况。

升级到编译器的最新版本可能会解决此问题。

在 E2E 支持论坛中联系 TI、网址 为 http://e2e.ti.com
的"Development Tools"、"TI C/C++ Compiler"下。 请参阅标题
为"提交问题"的链接。

我们需要看到整个错误消息和完整的可重现
测试案例、包括所有命令行选项。
包含
用于链接程序的所有目标文件、库和链接器命令文件。


>>编译失败 

如果没有填充选项、一切都很好、但我确实有一些未初始化的区域。

以下是两 个链接器文件的内容:

1. LinkFile.cmd -不填充存储器、工作正常

/*------------------ */
/*链接器设置 */
--retain="*(.intvecs)"


/*--------------- */
/*内存映射 */
MEMORY
{
矢量 (x) :origin=0x00000000 length=0x00000020
BOOT_FLASH (Rx):origin=0x00000040 length=0x00001FC0
Loader_FLASH (RX):origin=0x00002000 length=0x00006000
APP_LENGTH (R) :origin=0x00008000 length=0x00000004
APP_CRC (R) :origin=0x00008004 length=0x00000004
APP_ID (R) :origin=0x00008008 length=0x00000004
APP_PN0 (R) :origin=0x0000800C length=0x00000004
APP_PN1 (R) :origin=0x00008010 length=0x00000004
APP_PN2 (R) :origin=0x00008014 length=0x00000004
APP_PN3 (R) :origin=0x00008018 length=0x00000004
APP_VECTORS (Rx):origin=0x0000801C length=0x00000024
APP_FLASH (Rx):origin=0x00008040 length=0x00017FC0
Unused_flash (RX):origin=0x00020000 length=0x00040000
堆栈 (RW):origin=0x08000000 length=0x00001500
RAM (RW):origin=0x08001500 length=0x00006B00

Gio_regs (RW):origin=0xFFF7BC00 length=0x00000100
MIBADC_regs (RW):origin=0xFFF7C000 length=0x00000200
DCAN1_regs (RW):origin=0xFFF7DC00 length=0x00000200
DCAN2_regs (RW):origin=0xFFF7DE00 length=0x00000200
FLASH_REGS (RW):origin=0xFFF87000 length=0x00001000
SCI_regs (RW):origin=0xFFF7E400 length=0x00000100
SPI1_regs (RW):origin=0xFFF7F400 length=0x00000200
SPI2_regs (RW):origin=0xFFF7F600 length=0x00000200
SPI3_regs (RW):origin=0xFFF7F800 length=0x00000200
RTI_regs (RW):origin=0xFFFFFF00 length=0x00000100
IOMM_regs (RW):origin=0xFFFFFFEA00 length=0x00000200
VIM_regs (RW):origin=0xFFFFFF00 length=0x00000100
VIM_RAM (RW):origin=0xFFF82000 length=0x00000400
PCR_REGS (RW):origin=0xFFFFFFE000 length=0x00000100
sys1_regs (RW):origin=0xFFFFFF00 length=0x00000100
SYS2_regs (RW):origin=0xFFFFFFE100 length=0x00000100
ESM_REGS (RW):origin=0xFFFFFF500 length=0x00000100
TCRAM1_REGS (RW):origin=0xFFFFFF800 length=0x00000100
TCRAM2_regs (RW):origin=0xFFFFFF900 length=0x00000100
}/*-------------------------------------------------------


*/
/*段配置 */
SECTIONS
{
.intvecs:align (16){}>向量
.text :align (16){}> app_flash
.const :align (16){}> app_flash
.cinit :align (16){}> app_flash
.pinit :align (16){}> app_flash
.bss :{}> RAM
.data :{}> RAM
.sysmem:{}>RAM

Bootcode :{}> boot_flash
CANLoader:{}> loader_flash

/*将应用程序的"a_MC"硬编码为从链接器文件到可执行文件*/
AppID_TO_ROM:> APP_ID Fill = 0x415F4D43 {。 +=(0x4);}

GioRegsFile :{}>GIO_regs, type = NOINIT
MibAdcRegsFile:{}>MIBADC_REGS, type = NOINIT
DCan1RegsFile :{}> DCAN1_REGS, type = NOINIT
DCan2RegsFile :{}> DCAN2_regs, type = NOINIT
FlashRegsFile :{}> flash_regs、 type = NOINIT
SciRegsFile :{}> SCI_REGS、 type = NOINIT
Spi1RegsFile :{}> SPI1_regs、 type = NOINIT
Spi2RegsFile :{}> SPI2_regs、 type = NOINIT
Spi3RegsFile :{}> SPI3_regs、 type = NOINIT
RtiRegsFile :{}> RTI_regs、 type = NOINIT
IommRegsFile :{}> IOMM_regs、 type = NOINIT
VimRegsFile :{}>VIM_REGS, type = NOINIT
VimRamFile :{}> VIM_RAM, type = NOINIT
PcrRegsFile :{}> pcr_regs、 type = NOINIT
Sys1RegsFile :{}>SYS1_regs, type = NOINIT
Sys2RegsFile :{}> SYS2_regs, type = NOINIT
EsmRegsFile :{}> ESM_REGS, type = NOINIT
TcRam1RegsFile:{}> TCRAM1_REGS, type = NOINIT
TcRam2RegsFile:{}> TCRAM2_regs, 类型= NOINIT
}

2 LinkFile_With fill.cmd -填充存储器时不起作用

/*------------------ */
/*链接器设置 */
--retain="*(.intvecs)"


/*--------------- */
/*内存映射 */
MEMORY
{
矢量 (x) :origin=0x00000000 length=0x00000020
BOOT_FLASH (Rx):origin=0x00000040 length=0x00001FC0
Loader_FLASH (RX):origin=0x00002000 length=0x00006000
APP_LENGTH (R) :origin=0x00008000 length=0x00000004
APP_CRC (R) :origin=0x00008004 length=0x00000004
APP_ID (R) :origin=0x00008008 length=0x00000004
APP_PN0 (R) :origin=0x0000800C length=0x00000004
APP_PN1 (R) :origin=0x00008010 length=0x00000004
APP_PN2 (R) :origin=0x00008014 length=0x00000004
APP_PN3 (R) :origin=0x00008018 length=0x00000004
APP_VECTORS (Rx):origin=0x0000801C length=0x00000024
APP_FLASH (Rx):origin=0x00008040 length=0x00017FC0 fill=0xFFFFFFFF
Unused_flash (RX):origin=0x00020000 length=0x00040000
堆栈 (RW):origin=0x08000000 length=0x00001500
RAM (RW):origin=0x08001500 length=0x00006B00

Gio_regs (RW):origin=0xFFF7BC00 length=0x00000100
MIBADC_regs (RW):origin=0xFFF7C000 length=0x00000200
DCAN1_regs (RW):origin=0xFFF7DC00 length=0x00000200
DCAN2_regs (RW):origin=0xFFF7DE00 length=0x00000200
FLASH_REGS (RW):origin=0xFFF87000 length=0x00001000
SCI_regs (RW):origin=0xFFF7E400 length=0x00000100
SPI1_regs (RW):origin=0xFFF7F400 length=0x00000200
SPI2_regs (RW):origin=0xFFF7F600 length=0x00000200
SPI3_regs (RW):origin=0xFFF7F800 length=0x00000200
RTI_regs (RW):origin=0xFFFFFF00 length=0x00000100
IOMM_regs (RW):origin=0xFFFFFFEA00 length=0x00000200
VIM_regs (RW):origin=0xFFFFFF00 length=0x00000100
VIM_RAM (RW):origin=0xFFF82000 length=0x00000400
PCR_REGS (RW):origin=0xFFFFFFE000 length=0x00000100
sys1_regs (RW):origin=0xFFFFFF00 length=0x00000100
SYS2_regs (RW):origin=0xFFFFFFE100 length=0x00000100
ESM_REGS (RW):origin=0xFFFFFF500 length=0x00000100
TCRAM1_REGS (RW):origin=0xFFFFFF800 length=0x00000100
TCRAM2_regs (RW):origin=0xFFFFFF900 length=0x00000100
}/*-------------------------------------------------------


*/
/*段配置 */
SECTIONS
{
.intvecs:align (16){}>向量
.text :align (16){}> app_flash
.const :align (16){}> app_flash
.cinit :align (16){}> app_flash
.pinit :align (16){}> app_flash
.bss :{}> RAM
.data :{}> RAM
.sysmem:{}>RAM

Bootcode :{}> boot_flash
CANLoader:{}> loader_flash

/*将应用程序的"a_MC"硬编码为从链接器文件到可执行文件*/
AppID_TO_ROM:> APP_ID Fill = 0x415F4D43 {。 +=(0x4);}

GioRegsFile :{}>GIO_regs, type = NOINIT
MibAdcRegsFile:{}>MIBADC_REGS, type = NOINIT
DCan1RegsFile :{}> DCAN1_REGS, type = NOINIT
DCan2RegsFile :{}> DCAN2_regs, type = NOINIT
FlashRegsFile :{}> flash_regs、 type = NOINIT
SciRegsFile :{}> SCI_REGS、 type = NOINIT
Spi1RegsFile :{}> SPI1_regs、 type = NOINIT
Spi2RegsFile :{}> SPI2_regs、 type = NOINIT
Spi3RegsFile :{}> SPI3_regs、 type = NOINIT
RtiRegsFile :{}> RTI_regs、 type = NOINIT
IommRegsFile :{}> IOMM_regs、 type = NOINIT
VimRegsFile :{}>VIM_REGS, type = NOINIT
VimRamFile :{}> VIM_RAM, type = NOINIT
PcrRegsFile :{}> pcr_regs、 type = NOINIT
Sys1RegsFile :{}>SYS1_regs, type = NOINIT
Sys2RegsFile :{}> SYS2_regs, type = NOINIT
EsmRegsFile :{}> ESM_REGS, type = NOINIT
TcRam1RegsFile:{}> TCRAM1_REGS, type = NOINIT
TcRam2RegsFile:{}> TCRAM2_regs, 类型= NOINIT
}

如果需要一些其他信息、请告诉我、并提前感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    简短更新... 仅当.pinit 或.cinit 位于应用'fill'的区域内时、问题才可见。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我使用您的问题链接器命令文件来构建一个简单的程序。  当我使用版本16.9.4.LTS (您使用的版本)时、我不会看到相同的诊断。  但链接器会挂起。  因此、虽然我不确定我是否遇到了相同的问题、但我认为这很可能。  当我使用版本16.9.11.LTS 时、一切都正常工作。

    我建议您升级到编译器的更高版本。  如果您升级到最新版本18.12.1.LTS、这将是理想之选。  如果这不实用、请考虑升级到版本16.9.11.LTS。  此版本与16.9.4.LTS 相同、但错误修复除外。

    谢谢、此致、

    乔治

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

    您好、George、

    感谢您的快速响应。

    我将尝试另一个编译器版本、您能给我一个提示吗?我可以在哪里获得16.9.11.LTS (哪个 CCS 版本)?

    但是、说实话、对于我和我们公司来说、更改编译器并不是很重要、这意味着需要使用新的工具资质(DO178)。

    也许可以使用一些权变措施? 所有需求-用某种模式填充段未使用的闪存空间、以防止读取访问期间 ECC 触发(完整性检查所必需)。

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

    [引述 user="Dmitry Tuykov"]您能不能给我一个提示,让我获得16.9.11.LTS

    请参阅文章 编译器安装和选择

    [引用 user="Dmitry Tuykov"]也许可以使用一些变通办法吗?

    不幸的是,我不能想到其中一个。  我提交 了 SDOWP 系统中的条目 CodeGen-5940。  我使用的测试用例是我先前讨论的测试用例。  虽然不太可能、但我可能不会遇到相同的错误。  通常情况下、描述错误也会显示一种权变措施。  欢迎您在我的签名中使用下面的 SDOWP 链接关注此条目。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我尝试了16.9.11.LTS、它按预期工作。
    当然、很遗憾听到没有权变措施、但我认为我们将能够以某种方式更改链接器版本。

    非常感谢、我认为话题可以结束。