[ARM入门] keil MDK中scatter file map的问题:怎样让mdk在多个执行域自动填充?

[复制链接]
2154|0
 楼主| kurbylee 发表于 2016-2-3 13:19 | 显示全部楼层 |阅读模式
问题描述:
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肯定会跨区,此时我该怎么安排呢?

谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

2

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部