打印
[ZLG-ARM]

关于在分撒加载中堆栈地址的设置

[复制链接]
1610|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xiuzhou|  楼主 | 2008-1-16 13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

工程模板中mem_c.scf如下:
ROM_LOAD 0x0
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }

    IRAM 0x40000000
    {
        Startup.o (MyStacks)
        * (+RW,+ZI)
    }

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

    STACKS 0x40004000 UNINIT
    {
        Startup.o (Stacks)
    }
}
由于堆栈是向下生长的,因此STACKS 的起始地址设置为0x40004000可以理解,但是为什么HEAP的起始地址是接IRAM的呢,如果向下生长的话不是把变量的一部分给覆盖了吗?是不是应该这样写:
ROM_LOAD 0x0
{
    ROM_EXEC 0x00000000
    {
        Startup.o (vectors, +First)
        * (+RO)
    }

    IRAM 0x40000000
    {
        Startup.o (MyStacks)
        * (+RW,+ZI)
    }

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

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

相关帖子

沙发
xiuzhou|  楼主 | 2008-1-16 15:00 | 只看该作者

明白了

单区模型的堆栈区中,栈(stack)是向下生长的,堆(heap)是向上生长的

使用特权

评论回复
板凳
biao.l| | 2008-1-17 17:40 | 只看该作者

请假一个在C中一个输入段的用法

ADS文档上说用#prama arm 定义一个输入段,可不是没说怎么用,楼主指点一下。另main()能生成一个输入段,段名是什么,用main 是错误的。

使用特权

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

本版积分规则

16

主题

33

帖子

1

粉丝