新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 缩短μC/OS-II实时内核中断关闭时间的方法设计

缩短μC/OS-II实时内核中断关闭时间的方法设计

作者: 时间:2012-05-07 来源:网络 收藏

2.2 增加任务重调度函数OS_Resched

任务重调度函数OS_Resched的伪代码如下:

任务重调度函数在以下两处执行:

(1) 当μC/OS-II将当前任务控制块压栈,而还没有将最高优先级任务的控制块弹出栈时执行,因为这时在系统循环函数数组里有可能还有未执行的函数,这些函数的执行有可能导致另外一个更高优先级任务的就绪。

(2) 在中断服务函数的末尾执行。如果μC/OS-II中断返回函数返回的是一个真值,则表示需要执行重调度函数,这时就要执行重调度函数。

2.3 中断返回函数OSIntExit的修改

中断返回函数OSIntExit的伪代码如下:

原函数的返回是void,而改动后的函数返回一个布尔量,用来表示下一步是要正常中断返回(返回布尔假值时),还是要调用任务重调度函数(返回布尔真值时);同时,改动后还增加对系统状态标志的查询,如果发现系统在临界操作状态,则直接返回布尔假值。所以在中断服务程序的最后不是象原来那样简单的调用,而是调用后根据返回值作相应的处理。

2.4 信号量发送函数OSSemPost的修改

这里将以信号量发送函数OSSemPost为例来描述对可在中断中调用而又会对临界区操作的函数的改进。对于μC/OS-II中的其他函数,改进的方法大致相同。

信号量发送函数OSSemPost的伪代码如下:

在这里,改动后的函数将先判断系统状态标志,如果系统在临界区操作状态,则将临界操作作为另一个函数放入全局函数循环数组,等待在任务调度时执行,如果不在临界区操作状态,则关中断后将系统状态标志置位,然后开中断进行原函数的那些临界操作和任务调度。



评论


相关推荐

技术专区

关闭