我正在尝试使用TRICORE TC275板上的任务编译器编译一个嵌入式C项目。使用链接器选项LINK_OPT += --user-provided-initialization-code时,出现以下错误:

ltc E122: copy table construction error for "task1": The linker detected references to the copytable, while options indicate that custom initialization code is used.

可复制是什么意思?
我该怎么解决?
链接器代码段:
/* Linker script for the TRICORE system. */

architecture TC
{
    endianness
    {
        little;
    }

    space linear
    {
        id = 1;
        mau = 8;

        map (src_offset=0x00000000, dest_offset=0x00000000, size=4G, dest=bus:fpi_bus);

        copytable (align = 1 << 2, copy_unit = 1, dest = linear);
    }

    bus fpi_bus
    {
        mau = 8;
        width = 32;
    }
}

最佳答案

在任务编译器中,copytable用于在启动时将部分(.data等)从ROM复制到RAM。
您的程序可能正在使用自定义初始化代码来实现这一点。
从链接器脚本中删除“copytable”引用不会产生错误。
或者,您可以删除链接器选项

LINK_OPT += --user-provided-initialization-code

如果您不打算使用自定义初始化代码,并使用链接器提供的copytable在启动时将常量从ROM复制到RAM。

关于c - 链接器可复制的含义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48183971/

10-12 16:11