当前位置: 代码迷 >> 驱动开发 >> 请教各位大侠,怎么在嵌入式操作系统,如ucosii中实现任务的定时重置
  详细解决方案

请教各位大侠,怎么在嵌入式操作系统,如ucosii中实现任务的定时重置

热度:129   发布时间:2016-04-28 10:03:30.0
请问各位大侠,如何在嵌入式操作系统,如ucosii中实现任务的定时重置?
在下遇到的问题是这样的:
在嵌入式操作系统中,建立两个不同优先级任务,每个任务最初要求是分别运行0.2s,高优先级的先运行。

当出现以下情况时:
        先运行的高优先级任务提前运行完了——即在0.2s时限到来之前完成既定任务
则:
         剩余的时间等待,直到0.2s耗完,再进行第二个任务
当出现以下情况时:
         先运行的高优先级任务在0.2s时限到来之时还没有运行完
则:
         则系统立即放弃第一个任务,开始运行第二个任务

        第二个任务的调度也符合上面的规律,然后再是,当任务一/二再次开始运行时,重置这个任务,即从这个任务的第一条代码处开始运行。
       
        请问各位大侠, 这个任务调度应该怎么实现?

还有一个问题,在嵌入式操作系统的时间片的轮询功能中,提到若一个任务在第一个时间片内没有运行完,当它的第二个时间片到来之时,是重新开始运行(重置这个任务)的,而不是接着第一个时间片的末尾开始运行的,请问,有没有大侠能够帮组在下解释一下其中的原理?


在此拜谢各位大侠了!
------解决思路----------------------
如果只是俩个task干嘛还用操作系统,如果是多task,在任务切换的地方判断是不是你要求的那个优先级,如果是你要求的优先级,则把要恢复的上下文变成你task刚开始运行的上下文,而不是任务切换时的上下文,这样可以做到任务重置,不管你task跑到什么地方。顺便说下,任务切换周期可以设置成0.2S,或者更低,看你们对精度的要求,其次不要做一些原子操作。
  相关解决方案