未初始化的变量包含在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
}发布于 2013-03-21 23:09:49
Re Q2,您必须确保在.bss段被运行时启动代码初始化为零之前,您的内存控制器已使用正确的时序和内存设备的映射正确初始化。您还必须确保您的运行时启动代码在位于SDRAM时显式地初始化.bss段。
发布于 2013-03-21 21:52:43
Q1 :是的,他们就在那里。他们为什么要搬家(你为什么想让他们搬家?)
http://en.wikipedia.org/wiki/.bss
Q2:我不完全理解这个问题,但是你确定你的SDRAM真的在工作吗?您的平台是否有允许您读写内存的监视器?
发布于 2013-03-21 21:57:55
Q1:是的,变量将在.bss部分。
Q2:您是否可以尝试将.sysmem移到SDRAM中,并检查您是否可以读写这些值?我怀疑你没有必要的访问权限。
https://stackoverflow.com/questions/15549321
复制相似问题