电子发烧友App

硬声App

0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示
电子发烧友网>电子资料下载>嵌入式开发>VxWorks操作系统的基本组件

VxWorks操作系统的基本组件

2017-10-26 | rar | 0.63 MB | 次下载 | 免费

资料介绍

  VxWorks 是实时操作系统,这决定了它的任务调度必须是基于优先级的,而且必须是可抢占式调度方

  式,这样才能够区分实际情况下不同状态的处理级别,对高优先级的情况进行优先响应。

  2.1.1 内核实现基本原

  VxWorks 内核维护三个队列:tick 队列、ready 队列、active 队列。另外还有一个队列涉及任务,即任

  务等待资源时所处的队列,这个队列可以是 VxWorks 内核提供的,也可以是用户提供的,此处令其为 pend

  队列。

  所谓 tick 队列,即当调用 taskDelay 函数让任务延迟一段固定的时间时,任务所处的队列,此时任务

  被设置为 Delay 状态,无资格竞争使用 CPU;ready 队列即有资格竞争使用 CPU 的所有任务,该队列以优

  先级为序排列任务,队列头部是除了当前运行任务外,系统中最高优先级的任务;active 队列有些误导,

  实际上称之为 task 队列更合适,因为系统中所有的任务无论当前状态如何,都将在这个队列中,这个队列

  维护着系统中当前所有的任务,即通过该队列可以查找到当前系统中的所有任务,在 Shell 下运行“i”命

  令,显示系统中所有的任务,就是通过遍历 active 队列完成的;pend 队列即当任务竞争使用某资源,而资

  源当前不可得时,任务就被设置为 pend 状态,进入 pend 队列。

  函数 taskSpawn 创建一个新的任务。首先,其创建一个任务控制结构,对该结构进行初始化后,将结

  构加入 active 队列以作为系统任务管理之用。此时任务仍无资格竞争使用 CPU,taskSpawn 函数的最后一

  步就是将这个任务结构再加入到 ready 队列,此时这个任务才真正可以称为已经在竞争使用 CPU 了。当系

  统中所有的优先级高于这个任务的其他任务运行完毕或者由于等待资源而处于阻塞时,这个新创建的任务

  就将被调度运行。所以,在 VxWorks 下,如果一个新创建的任务优先级不高,创建后将等待一段时间才能

  被真正执行。在实际项目中,有时需要一个新的任务被创建后立刻得到执行,那么就需要在创建任务时,

  指定一个较高的任务优先级。VxWorks 内核将任务分为 256 个优先级,标号从 0 到 255。其中 0 表示最高

  优先级,255 表示最低优先级。任务在调用 taskSpawn 函数进行创建时就指定了优先级,当然任务的优先

  级并非在创建后就无法改变,用户可以通过调用 taskPrioritySet 函数在任务创建后重新设定优先级,

  taskPrioritySet 专门针对嵌入式平台下不同的情况对同一任务不同运行级别的需求进行设置。值得注意的

  是,taskPrioritySet 函数不同于通用操作系统提供的类似函数,taskPrioritySet 函数可以提高或者降低任务的

  运行级别,而不是通用操作系统下在任务创建后就只能动态地降低任务优先级。

  VxWorks 下对于应用层任务,推荐使用 100~250 之间的优先级,驱动层任务可以使用 51~99 之间的

  优先级。要特别注意的是,内核网络数据包收发任务 tNetTask 的优先级为 50,如果使用网口进行调试,则

  一定注意不要创建任务优先级高于 50 的任务,否则 tNetTask 任务将无法得到运行,表现形式是死机,因

  为系统将无法再从网口接收调试命令,无法响应 Tornado Shell 或者 Telnet 下输入的任何命令。以上只是推

  荐值,事实上,由于嵌入式系统下的特殊应用,对于某个任务优先级的设置需要根据该任务完成的具体工

  作而定,而不可一味地遵循推荐值。如笔者曾在项目中为了与 Shell“争读”从串口发送的命令,就将一个

  应用层任务优先级设置为 0。要谨记在任务达到某一特殊目的后,必须将任务优先级设置回正常(推荐)

  值。

  无论何种操作系统,任务在设计中都由一个数据结构表示。这个数据结构包含一个任务运行时需要的

  所有信息,我们一般将这些信息称为任务上下文。具体的任务上下文(广义上)包括以下内容:

  1)所在平台 CPU 内部所有的寄存器值,特别是指令寄存器,这代表了任务当前的执行点。这一般是

  狭义上的任务上下文。除了寄存器值,每个任务有自己的内存映射空间、任务名称、任务优先级值、任务

  入口函数地址、打开文件句柄数组、信号量和用于各种目的的队列

VxWorks操作系统的基本组件

下载该资料的人也在下载 下载该资料的人还在阅读
更多 >

评论

查看更多

下载排行

本周

  1. 1TC358743XBG评估板参考手册
  2. 1.36 MB  |  330次下载  |  免费
  3. 2开关电源基础知识
  4. 5.73 MB  |  6次下载  |  免费
  5. 3100W短波放大电路图
  6. 0.05 MB  |  4次下载  |  3 积分
  7. 4嵌入式linux-聊天程序设计
  8. 0.60 MB  |  3次下载  |  免费
  9. 5基于FPGA的光纤通信系统的设计与实现
  10. 0.61 MB  |  2次下载  |  免费
  11. 6基于FPGA的C8051F单片机开发板设计
  12. 0.70 MB  |  2次下载  |  免费
  13. 751单片机窗帘控制器仿真程序
  14. 1.93 MB  |  2次下载  |  免费
  15. 8基于51单片机的RGB调色灯程序仿真
  16. 0.86 MB  |  2次下载  |  免费

本月

  1. 1OrCAD10.5下载OrCAD10.5中文版软件
  2. 0.00 MB  |  234315次下载  |  免费
  3. 2555集成电路应用800例(新编版)
  4. 0.00 MB  |  33564次下载  |  免费
  5. 3接口电路图大全
  6. 未知  |  30323次下载  |  免费
  7. 4开关电源设计实例指南
  8. 未知  |  21548次下载  |  免费
  9. 5电气工程师手册免费下载(新编第二版pdf电子书)
  10. 0.00 MB  |  15349次下载  |  免费
  11. 6数字电路基础pdf(下载)
  12. 未知  |  13750次下载  |  免费
  13. 7电子制作实例集锦 下载
  14. 未知  |  8113次下载  |  免费
  15. 8《LED驱动电路设计》 温德尔著
  16. 0.00 MB  |  6653次下载  |  免费

总榜

  1. 1matlab软件下载入口
  2. 未知  |  935054次下载  |  免费
  3. 2protel99se软件下载(可英文版转中文版)
  4. 78.1 MB  |  537796次下载  |  免费
  5. 3MATLAB 7.1 下载 (含软件介绍)
  6. 未知  |  420026次下载  |  免费
  7. 4OrCAD10.5下载OrCAD10.5中文版软件
  8. 0.00 MB  |  234315次下载  |  免费
  9. 5Altium DXP2002下载入口
  10. 未知  |  233046次下载  |  免费
  11. 6电路仿真软件multisim 10.0免费下载
  12. 340992  |  191185次下载  |  免费
  13. 7十天学会AVR单片机与C语言视频教程 下载
  14. 158M  |  183278次下载  |  免费
  15. 8proe5.0野火版下载(中文版免费下载)
  16. 未知  |  138040次下载  |  免费