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

[复制链接]
1317|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

粉丝
快速回复 在线客服 返回列表 返回顶部