链接描述文件 - RAM 和 ROM 相同的内存 Space

Linker Script - RAM and ROM same Memory Space

我尝试link一个二进制文件。在我的系统上,RAM 和 ROM 地址空间重叠,但在不同的总线上(指令总线与数据总线)。

所以我的目标是得到两个二进制文件。一个是 ROM 内容(程序),一个是 RAM 内容(.data 部分)。我猜想 linker 不能同时生成这两个文件。我的想法是做两个单独的 linker 运行s 但问题是在 'RAM run' 例如它错过了 .text 部分。有没有更方便的方法呢?

这是我的第二个脚本 运行:

OUTPUT_ARCH( "riscv" )

/* initialize helper variables */
RAMSIZE = $RAMSIZE;
RAM_OFFSET = $RAMOFFSET;

MEMORY {
  ram (!rx) : ORIGIN = RAM_OFFSET, LENGTH = RAMSIZE /* size of Data Memory and offset */
}

SECTIONS {
  .sdata : { *(.sdata) } > ram              /* global/static variables */
}

我收到以下错误: 错误:没有为可加载部分“.text”指定内存区域

Is there a more conveniant way to do this?

我找到了链接器先生成程序数据的解决方案。之后,它会填充 .data 部分。 RAM 和 ROM 都以 0x0000 开头。为了避免重叠链接器错误,我用 "ram AT rom tag" 标记了 .data 部分。我的一个脚本 post 处理这个二进制文件,将这两部分分开,并用程序员控制和 SoC 内部编程模块的地址数据标记字节。