新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > μC/OS-II在80x86上的移植

μC/OS-II在80x86上的移植

作者: 时间:2016-10-08 来源:网络 收藏

最大运行时间是当前任务挂起自己,此时将进行任务切换。

OSTaskQuery()

该函数的运行时间总是一样的。OSTaskQuery()执行的操作是获取任务的任务控制块OS_TCB。如果OS_TCB中包含所有的操作项,需要占用45字节(大模式编译)。

OSTimeDly()

如果延时时间不为0,则OSTimeDly()运行时间总是相同的。此时将进行任务切换。

如果延时时间为0,OSTimeDly()不清除OSRdyGrp中的任务就绪位,不进行延时操作,直接返回。

OSTimeDlyHMSM()

如果延时时间不为0,则OSTimeDlyHMSM()运行时间总是相同的。此时将进行任务切换。

此外,OSTimeDlyHMSM()延时时间最好不要超过65,536个时钟节拍。也就是说,如果时钟节拍发生的间隔为10ms(频率100Hz),延时时间应该限定在10分55秒350毫秒内。如果超过了上述数值,该任务就不能用OSTimeDlyResume()函数唤醒。

OSTimeDlyResume()

最小运行时间是当被唤醒的任务优先级低于当前任务,此时不进行任务切换。

最大运行时间是当唤醒了一个优先级更高的任务,此时将进行任务切换。

OSTimeTick()

前面我们讨论的OSTickISR()函数其实就是OSTimeTick()与OSIntEnter()、 OSIntExit()

的组合。OSTickISR()的时间占用情况就是OSTimeTick()的占用情况。以下讨论假定系统中有μC/OS-II允许的最大数量的任务(64个)。

最小运行时间是当64个任务都不在等待延时状态。也就是说,所有的任务都不需要OSTimeTick()处理。

最大运行时间是当63个任务 (空闲进程不会延时等待) 都处于延时状态, 此时OSTimeTick()

需要逐个检查等待中的任务,将计数器减1,并判断是否延时结束。例如在最坏的情况,设时钟节拍间隔10ms,OSTimeTick()需要约600μs,占了6%的CPU利用率

表 9.4 各函数的执行时间(按关闭中断时间排序).

表9.5 各函数的执行时间(按最大运行时间排序).


上一页 1 2 3 4 5 6 7 8 9 下一页

关键词:

评论


相关推荐

技术专区

关闭