c - 链接器可复制的含义

标签 c linker embedded

我正在尝试在 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.
  1. 可复制是什么意思?
  2. 我该如何解决这个问题?

链接器片段:

/* 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;
    }
}

最佳答案

在任务编译器中,复制表用于在启动时将部分(.data 等)从 ROM 复制到 RAM。 您的程序可能正在使用自定义初始化代码来实现此目的。 从链接描述文件中删除“copytable”引用应该不会产生错误。

或者,您可以删除链接器选项

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

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

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

相关文章:

c - 打印转置的程序。程序不工作

c++ - 共享库未在函数中链接

embedded - 寻找二进制图像布局工具

ssl - 反向代理 : How to relay (encrypted) SSL traffic to a (decrypted) TCP connection?

c - STM32 HAL库RTC闹钟

c - 处理共享对象中的全局变量

c - GNU 编译器 KEY_F 未检测到功能键

java - 从手机图库中选择图片

c++ - 静态库调用访问冲突

c++ - 在什么情况下您会得到 __declspec(dllimport) 的未解析外部符号?