- 1、本文档共47页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
北邮研究生嵌入式系统实验课程——第4-1节 VxWorks任务的基本原理
嵌入式系统实验
第4- 1节 VxWorks任务基本原理
夏海轮
xiahailun@
北京邮电大学 信息与通信工程学院
VxWorks任务基本原理
VxWorks的实时多任务简介
VxWorks 中任务的基本知识
VxWorks 中的任务控制
VxWorks 中有关任务的错误状态
系统任务
实时性(Real-Time)
实时性使得一个控制系统能够及时响应对该系统
的控制。
如果一个系统的响应时间是可以预测的,则它就
是一个具有确定性的系统。
从一个事件发生到它被响应之间的时间称为Late
ncy。
确定性响应是实时系统性能关键因素。
对实时系统的要求
能够控制多种外部部件
– 独立的部件
– 同步的部件
– 异步的部件
执行速度要快
– 快速响应
– 开销小
确定性要求
– 迟到的响应就是错误的响应
如何选择一个设计方案
如何设计一
个系统来控
制机械手
采用单个任务的方法
如果以单个任务的方式来设计系统
一个任务在一个循环中控制所有的部件
arm()
{ for(; ;)
{if (shoulder needs moving)
moveShoulder();
if (elbow needs moving)
moveElbow();
if (wrist needs moving)
moveWrist();
…}
}
采用多任务的方法
对每个关节的控制都创建一个任务
Joint(){
for(; ;){
waitForMove(); /*等候在这里直到关节需要移
动*/
moveJoint();}
}
每一个任务的状态在“Ready”和“Wait”之间
变化
VxWorks允许一个任务等待
– 一个特定的延时
– 一个事件(例如中断)
任务的状态
VxWorks的多任务内核
Wind内核是VxWorks中直接控制任务的部分。
根据VxWorks的调度机制为任务分配CPU。
使用任务控制块(TCB)来控制任务。
–每个任务都有一个任务控制块
–TCB的数据结构定义WIND_TCB在头文件taskLib.h中。
–操作系统关于任务的控制信息包括,状态、任务优先级、
延时时间、断点列表、出错状态等。
–CPU的上下文信息包括,PC、SP、CPU寄存器等。
VxWorks的任务状态队列
TCB Delayed队列
TCB
文档评论(0)