【发布时间】:2013-03-21 13:47:10
【问题描述】:
未初始化的变量包含在 BSS 部分中。
第一个问题:分配后他们会留在那里吗?
第二个问题/问题:我想将此部分加载到外部 SDRAM 中。变量正确地位于内存映射中,但充满了奇怪的值,我无法存储任何其他数字。你对这个问题有什么想法吗?
/* Memory Map */
MEMORY{
VECTORS (X) : origin=0x00000000 length=0x00000020
FLASH0 (RX) : origin=0x00000020 length=0x0017FFE0
FLASH1 (RX) : origin=0x00180000 length=0x00180000
STACKS (RW) : origin=0x08000000 length=0x00001500
RAM (RW) : origin=0x08001500 length=0x0003EB00
SDRAM (RW) : origin=0x80000000 length=0x00800000
}
/*----------------------------------------------------------------------------*/
/* Section Configuration */
SECTIONS{
.intvecs : {} > VECTORS
.text : {} > FLASH0 | FLASH1
.const : {} > FLASH0 | FLASH1
.cinit : {} > FLASH0 | FLASH1
.pinit : {} > FLASH0 | FLASH1
.bss : {} > SDRAM
.data : {} > RAM
.sysmem : {} > RAM
}
【问题讨论】:
-
约阿希姆:错了...仔细阅读数字:)
-
另外,请向我们提供有关该系统的更多详细信息。即使您将
.bss正确移动到SDRAM 地址空间,在执行crt0时SDRAM可能尚未配置等。所以,请给我们更多信息! -
@Anonymous 是的,在我看到你的评论之前就注意到了。 :)
-
根据 CPU 的不同,您可能需要在特殊寄存器中设置有效的可寻址范围。
-
您的系统使用 MMU 吗?如果是这样,可能那些奇怪的值是因为您正在查看的虚拟地址不是已经初始化的物理地址?