打印
[开发工具]

请问浪淘沙,在IAR EWARM中如何设置堆栈大小的

[复制链接]
7032|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
zhq_0510|  楼主 | 2007-9-10 19:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请问浪淘沙,在IAR EWARM中如何设定堆栈大小呢
我打开demo程序,看到例程设定堆栈大小程序始下?

;******************************************************************************
; ARM处理器支持7种运行模式,其中6种是特权模式,一种是用户模式。除用户模式和系统
; 模式外其他都是异常模式。每种处理器模式使用不同的寄存器组,并有自己独立的物理
; 寄存器R13(SP)。所以在初始化时要将SP指向其运行模式的栈空间。
;******************************************************************************

    MODULE    ?program_start       ; Begins a library module
        RSEG    IRQ_STACK:DATA(2)
                  RSEG    FIQ_STACK:DATA(2)
        RSEG    UND_STACK:DATA(2)
        RSEG    ABT_STACK:DATA(2)        
        RSEG    SVC_STACK:DATA(2)
        RSEG    CSTACK:DATA(2)
        RSEG    ICODE:CODE:NOROOT(2)  ; NOROOT指定此段中如
        PUBLIC    __program_start       ; Export symbles to other module
        EXTERN    ?main                 ; Import an external symble
                CODE32                        ; Generate 32-bit ARM instruction





        MSR     CPSR_c, #Mode_ABT|F_Bit|I_Bit
        ldr     sp,=SFE(ABT_STACK) & 0xFFFFFFF8     ; End of ABT_STACK

        MSR     CPSR_c, #Mode_UNDEF|F_Bit|I_Bit
        ldr     sp,=SFE(UND_STACK) & 0xFFFFFFF8     ; End of UND_STACK

        MSR     CPSR_c, #Mode_SVC|F_Bit|I_Bit
        ldr     sp,=SFE(SVC_STACK) & 0xFFFFFFF8     ; End of SVC_STACK

......................
SFE()到的是一个怎样的函数,我在library 中找不到
仿真时可以看到堆栈大小为0x100,请问这是怎么得来的呀.



沙发
一览| | 2007-9-10 19:41 | 只看该作者

在*.xcl文件里看看

使用特权

评论回复
板凳
zhq_0510|  楼主 | 2007-9-10 21:16 | 只看该作者

谢谢 一览 兄回复

使用特权

评论回复
地板
ryansheng| | 2007-9-11 14:25 | 只看该作者

Re

SFE是库函数,可以在EWARM_CompilerReference.pdf中查找。
各堆栈的大小都是在xcl文件里定义的。

使用特权

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

本版积分规则

82

主题

120

帖子

2

粉丝