完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
uCos 是实时性内核,但我还是有些疑问,
我觉得它只能保证优先级最高任务的实时性, 比如,创建任务A, B, C, 优先级以此为 5,6,7 void TASK_A(void *parg) { while(1) { ..........//执行处理程序 OStimeDly(100); } } void TASK_B(void *parg) { while(1) { ..........//执行处理程序 OSTimeDly(100); } } void TASK_C(void *parg) { while(1) { ..........//执行处理程序 OSTimeDly(100); } } 任务A的优先级最高,所以它能每100个时钟节拍执行一次,这个任务是实时性的。 任务B和C,它们就算阻塞100个时钟周期时间到了,也不一定执行, 因为可能有高于它优先级的任务正在执行,所以它必须等待,这样任务B和C的实时性得不到保证。 以上是个人的理解,请大神们给予指点。 |
|
相关推荐
8个回答
|
|
本帖最后由 bj2008wyou 于 2014-7-25 14:32 编辑
我的看法: 如果3个任务周期一样,就应该是将这3个任务合并成一个任务。再说了,如你这样做法,有3个任务,本身就需要分配不同的优先级,当延时节拍到来后,当然会先运行最高优先级的,当然就会有一个顺序。 实时具体定义看书本吧,实时肯定不是你所理解的这样,3个任务在同一时间执行,不可能的,因为CPU只有一个,任何时候CPU只能执行一个任务。 |
|
|
|
这么说优先级低的任务的实时性不能得到保证 |
|
|
|
如果时间节拍一样,这三个任务应该是按优先级顺序来的,至于实时性的保证的话,每个任务执行起来都很快,这样子纳秒级别的延迟应该不影响实时性吧?如果真的较真到纳秒级别的延迟,或者这个任务里面的程序执行起来耗时比较长的话,你这样子写的程序也是相当不合理的,正如上面所说的这三个任务应该合并成一个任务??是这样么?⊙▂⊙ |
|
|
|
本来实时性要求低高的就分配高优先级的,实时性要求低的就应该分配低优先级的 比如按键扫描,难道你还说你必须要求按键扫描的实时性? |
|
|
|
嗯嗯,谢谢你的解答
|
|
|
|
三个任务会依次执行.只不过是相差一个tick,A执行->A休眠,B执行->B休眠,C执行->C休眠.中间间隔1ms
|
|
|
|
本帖最后由 sinbingzoo 于 2014-12-13 22:35 编辑
你那样写实时性是要看你的高优先级的任务执行时间了,只要不是要求实时性苛刻的,低优先级任务延迟us级别不影响性能都可以理解为实时的。如果要求实时苛刻的,就不要那么做了,把最重要的优先级设的高点,或者由MCU硬件中断来处理。 实时性都是相对性能而言,看具体地任务最大能忍受什么样的延迟。抛开任务要达到的性能谈实时性是没有太大意义,MCU-CPU不可能同时处理两个事件。 |
|
|
|
sinbingzoo 发表于 2014-12-13 22:31 本帖最后由 sinbingzoo 于 2014-12-13 22:35 编辑 你那样写实时性是要看你的高优先级的任务执行时间了,只要不是要求实时性苛刻的,低优先级任务延迟us级别不影响性能都可以理解为实时的。如果要求实时苛刻的,就不要那么做了,把最重要的优先级设的高点,或者由MCU硬件中断来处理。 实时性都是相对性能而言,看具体地任务最大能忍受什么样的延迟。抛开任务要达到的性能谈实时性是没有太大意义,MCU-CPU不可能同时处理两个事件。 |
|
|
|
只有小组成员才能发言,加入小组>>
UCOSII中断中添加OSSemPost(Sem);程序无法运行
5005 浏览 1 评论
在BC5.0上编译uC/OS-II出现"eeror writing object file",怎样处理???
3219 浏览 1 评论
594浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 12:06 , Processed in 0.577174 second(s), Total 82, Slave 76 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号