问题描述:
LR_IROM0 ROM_OFF0 ROM_SIZE0
{
ER_IRAM0 RAM_OFF0 RAM_SIZE0
{
.ANY(+RO)
; .ANY(+RW) ;RW0
; .ANY(+ZI)
}
ER_IRAM1 RAM_OFF1 EMPTY RAM_SIZE1 ;一段保留区域
{
;
}
ER_IRAM2 RAM_OFF2 RAM_SIZE2
{
; .ANY(+RO)
.ANY(+RW) ;RW2
;.ANY(+ZI)
}
ER_IRAM3 RAM_OFF3 EMPTY RAM_SIZE3 ;一段保留区域
{
;
}
ER_IRAM4 RAM_OFF4 RAM_SIZE4
{
; .ANY(+RO)
;.ANY(+RW) ;RW4
.ANY(+ZI)
}
}
如上所示,RAM分成5个部分,在总体代码量(RW+RO+ZI)小于可用ram的情况下。
问题
1》ro+rw的尺寸大于RAM0,但是小于RAM0+RAM2,如果我将RAM0,RAM2都打开+RW,+RO,为什么keil编译后连接阶段总是会超出范围呢?keil总是将一堆.o的数据填入RAM0,或者RAM2,结果告诉我填不下,可是很明显它调配一下不同的.o的位置,肯定可以放下,我怎样才能让他自动调配呢?
2》我现在ro<RAM0,RW<RAM2,ZI<RAM4,如果每个放一个,编译链接没有什么问题,可是如果RO足够大,或者RW足够大,但是RW+RO>RAM0/RAM2/RAM4,那么RW或者RO肯定会跨区,此时我该怎么安排呢?
谢谢! |