完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
一。假如任务在提前等待一个信号量:当信号量到来时,任务记录下此时间戳;当任务返回时,再记下当前时间戳。两时间戳之差,就是该任务等待该信号量的时间。两时间戳之差的意义是:该任务受其他任务及中断的影响有多大?从而确定任务优先级是否合理。
任务在提前等待一个信号量的源码片段: uC/OS-III Version : V3.03.00 OS_SEM_CTR OSSemPend (OS_SEM *p_sem, OS_tiCK timeout, OS_OPT opt, CPU_TS *p_ts, //时间戳 OS_ERR *p_err) { 。。。 OSSched(); /* 任务级调度:运行下一个最高优先级的就绪任务 */ CPU_CRITICAL_ENTER(); switch (OSTCBCurPtr->endStatus) { case OS_STATUS_PEND_OK: /* 得到信号量 */ if (p_ts != (CPU_TS *)0) { *p_ts = OSTCBCurPtr->TS; // 发给信号量的时间戳,已记录在该任务的控制块中 } *p_err = OS_ERR_NONE; break; 。。。 } ctr = p_sem->Ctr; CPU_CRITICAL_EXIT(); return (ctr); } 二。假如信号量已经提前准备好:信号量中已经保存了当时的时间戳。任务接收到信号量并立刻返回,当前时间戳与信号量中保存的时间戳之差,是指该信号量从发送到接收的时间。但是两时间戳之差,并不是该任务等待该信号量的时间。 信号量已经提前准备好的源码片段: uC/OS-III Version : V3.03.00 OS_SEM_CTR OSSemPend (OS_SEM *p_sem, OS_TICK timeout, OS_OPT opt, CPU_TS *p_ts, //时间戳 OS_ERR *p_err) { 。。。 if (p_sem->Ctr > (OS_SEM_CTR)0) { /* 信号量已经提前准备好? */ p_sem->Ctr--; /* 信号量计数器减一 */ if (p_ts != (CPU_TS *)0) { *p_ts = p_sem->TS; /* 获得最后发给信号量的时间戳 */ } 。。。 return (ctr); } 。。。 } 三。根据程序源码及UCOSIII原著所述,OSSemPend()返回的*p_ts时间戳,是指信号量被释放(OSSemPost())的确切时刻。 如果按照UCOSIII时间戳的概念,比如某些时候,该信号量可能已经被提前发送了,只是很长时间内没有任务去读他,任务获得信号量的时间戳之差的时间会很长。但这并不意味着该任务等待该型号量的时间会很长。 请教一下各位,怎样去理解uC/OS-III时间戳的实用意义和价值? |
|
相关推荐
4个回答
|
|
楼主问题格式清晰悦目,无奈没测试个ucos实验,帮不到楼主,帮顶一下.....
|
|
|
|
谢谢关注。 根据程序源码及UCOSIII原著所述,OSSemPend()返回的*p_ts时间戳,是指信号量被释放(OSSemPost())的确切时刻。
按照UCOSIII时间戳的概念,某些时候,任务获得信号量的时间戳之差会很长,但这并不意味着该任务等待该型号量的时间会很长。因为该信号量可能已经被提前发送了,只是很长时间没有任务去读他。 |
|
|
|
如你不嫌麻烦,不妨指明你的第1句的依据,楼主位源码与你的理解是有悖的。
|
|
|
|
《嵌入式实时操作系统uc/os-III》原著(邵贝贝审校)第165页:OSSemPend(&MySem,0,OS_OPT_PEND_BLOCKING,&ts,&err)--L13-6(4) 当信号量释放时,uc/os-III会记录一个时间戳,并在OSSemPend()返回时返回该时间戳。这个功能使用户程序能够知道请求的信号量释放的确切时刻。在OSSemPend()返回后,可以通过读取OS_TS_GET()来获得当前时间戳,用户可以自行计算两个时间戳的差来获得等待的时间。
(邵贝贝 )译者注:该等待时间是指,从信号量被释放到真正任务能执行所等待的时间。 |
|
|
|
只有小组成员才能发言,加入小组>>
807 浏览 0 评论
1159 浏览 1 评论
2534 浏览 5 评论
2867 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2717 浏览 6 评论
keil5中manage run-time environment怎么是灰色,不可以操作吗?
1098浏览 3评论
197浏览 2评论
463浏览 2评论
377浏览 2评论
M0518 PWM的电压输出只有2V左右,没有3.3V是怎么回事?
458浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 22:58 , Processed in 1.215342 second(s), Total 86, Slave 67 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号