VxWorks的系统任务

VxWorks操作系统自带一些系统任务,主要用于系统的调试和控制。

根任务

根任务是内核执行的第一个任务,该任务主要完成系统的初始化功能并创建其他系统任务。

其初始化内容包括:I/O系统、设备驱动程序等必要的系统资源的初始化,并创建其他如日志任务、网络任务等系统任务。完成初始化功能后,根任务终止退出。

任务的设计模式属于Run_to_end_Tasks。

任务设计模式

任务的设计模式主要有两种,一种Run_to_end_Tasks,这种模式下任务完成后就终止退出,一般用于在系统上电后完成一些指定初始化功能。另外一种是无限循环的任务(Continuous_Tasks),这种任务是最为常见的,用于执行某些特定功能的代码。在设计无限循环任务最重要的一点是,其循环代码中至少有退出的条件,这样才能使低优先级的任务有机会得到CPU。

日志任务

日志任务是Vxwroks中用来输出系统日志信息的任务。可以理解为类似实现printf的功能。日志任务的优先级被设置为最高优先级(0),其他任务通过调用LogMsg()向日志任务发送消息,日志任务收到消息后会将信息输出到系统console。和pringf相比,LogMsg节省了一些系统资源,且发送者无须发起I/O操作。中断服务程序中可以使用LogMsg打印一些信息,但不能使用printf。

异常处理任务

异常处理任务完成中断级不能执行的任务。如任务程序运行时出现内存泄漏,任务会被强行终止,触发Vxworks异常信号11。其他的异常情况还包括除0操作、字符串函数使用错误等情况。在Vxworks中异常处理任务被设置为最高优先级0,而且这个任务不能挂起、删除或者被改变优先级。

网络任务

网络任务负责提供Vxworks中网络需要使用的任务级功能。可以通过配置INCLUDE_NET_LIB来决定是否创建该任务。

实际的任务调试时可以使用shell的一些命令来查看任务状态。如在shell终端输入“i”,可以查看系统当前运行的任务。输入“tt + 任务名”可以显示任务的调用状态。如当任务出现异常,通过tt可以查看任务执行到哪里发生了异常。ts用于挂起某个任务。tr用于恢复某个任务。td用于删除某个任务。