关于SVC和PendSV

  1. 这两个都属于异常而不是中断,所谓异常就是ARM内核中断
  2. 这两个中断都是由用户代码主动触发的,即软件触发,没有其它触发源
  3. SVC:系统服务调用,进入该异常可以进入特权模式,即在需要进行各种系统操作的时候主动触发该中断进入该中断内部操作;
  4. PendSV:可延时中断,此中断的特点就是可以延迟执行,它可以等待其它中断都执行完毕之后再执行
  5. 由于SVC和PendSV的这两个特性,一般操作系统都会用到它,正常SVC用于启动系统的第一个任务(空闲任务)然后后续就都在PendSV里面进行任务切换了;但是也有RTOS是不用SVC的,如uCos和RT-Thread
  6. 正是由于PendSV会等待其它所有中断执行完再执行的特性,使其成为了RTOS用于任务切换的首选;为了保证实时性,每个中断都应当被立即响应,所以任务切换就不应当阻碍中断响应,所以用PendSV是最理想的。
  7. RTOS中断处理/任务切换流程:
    1.任务A运行完毕,主动请求任务切换
    2.此时中断产生,进入IRQ处理程序
    3.systick中断发生,由于systick中断优先级高于该IRQ,所以IRQ被打断进入systick中断处理程序
    4.systick处理函数判定有任务需要切换,于是挂起(触发)PendSV中断
    5.systick退出后由于之前的IRQ中断未处理完所以先进入IRQ执行
    6.IRQ处理完毕,进入PendSV进行任务切换
    7.任务切换完成,任务B开始执行
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值