共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 基于MCP23S17的输入输出功能模块控制被打赏¥20元 | |
| 【S32K3XX】SPD 软件包使用Link文件修改被打赏¥22元 | |
| Switch-Case局部变量定义问题被打赏¥23元 | |
| 基于米尔TIAM62L开发板的串口通信及应用被打赏¥20元 | |
| PCF8574功能模块及其使用被打赏¥20元 | |
| 传感器LSM6DSO及LIS3MDL的功能检测被打赏¥18元 | |
| LPS25HB气压传感器及其检测被打赏¥18元 | |
| HTS221温湿度传感器及其检测被打赏¥18元 | |
| 【S32K3XX】HSE FW 版本更新被打赏¥21元 | |
| 基于ArduinoUNO开发板的AT24C02读写测试被打赏¥16元 | |
我要赚赏金
