打印
[ZLG-ARM]

存储空间散转的问题

[复制链接]
1857|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
云痕|  楼主 | 2008-3-24 22:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
1,我用的是ARM Executable Image for LPC2200模板,未添加任何代码时,ARM Linker里的Scatter选mem_c.scf,编译显示 Error:L6203E:Entry point
(0x80000000)lie within non-root region ERAM
这是什么原因啊?加另外2个*.scf都是可以正常编译的

2,Startup.s中
        AREA    HeapTop, DATA, NOINIT
top_of_heap
   这段代码,声明了一个DATA, NOINIT的区域HeapTop,可似乎没分配空间给它,top_of_heap后面没跟 SPACE **,
能理解成HeapTop不占用任何空间,top_of_heap仅指向大小为0的HeapTop区域首地址么?

3,mem_c.scf中,
ROM_LOAD 0x0
{
//将vectors放在以0x00000000 为首地址的区域,
//此区域类型为ROM_EXEC(执行ROM?),作为RO段?
    ROM_EXEC 0x00000000  //ROM_EXEC,IMAR都是ADS关键字?
   {
        Startup.o (vectors, +First)
        * (+RO)
    }

    IRAM 0x40000000  //“IRAM”说明之后的地址是片内的RAM?此段是将MyStacks区域放在以0x40000000为首的区域?
    {
        Startup.o (MyStacks)
    }

//STACKS_BOTTOM +0 如何理解?是从上面的0x40000000开始,便宜MyStacks
//大小,然后再偏移+0,作为StackBottom区域的首地址?
//MyStacks区域占20字节,StackBottom从0x40000014开始?
   STACKS_BOTTOM +0 UNINIT 
    {
        Startup.o (StackBottom)
    }

    STACKS 0x40004000 UNINIT 
    {
        Startup.o (Stacks)
    }

    ERAM 0x80000000 //ERAM表明后面是外扩RAM起始地址?并将以此地址为首的区域作为RW和ZI段?
    {
        * (+RW,+ZI)
    }

    HEAP +0 UNINIT //Heap区域从0x80000000开始?占1字节?
    {
        Startup.o (Heap)
    }

//        AREA    Heap, DATA, NOINIT
// bottom_of_heap    SPACE   1
    HEAP_BOTTOM 0x80080000 UNINIT //将0x80080000作为HeapTop区域的首地址么?
    {
        Startup.o (HeapTop)
    }
}

准备换2214芯片了,这样理解.scf文件是否有问题?有人能讲解下么?论坛上没找到相关的说明

相关帖子

沙发
zlgarm| | 2008-3-25 10:07 | 只看该作者

回复如下

云痕,您好!
    对于您的问题作如下回答:
    1、ROM_EXEC,IMAR不是ADS的关键字,是用户自定义的名称;
    2、对于分散加载文件的资料您可以参考《ARM开发工具ADS原理及应用》一书,该书有详细说明分散加载的原理。

                      on duty:zlgarm_wuzhijian

使用特权

评论回复
板凳
huangbingg| | 2008-3-25 20:21 | 只看该作者

问下周工:

arm里面,我们一般指定:栈是向下生长,堆是向上生长的吧???

使用特权

评论回复
地板
huangbingg| | 2008-3-26 11:43 | 只看该作者

顶下,嘿嘿

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

28

主题

75

帖子

0

粉丝