首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

VxWorks基本概念介绍(任务,定时,中断等)

VxWorks基本概念介绍(任务,定时,中断等)

1 VxWorks基本的构成模块

高效的实时内核、兼容标准的POSIX、I/O系统、本机文件系统、文件I/O系统、TCP/IP网络协议栈、虚拟内存(可选单元VxVMI)、共享内存(可选单元VxMP)、驻留目标工具、WFC、工具库、性能优化、目标代理、BSP、仿真器等。

VxWorks采用微内核结构设计,内核主要分为三部分:多任务环境、原子信号量、系统时终响应。

VxWorks基本功能可分为如下几类:

1. 任务管理

2. 事件和异步信号服务

3. 信号量服务

4. 消息队列服务

5. 内存管理

6. 中断服务程序

7. 时钟管理和定时服务

8. 出错处理

下面详细描述:

1. 任务管理

什么要任务?任务是代码运行的一个映像。相当于Windows平台上的一个进程的概念。不过该任务只有一个线程。VxWorks不具体区分进程和线程。一个任务由一个TCB(任务控制块)来标识。调度程序使用TCB来管理任务调度。

VxWorks一个任务有四种状态,最基本的状态有以下四种:

就绪态、挂起态、休眠态、延迟态。  





1.1任务调度:


Wind内核采用基于优先级的抢占式调度法作为它的默认策略。同时也提供轮转调度算法。VxWorks内核优先级划分为256级(0-255)。0为最高优先级,优先级255为最低。

TaskSpawn():创建新任务。

TaskInit():初始化一个新任务。

TaskActivate():激活一个已经初始化的任务。

TaskName():由任务号得到任务名。

TaskNameToId():由任务名到任务ID号。

TaskPriorityGet()

TaskIsReady()

TaskIsSuspended();

TaskTcb();

TaskDelete();

TaskSafe();

TaskSuspend();

TaskResume();

TaskRestart();

TaskDelay()

1.2VxWorks的系统任务:

1.根任务 TUsrRoot:系统首先执行根任务TUsrRoot,其入口点为文件Config/All/UsrConfig.C中的UsrRoot函数,它负责初始化VxWorks工具,并创建注册、异常处理、网络通信任务和TRlogind等任务。

2. 注册任务TLogTask:注册任务TLogTask被VxWorks模块用来传送不需要I/O操作的系统信息。

3. 异常处理任务TExcTask:异常处理任务TExcTask有最高优先级,它负责系统的异常情况出错处理,不能被挂起、删除或是改变优先级。

4. 网络通信任务TNetTask:网络通信任务TNetTask负责系统级任务的网络通信。

5. 目标代理任务 TWdbTask: 如果目标代理程序运行在任务模式,则目标代理任务TWdbTask被创建,用来响应主机目标服务器的请求。

6. 任务错误状态:主要是Errno的应用。

1.3 任务间的通信和同步机制

多任务间通信方式:

L 共享内存

L 信号量

L 消息队列和管道

L Socket和远程过程调用

L 二进制信息:用于异常处理

2. 中断机制

实时系统中硬件中断处理是至关重要的。VxWorks系统提供了灵活的中断处理机制。它为中断处理提供的系统调用如下:

IntConnect():将C函数和中断向量连接

IntCount():得到当前中断嵌套深度

IntLevelSet():设置程序的中断级别。

IntLock():使中断禁止。

IntUnlock():开中断

IntVecSet():设置异常向量

IntVecGet():得到异常向量

3. 定时管理机制

VxWorks提供了丰富的定时管理和时钟管理,具体包括以下几个方面:

维护系统日历时钟

在任务等待消息包、信号理、事件或内存段时的超时处理。

周期性或指定时间点唤醒或发送告警到一个任务。

处理任务调度中的时间片轮转。

VxWorks提供了以下系统调用:

TickAnnounce():通知系统内核时钟“滴答”;

TickSet():设定内核时钟计数器值

TickGet():得到内核时钟计数值

Timer_create:创建时钟

Timer_gettime():获得时钟给定值的当前剩余值

Timer_settime():设定时钟值

Timer_connect():连接用户函数和时钟信号

Timer_cancel():取消一个时钟

SysClkRateSet():设定系统时钟速率。



VxWorks还提供了看门狗定时器。(略)

4. 内存管理



5. I/O与文件系统



2 VxWorks系统开发基本方法:

2.1正确划分任务

功能内聚性

时间紧迫性

周期执行性

2.2防止任务异常

2.3正确运用函数的可重入性

2.4使用名称访问资源

2.5用户任务优先级确定
返回列表