打印
[ZLG-ARM]

求助关于堆和栈的分配地址问题

[复制链接]
1721|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
softboy|  楼主 | 2008-3-23 14:55 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
;/* 分配堆栈空间 */
        AREA    MyStacks, DATA, NOINIT, ALIGN=2
SvcStackSpace      SPACE   SVC_STACK_LEGTH * 4  ;Stack spaces for Administration Mode 管理模式堆栈空间
IrqStackSpace      SPACE   IRQ_STACK_LEGTH * 4  ;Stack spaces for Interrupt ReQuest Mode 中断模式堆栈空间
FiqStackSpace      SPACE   FIQ_STACK_LEGTH * 4  ;Stack spaces for Fast Interrupt reQuest Mode 快速中断模式堆栈空间
AbtStackSpace      SPACE   ABT_STACK_LEGTH * 4  ;Stack spaces for Suspend Mode 中止义模式堆栈空间
UndtStackSpace     SPACE   UND_STACK_LEGTH * 4  ;Stack spaces for Undefined Mode 未定义模式堆栈


        AREA    Heap, DATA, NOINIT
bottom_of_heap    SPACE   1

        AREA    StackBottom, DATA, NOINIT
bottom_of_Stacks    SPACE   1

        AREA    HeapTop, DATA, NOINIT
top_of_heap

        AREA    Stacks, DATA, NOINIT
StackUsr

这是启动代码里关于堆栈的代码.

ROM_LOAD 0x80000000
{
    ROM_EXEC 0x80000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }


    IRAM 0x40000000
    {
        Startup.o (MyStacks)
    }

    STACKS_BOTTOM +0 UNINIT
    {
        Startup.o (StackBottom)
    }

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

    ERAM 0x80040000
    {
        * (+RW,+ZI)
    }

    HEAP +0 UNINIT
    {
        Startup.o (Heap)
    }

    HEAP_BOTTOM 0x80080000 UNINIT
    {
        Startup.o (HeapTop)
    }

}

这个是在外部RAM中调试的分散加载文件.

问题:1.在启动代码里为什么Heap 和 StackBottom段都有一句分配一个字节的代码,而HeapTop和Stacks段没有呢?
     2.分散加载文件里Startup.o (Stacks)  Startup.o (HeapTop),这两个段就一个标号什么都没有呀?
     3.不理解    
    HEAP_BOTTOM 0x80080000 UNINIT
    {
        Startup.o (HeapTop)
    }
    怎么就能将堆顶放到0x80080000处,还有堆的大小是多少呢?

相关帖子

沙发
softboy|  楼主 | 2008-3-24 14:09 | 只看该作者

不管怎么样我还是希望把上面的问题搞懂.

我会吧我还以为keil是趋势呢,不管怎么样我还是希望把上面的问题搞懂.

使用特权

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

本版积分规则

14

主题

28

帖子

0

粉丝