打印

任务调度周期20ms,那么能有100us的周期型任务么?

[复制链接]
3007|10
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liandao|  楼主 | 2008-2-23 18:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
探讨:
1。200MHZ的ARM9上跑一个RTOS,任务调度周期20ms,不考虑任务调度花费的十几个us,那么能设置一个任务,这个任务没100us执行一次不?(假定任务本身内容执行时间小于100us)。比如这个任务内容这样:
void Task()//伪代码
{
while(1){
    P1.1 ^= 0x01;//使得P1.1输出方波
    Wait(50us);
}
}
我个人感觉是无法完成的,任务调度器每20ms才做一次调度,因此这个任务根本无法按照设计意图完成。除非把这段代码放在一个定时中断中来做,但又不大确定。各位的看法呢?
2。PC上linux的调度周期约是多少来的?也是毫秒级别的么?我看到一段RTLinux的代码,他们的实时Thread能50us执行一次,真的能做到么?还是好的电脑能做到?跟RTLinux设定的调度周期是否有关?而RTlinux的实时部分的调度周期是多少?

相关帖子

沙发
dld2| | 2008-2-23 18:35 | 只看该作者

放在定时中断里恰恰是最合适的做法

但不是说RTOS只能在20ms到达时才调度一次。只要调用OS调用,就可能发生调度。

使用特权

评论回复
板凳
liandao|  楼主 | 2008-2-23 18:49 | 只看该作者

那么有能能帮忙回答第二个问题么

那么有能能帮忙回答第二个问题么?我好奇RTLinux的实时Thread居然能50us一次。

2。PC上linux的调度周期约是多少来的?也是毫秒级别的么?我看到一段RTLinux的代码,他们的实时Thread能50us执行一次,真的能做到么?还是好的电脑能做到?跟RTLinux设定的调度周期是否有关?而RTlinux的实时部分的调度周期是多少?


使用特权

评论回复
地板
zhiwei| | 2008-2-23 21:20 | 只看该作者

mS级应该不成问题

使用特权

评论回复
5
兰天白云| | 2008-2-23 21:24 | 只看该作者

50us执行一次,没这么快吧

使用特权

评论回复
6
xwj| | 2008-2-23 21:49 | 只看该作者

整体思路由问题

要合理分配优先级,该用中断处理的就得用中断


PS:
顺便考考LZ:
1、一个MCU系统中能得到几个差异很大的优先级?
2、它们一般是怎么实现的?
3、各有什么特点?比如响应时间、局限性、适用场合...

当你能自己回答好上面的问题,你就知道该怎么去设计、分配系统的各种资源了

使用特权

评论回复
7
zealane| | 2008-2-24 09:51 | 只看该作者

50us完全有可能。

我们也是linux系统,自己裁剪优化的。每次调度间隔不超过25us。。。。。

使用特权

评论回复
8
dld2| | 2008-2-24 10:22 | 只看该作者

时钟节拍不是周期越短越好

楼上应该分析一下,处理器在调度方面消耗了多少能力。

使用特权

评论回复
9
liandao|  楼主 | 2008-2-24 17:39 | 只看该作者

50us这个也是我看到的

一个开源的,用PC做电机控制的项目,在他们的代码中看到有一个基本进程是设定为50us-100us一个执行周期的,linux是RTLinux,我也就很好奇他们他们到底是怎么做的。

使用特权

评论回复
10
工控秀才| | 2008-2-24 20:12 | 只看该作者

看我的硬件操作系统

如题,硬件操作系统最适合解决你这样的问题

使用特权

评论回复
11
ayb_ice| | 2008-2-25 18:37 | 只看该作者

时间太短

可以用中断周期唤醒任务的方法实现,不过效率太低...
还是直接用PCA单元好...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

5

主题

45

帖子

0

粉丝