中断管理那些事儿

本文分享自中移OneOS微信公众号《中断管理》。

中断是指计算机运行过程中,出现某些意外情况需及时处理时,CPU能自动停止正在运行的程序并转入处理意外情况的程序,处理完毕后又返回原被暂停的程序继续运行。中断是一种异常,正确地处理异常,避免错误发生是提高软件稳定性非常重要部分。

中断工作机制

中断向量表是所有中断处理程序的入口,一般是在地址空间的0地址,因为中断处理与芯片架构强相关,下文以Cortex-M系列来进行说明。

在Cortex-M内核上,所有中断都采用中断向量表的方式进行处理。当一个中断触发时,处理器能判定到是哪个中断源,然后查找中断向量表跳转到相应的位置进行处理。这就要求每个中断服务程序的地址指针必须挂接在统一的地址上,这个地址必须要设置到中断向量偏移寄存器中,默认是0x08000000。

中断处理过程

在操作系统中断管理中,将中断处理程序分为3个部分,中断前导程序、用户中断服务程序、中断后续程序。

中断前导程序

保存运行现场,不同CPU架构的实现方式有差异。对于Cortex-M来说,该工作由硬件自动完成,软件不需要处理,当一个中断触发时,处理器会自动将当前运行部分的上下文寄存器(PSR、PC、LR、R12、R3-R0)压入中断栈中。

调用os_interrupt_enter接口,该函数是将全局变量os_interrupt_nest加1,用它来实现中断嵌套的记录,代码如下所示:

v
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值