打印
[ARM入门]

spv210进入中断的过程是怎么样的?会自动堆栈什么东西

[复制链接]
1095|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
qbasicljx|  楼主 | 2014-2-18 10:24 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
spv210进入中断的过程是怎么样的?会自动堆栈什么东西
看 友善之臂 Tiny210 中断 例程 代码是这样的
IRQ_handle:
    // 设置中断模式的栈
    ldr sp, =0xD0037F80                   //为什么要设置中断模式的栈,原先的栈自动保存了吗?
    // 保存现场
    sub lr, lr, #4                     //修改了 lr ,lr也在进入堆栈时候自动保存了吗
    stmfd sp!, {r0-r12, lr}
    // 跳转到中断处理函数
    bl    irq_handler        
    // 恢复现场
    ldmfd sp!, {r0-r12, pc}^              //这个能恢复到原来的sp吗 原来的lr吗?
gcc使用r0-rx的是那几个,要全部都放入堆栈吗?

相关帖子

沙发
未来是梦| | 2014-2-18 14:27 | 只看该作者
SP 其实是r13. lr 其实是r14.他们都是每个模式独立的。
所以从用户模式进入irq, 不用考虑原来的SP是多少。直接根据你的内存规划,修改sp为自己计划的值。
从中断返回时也不用考虑恢复SP。因你的SP和用户态SP是不一样的r13.

使用特权

评论回复
评分
参与人数 1威望 +1 收起 理由
qbasicljx + 1 很给力!
板凳
qbasicljx|  楼主 | 2014-2-18 20:56 | 只看该作者
以前看过 arm 的书 都忘记了
现在重新看一下 又记得了
谢谢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

113

帖子

0

粉丝