0

我正在为飞思卡尔 iMX6 板开发小型 hello world 应用程序,它将从片上 RAM 运行。我可以从 OCRAM 运行完整的代码,但是如果我修改链接描述文件以在外部 DDR ram 的内存空间中生成一个数据段,输出二进制文件的大小会突然从 114 KB 增加到 259 MB。如果该部分是在 OCRAM 中创建的,它就可以正常工作。它肯定与链接有关,但我找不到原因以及如何避免它。以下是链接描述文件中的选定部分:

`MEMORY
{
    OCRAM (rwx) : ORIGIN = 0x00900000, LENGTH = 256K
    DDR (rwx)   : ORIGIN = 0x10000000, LENGTH = 2048M
}`

.
.
.
.ex_ram (ORIGIN(DDR)) : { . = . + 0x10; } > DDR

在我看来,这与 OCRAM 和 DDR ram 地址空间之间的巨大差距有关,但无法纠正!

4

1 回答 1

2

当然可以,您要求它将文件转换为二进制文件对吗?因此,即使您在数据段中只有一个字节的数据,您也需要在 .bin 文件中有 (0x10000000-0x00900000)+(数据量) 字节......原始二进制文件格式没有任何地址信息因此它需要覆盖所有可加载的段并在其间填充填充,因此您可以获得文件的大小(0x10000000-0x00900000)+(数据量)。做一个实验并将你的 0x10000000 更改为 0x20000000,你会看到一个文件大小超过两倍。

如果您使用 elf 或 coff 或 intel hex 或 srec 或一些包含地址和数据并且不需要在文件中的段之间填充的二进制格式,那么您的文件将保持小...

于 2014-04-02T13:44:06.803 回答