打印
[ARM入门]

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

[复制链接]
1855|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

粉丝