打印

被中断打断后,程序不继续运行。

[复制链接]
1577|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ma1986|  楼主 | 2009-10-21 08:48 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
沙发
zchong| | 2009-10-21 20:29 | 只看该作者
是不是一直处于中断状态?比如没有个地方忘记清除中断了

使用特权

评论回复
板凳
ma1986|  楼主 | 2009-10-23 10:46 | 只看该作者
2# zchong
中断是每次一进入就清除了。
而且我的中断进进出出也上千次了~~~

使用特权

评论回复
地板
biao.l| | 2009-10-24 16:06 | 只看该作者
堆栈空间太小

使用特权

评论回复
5
ma1986|  楼主 | 2009-10-26 17:13 | 只看该作者
4# biao.l
DRAM_END EQU 0x0c800000
AREA RamData, DATA, READWRITE
^ (DRAM_END - 0x800)
UserStack # 256
SVCStack # 256
UndefStack # 256
AbortStack # 256
IRQStack # 256
FIQStack # 256
EXPORT UserStack
EXPORT SVCStack
EXPORT UndefStack
EXPORT AbortStack
EXPORT IRQStack
EXPORT FIQStack
MAP (DRAM_END - 0x100)
SysRstVector # 4
UdfInsVector # 4
SwiSvcVector # 4
InsAbtVector # 4
DatAbtVector # 4
ReservedVector # 4
IrqSvcVector # 4
FiqSvcVector # 4
EXPORT SysRstVector
EXPORT UdfInsVector
EXPORT SwiSvcVector
EXPORT InsAbtVector
EXPORT DatAbtVector
EXPORT ReservedVector
EXPORT IrqSvcVector
EXPORT FiqSvcVector

;****************************************************
;初始化堆栈
;Do not use DRAM,such as stmfd,ldmfd......
;SVCstack is initialized before
;Under toolkit ver 2.50, 'msr cpsr,r1' can be used instead of 'msr cpsr_cxsf,r1'

mrs r0, cpsr
bic r0, r0, #(MODEMASK|NOINT)

orr r1, r0, #UNDEFMODE|NOINT
msr cpsr_cxsf, r1  ;UndefMode
ldr sp, =UndefStack

orr r1, r0, #ABORTMODE|NOINT
msr cpsr_cxsf, r1  ;AbortMode
ldr sp, =AbortStack

orr r1, r0, #IRQMODE|NOINT
msr cpsr_cxsf, r1  ;IRQMode
ldr sp, =IRQStack

orr r1, r0, #FIQMODE|NOINT
msr cpsr_cxsf, r1  ;FIQMode
ldr sp, =FIQStack
  
orr r1, r0, #SVCMODE  ;enable irq,fiq
; orr r1, r0, #SVCMODE|NOINT ;disable irq, fiq
msr cpsr_cxsf,r1  ;SVCMode
ldr sp, =SVCStack
;USER mode is not initialized.
;未初始化用户模式栈,程序使用SVC模式
;****************************************************


按照这个初始代码,我是不是还可以给用户模式的堆栈再分配256字节的堆栈空间吗???只需要改成UserStack # 512 就好了吗??
我程序的嵌套比较深,可能有10多层的调用。怕堆栈不够。

堆栈太小,会导致进入其他中断无法进入吗???

使用特权

评论回复
6
flashdyc| | 2009-10-26 21:27 | 只看该作者
堆栈小程序可能直接就飞了。。

使用特权

评论回复
7
ma1986|  楼主 | 2009-10-27 09:54 | 只看该作者
6# flashdyc
问个问题啊。。我们用户模式下的程序堆栈,我调用函数的过程中,每个函数的局部变量都会加入到该堆栈中吗???比如我在某函数内int a[50];然后在该函数中再调用其他函数的时候,压栈,会将a[50]压到栈里吗???

使用特权

评论回复
8
flashdyc| | 2009-10-27 20:04 | 只看该作者
a[50]本身就在栈里,定义的时候就进去了,你可以看反汇编程序

使用特权

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

本版积分规则

48

主题

101

帖子

1

粉丝