共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 跳转至页
回复
我要赚赏金打赏帖 |
|
|---|---|
| 28BYJ-48机械臂实现人脸跟随被打赏¥24元 | |
| 基于RK3506B的片温识读功能的实现被打赏¥25元 | |
| 【瑞萨RA8D1测评】基于FreeRTOS的lvgl移植教程被打赏¥29元 | |
| 电子价签墨水屏开发被打赏¥35元 | |
| 【Ozone】RTT 打印终端使用被打赏¥29元 | |
| BMS保护板绝缘检测功能-不平衡电桥技术绝缘电阻检测设计与实现被打赏¥34元 | |
| 给28BYJ-48三自由度机械臂加一个网页控制台被打赏¥32元 | |
| 用28BYJ-48电机从零搭一台三自由度机械臂被打赏¥33元 | |
| 【英飞凌开发经验】ModusToolbox配置EdgeTalk外设被打赏¥27元 | |
| 基于BQ76952PFBR的BMS保护板热插拔损坏的原因和处理措施被打赏¥32元 | |
我要赚赏金
