打印

请教RTX51TNY高手

[复制链接]
1808|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wxj1952|  楼主 | 2008-7-28 19:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    在os_wait2(K_TMO,0)函数调用中,功能应该是将当前任务的timer清零,然后返回继续执行当前任务,并不引起调度切换。

    实际调用中,版本2.02功能正确。版本1.06功能错误。

    谁能告诉我,版本1.06问题出在哪里?需要怎样修改一下?

相关帖子

沙发
wxj1952|  楼主 | 2008-7-29 21:10 | 只看该作者

修改好了。

只要在??0005位置加3条指令:
DEC R0
MOV @R0,A
INC R0

看起来这确实是版本1.06的一处漏洞。所以软件测试不是很容易的事。
os_wait2(K_TMO,0),延时0节拍?有用么?没用!但是将当前任务timer清零却是绝对要用到。例如时间片设置
robintime=timer+?TIMESHARING。
结果任务第一次运行时,时隙正确;以后就乱了。因为以后timer一项是随机的了。

使用特权

评论回复
板凳
guidianren| | 2011-12-26 15:21 | 只看该作者
换成新的版本就行了,

使用特权

评论回复
地板
ayb_ice| | 2011-12-26 15:59 | 只看该作者
本帖最后由 ayb_ice 于 2011-12-26 16:01 编辑
    在os_wait2(K_TMO,0)函数调用中,功能应该是将当前任务的timer清零,然后返回继续执行当前任务,并不引起调度切换。    实际调用中,版本2.02功能正确。版本1.06功能错 ...
wxj1952 发表于 2008-7-28 19:07


"os_wait2(K_TMO,0);"
这样使用就是"脱裤子放屁"
在1.06版本可能将0当成了256,也可能是BUG,没有什么奇怪的,不然软件怎么都要升级呢

使用特权

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

本版积分规则

38

主题

757

帖子

1

粉丝