Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在多个内存区域中放置程序代码?_C_Linker_Ld_Linker Scripts - Fatal编程技术网

C 如何在多个内存区域中放置程序代码?

C 如何在多个内存区域中放置程序代码?,c,linker,ld,linker-scripts,C,Linker,Ld,Linker Scripts,有几个内存区域 MEMORY { rom1 (rx) : ORIGIN = 0x00000000, LENGTH = 256k rom2 (rwx) : ORIGIN = 0x10000000, LENGTH = 16M ram1 (rw!x) : ORIGIN = 0x20000000, LENGTH = 64k ram2 (rwx) : ORIGIN = 0x21000000, LENGTH = 16M } 如何将所有输入文件的.text部分

有几个内存区域

MEMORY
{
  rom1 (rx)   : ORIGIN = 0x00000000,    LENGTH = 256k
  rom2 (rwx)  : ORIGIN = 0x10000000,    LENGTH = 16M
  ram1 (rw!x) : ORIGIN = 0x20000000,    LENGTH = 64k
  ram2 (rwx)  : ORIGIN = 0x21000000,    LENGTH = 16M
}
如何将所有输入文件的.text部分放置在rom1的内存区域中,如果没有足够的空间,则将剩余的字符放置在rom2中?在输出部分的说明中只能指定一个内存区域

  .text :
  {
    *(.text)
  } > rom1

据我所知,没有办法将一个部分分布在几个非连续的内存区域上

正如所建议的,应该将该部分划分为几个部分,然后分配给内存区域


一般来说,这是一个关于不同可能性的非常方便的文档。

据我所知,没有办法将一个节分布在几个非连续的内存区域上

正如所建议的,应该将该部分划分为几个部分,然后分配给内存区域


一般来说,这是一个关于不同可能性的非常方便的文档。

根据这是哪个CPU,可能有支持在多个区域中具有分区的链接器的商业替代方案。因此,链接器尝试将某个对象放置在区域1中,直到它不再适合该区域,然后将其放置在区域2中。在我的经验中,这是一个比较常见的特性,我经常在各种微控制器系统上使用它。根据这是哪种CPU,可能会有支持在多个区域中具有分区的链接器的商业替代方案。因此,链接器尝试将某个对象放置在区域1中,直到它不再适合该区域,然后将其放置在区域2中。根据我的经验,这是一个比较常见的特性,我经常在各种微控制器系统上使用它。