这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » S3C44B0X,44BINIT S3C44B0X中44BINIT.S中的问题?

共2条 1/1 1 跳转至

S3C44B0X,44BINIT S3C44B0X中44BINIT.S中的问题?

院士
2006-09-17 18:14:16     打赏
S3C44B0X,44BINIT S3C44B0X中44BINIT.S中的问题?



关键词: S3C44B0X     44BINIT     44BINIT.    

院士
2006-12-22 22:43:00     打赏
2楼
问 请问,在44binit。s中
InitStacks:
    mrs     r0,cpsr
    bic     r0,r0,#MODEMASK|NOINT
    orr     r1,r0,#UNDEFMODE
    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|IRQ_MODE
    msr     cpsr_cxsf,r1      /* IRQMode */
    ldr     sp,=IRQStack

    orr     r1,r0,#FIQMODE|FIQ_MODE
    msr     cpsr_cxsf,r1      /* FIQMode */
    ldr     sp,=FIQStack

    bic     r0,r0,#MODEMASK
    orr     r1,r0,#SVCMode  
    msr     cpsr_cxsf,r1      /* SVCMode */
    ldr     sp,=UserStack
我现在没有用到操作系统,我能否只设定一个用户模式,把其他的删除呢?应该如何修改44binit.s?

我现在程序出现问题:SP指向了0XC7FF400,这时,程序死在了中断(定时器0,1,2)出口处?是不是因为堆栈空间
太小?   1: 只设置一个的话就得保证处理器绝对不会有别的模式

请在反汇编模式下看中断出栈的代码 2: 反汇编模式下的现象?我的定时器1中断,多次进入中断后就会出现死在中断出口;
进入反汇编后看到始终执行下面
0x0c0111b8        ldmdb         fp, {r2, r3, fp, sp, lr}
0x0c0111bc        subs          pc, lr, #4
请问,这是什么原因呢?是栈有问题吗?每次SP都是0xc7ff400?
可能的原因是什么呢? 3: 此时lr=0xc0111c0 4: 0x0c0111bc        subs          pc, lr, #4pc = 0x0c0111c0-4 = 0x0c0111bc  5: 44b0x44b0x开始进入的就是SVCmode 6: 请再帮忙看看!我的程序都是用C语言写的。我现在用了44b0x的PWM定时器中断;它偶尔会出现死在中断退出的地方。反汇编如下面
0x0c0111b8        ldmdb         fp, {r2, r3, fp, sp, lr}
0x0c0111bc        subs          pc, lr, #4
当前的lr=0x0x0111c0;他就死在了SUBS这一条。请问这是什么原因呢?
是不是在中断入口和出口要自己写压栈和出栈的汇编程序呢?

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]