共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 【FreeRtos】FreeRtos + MPU模块的配置使用被打赏¥32元 | |
| 【分享开发笔记,赚取电动螺丝刀】墨水屏文本显示器被打赏¥25元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取磁力计iis2mdc被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取LPS22HH气压、温度被打赏¥19元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX读取STTS751温度被打赏¥17元 | |
| 【STEVAL-STWINKT1B】:结合STMcubeMX软件读取HTS221温湿度被打赏¥22元 | |
| M5PAPERESP32EINKDEVKIT评测|使用MicroPython开发M5Paper被打赏¥15元 | |
| OK1126B-S开发板下以导航按键控制云台/机械臂姿态调整被打赏¥29元 | |
| 【树莓派5】便携热成像仪被打赏¥36元 | |
| 【树莓派5】环境监测仪被打赏¥35元 | |
我要赚赏金
