OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3124|回复: 0

uCOS-II中PendSV_Handler和SysTick_Handler

[复制链接]

16

主题

253

帖子

0

精华

高级会员

Rank: 4

积分
565
金钱
565
注册时间
2013-10-16
在线时间
52 小时
发表于 2018-5-9 09:44:00 | 显示全部楼层 |阅读模式
uCOS-II中PendSV_Handler和SysTick_Handler 看不太明白,留着继续看,

在uCOS的移植中有两个函数是移植工作的核心,相当于将裸机程序与操作系统的“神经”搭在一起,使得操作系统得以运行,这两个系统中断分别为:

1.SysTick_Handler:滴答定时器中断,这个中断相当于操作系统的心脏,给操作系统提供心跳,滴答定时器会一直不停的不断触发中断,在它的中断服务函数中,提供进程/任务的上下文切换,和任务调度的工作,简单描述如下图:

这是最简单的调度模式,如果在滴答定时器中断的过程中,发生了其他的中断,该怎么办?很显然,对于一个实时操作系统,中断的优先级必然是高的,不能为了任务切换而延迟响应其他的中断,所以早期的操作系统大多检测当前是否有中断在活跃,只有在没有任何中断需要响应时,才执行上下文切换,显然这样是不太好的,毕竟中断是有突发性的。这样就引入了PendSV,叫可挂起系统中断。

PendSV的作用是会自动延迟上下文切换的请求,直到其他的ISR都完成后才会放行,其实它相当于上下文切换的缓冲作用,为了实现这个机制,需要将PendSV编程为最低优先级。当OS检测到某IRQ正在活动,并且被SysTick抢占,它将触发一个PendSV异常,以便缓期执行上下文切换,过程如下图所示:



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-2 06:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表