共2条
1/1 1 跳转至页
S3C44B0X,44BINIT S3C44B0X中44BINIT.S中的问题?
问
请问,在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这一条。请问这是什么原因呢?
是不是在中断入口和出口要自己写压栈和出栈的汇编程序呢?
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 跳转至页
回复
有奖活动 | |
---|---|
【有奖活动】分享技术经验,兑换京东卡 | |
话不多说,快进群! | |
请大声喊出:我要开发板! | |
【有奖活动】EEPW网站征稿正在进行时,欢迎踊跃投稿啦 | |
奖!发布技术笔记,技术评测贴换取您心仪的礼品 | |
打赏了!打赏了!打赏了! |