VxWorks常用命令汇总
- 格式:docx
- 大小:24.37 KB
- 文档页数:6
vxWorks命令sp( ) 缺省參数创建⼀个任务(priority="100" 返回值为任务ID。
或错误)(taskSpawn)sps( ) 创建⼀个任务。
并挂起它tr( ) 恢复⼀个挂起的任务(与taskResume同样)ts( ) 挂起⼀个任务 (与taskSuspend同样)td( ) 删除⼀个任务 (与taskDelete同样)period( ) 创建⼀个周期调⽤函数的任务repeat( ) 创建⼀个反复调⽤函数的任务taskIdDefault( ) 设置并报告当前缺省的任务ID。
1.4.2 任务状态信息i( ) 显⽰系统信息,包含当前任务明、状态等(反复查询⽬标机,有时可能显⽰不⼀致)iStrict( ) 类似于i( ),但仅仅查询⽬标机⼀次ti( ) 显⽰任务的TCB信息w( ) 显⽰全部挂起任务的具体信息。
.tw( ) 显⽰某挂起任务的具体信息。
checkState( ) 显⽰⼀个任务的使⽤堆栈的总结,未定义任务时显⽰全部tt( ) 显⽰堆栈记录taskIdFigure( ) 报告任务的ID,以及名称1.4.3 系统信息devs( ) 列出⽬标机系统上的全部设备lkup( ) List symbols from symbol tablelkAddr( ) List symbols whose values are near a specified valued( ) 显⽰⽬标机内存l( ) Disassemble and display a specific nuber of instructionsprintError( ) 给出近期的错误值version() 显⽰VxWorks版本号cd( ) 改变宿主机⼯作⽂件夹(不影响⽬标机)ls( ) 列出宿主机⼯作⽂件夹下的⽂件pwd( ) 显⽰宿主机当前⼯作⽂件夹help( ) 显⽰Shell命令的帮助h( ) 显⽰近期输⼊的20个命令shellHistory( ) 设置或显⽰Shell命令shellPromptSet( )改变C解释器Shell 提⽰printLogo( ) 显⽰Tornado Shell 登陆1.4.4 系统改动和调试ld( ) 载⼊⼀个对象模块到⽬标机。
Vxworks常用命令版本及修订说明:目录VXWORKS常用命令 (1)说明 (2)常用命令 (2)说明常用指令使用两种方式:1、在串口超级终端下输入命令;串口设置为115200,8N1;2、使用telnet登陆装置,然后在shell下输入命令;用户:密码:常用命令命令:version查看vxworks程序时间:命令:ll查看文件列表。
U21平台的主CPU文件系统包括:/shr 、/set、/log、/wave。
命令:cdcd “目录名”命令:rm删除文件“文件路径和文件名称”或者remove “文件路径和文件名称”命令: i查看任务状态。
正常任务状态为:PEND/READY。
异常为:STOP、SUPPEND. 状态中出现+I说明该任务占用了高优先级任务所需要的资源,而被暂时提高了优先级运行。
命令:tt “任务名称”查看任务调用情况。
当系统中出现异常任务时,只要使用命令:tt,可以查看异常任务函数调用情况。
命令:ti “任务名称”查看任务详细信息.命令:checkStack 查看各任务堆栈使用情况。
命令:getcpuusage 查看任务负载。
命令:devs查看驱动设备列表。
命令:iosFdShow查看被打开的文件id列表:命令:systime查看修改装置时间命令;systime “Time=xx:xx:xx”修改时间;systime “TIME=XX-XX-XX”修改日期其中:status为0为没有检查到外部对时。
status为1为对时源为1588对时;2为B码;4为PPS;但与定值配置不符。
status=800x:表示外部对时正常;x为1为1588对时;2为B码;4为PPS 命令:ifShow查看网口IP地址。
命令:ifAddrSet修改装置网卡IP地址:格式:ifAddrSet "qefcc0","198.120.0.107"其中:qefcc0为第一个网口(板卡面板从上往下数),qefcc1为第二个网口,qefcc2为第三个网口。
1.taskSpawn 创建(产生并激活)新任务int taskSpawn(c h ar *name,int priority,int options,int stackSize,FUNCPTR entryPt,int arg1,int arg2, int arg3,int arg4, int arg5,int arg6, int arg7,int arg8, int arg9,int arg10)函数运行成功返回任务ID号,否则为ERROR。
任务可选项的几种模式如下表:名称值描述VX_FP_TASKVX_NO_STACK_FILLVX_PRIVATE_ENVVX_UNBREAKABLEVX_SUPERVISOR_MODE0x80x1000x800x2运行带浮点的协处理器不使用0xee填充堆栈用私有环境运行任务断点失效用户任务常用值2.taskDelete 删除一个任务STATUS taskDelete(int tid)删除指定ID号的任务,并释放任务所占有的内存3.taskDelay 延迟任务STATUS taskDelay(int ticks)任务延迟为某一任务休眠一定时间提供了简单的处理方法,一般用于任务的周期性循环执行。
当输入参数为NO_WAIT(其值为零)时,表示将所延迟的任务切换到同一优先级就绪队列的尾部。
4.taskSuspend 任务悬置STATUS taskSuspend(int tid)5.taskResume 恢复任务STATUS taskResume(int tid)6.msgQCreate 创建并初始化消息队列#include <msgQLib.h>MSG_Q_ID msgQCreate(int maxMsgs,int maxMsgLengt h,int options)消息入列方式有两种:MSG_Q_FIFO 先进先出,按时间先后顺序考虑;MSG_Q_PRIORITY 按消息优先级考虑。
VxWorks几种常用的延时方法关键字:taskDelay 函数VxWorks 基准频率实时嵌入式系统sysTimes-tampLock 串口通信skep 延时时间tick嵌入式系统中,一个任务往往需要在特定的延时之后执行一个指定的动作,比如等待外设以确保数据可靠,控制扬声器发声时间以及串口通信超时重发等。
这就需要利用定时器机制来计量特定长度的时间段。
VnWorks作为实时嵌入式系统,提供多样的定时接口函数。
下面列举一些常用的定时方式,并说明其注意事项。
1 taskDelavtaskDelay(n)使调用该函数的任务延时n个tick(内核时钟周期)。
该任务在指定的时间内主动放弃CPU,除了taskDelay(0)专用于任务调度(将CPU交给同一优先级的其他任务)外,任务延时也常用于等待某一外部事件,作为一种定时/延时机制。
在没有中断触发时,taskDelay能很方便地实现,且不影响系统整体性能。
例如写数据至EEPROM,EEPROM需要一个内部擦除时间(最大擦除时间为lOms)。
以下所提及的一个tick都假设为16.67 ms(1/60 s)。
可以简单地调用taskDelay(2)来保证数据擦写完成。
按理说taskDelay(1)就足以保证,为什么需要taskDelay(2)呢?这正是taskDelay使用的一个缺陷,使用时需要注意。
taskDelay(n)表示任务延时至第n 个系统时钟到来的时刻,如图1所示。
如果在A时刻调用taskDelay(1)仅延时5 ms,则在B 时刻taskDelay(1)就刚好是一个tick周期。
可见需要10 ms的延时就必须调用taskDelay(2)才能实现。
taskDelay有接近一1个tick的误差存在,taskDelay(n)实际上是延时(n-1)tick~n tick 的时间。
延时精度为l/n,延时1s就是taskDelay(60)的误差极限为1.6%,而taskDelay(1)的误差极限将是100%。
一、创建映像工程 Create a bootable VxWorks image工程创建完毕后,工程管理工具为用户工程产生、拷贝了一系列文件,这些文件显示在工程作业空间的Files选项卡中(如图1.1所示)。
这些文件都是创建工程时,系统自动创建的文件(有些文件不可修改)。
下面对这些文件进行详细的描述和说明。
linkSyms.c :动态产生的配置文件。
该文件包含的代码来自于VxWorks文档,而VxWorks文档是参考适当的符号集而创建的。
文件包行的是没有被初始化的程序模块符号信息。
该文件在工程任何时候发生变化时重新产生,用户不需要对其编写和修改。
prjConfig.c :一个动态产生的配置文件。
该文件在工程任何时候发生变化时重新产生,用户不需要对其编写和修改。
该文件包含的是当前VxWorks映像所包含组件的初始化代码。
romInit.s :包含引导Rom和基于Rom的VxWorks映像的初始化入口汇编代码。
romStart.c :包含把VxWorks映像下载到RAM中的程序代码。
sysALib.s :包含系统启动代码。
这是VxWorks映像下载到RAM中启动启动以后执行的第一段代码。
sysLib.c :包含与目标机或系统相关的C语言函数。
该文件提供板级接口,通过该接口,VxWorks和应用程序的实现将与目标系统无关。
usrAppInit.c :包含自启动型VxWorks映像用户应用程序入口函数usrAppInit(),类似与C语言的main ()函数。
用户可以把应用初始化程序增加到该函数里,如图1.2所示的usrAppInit.c文件窗口。
usrAppInit()函数是应用程序入口函数,当目标机系统加电后,首先初始化CPU,接着初始化目标机上的设备、安装设备驱动程序、创建设备等,然后进行系统的配置和系统引导所需要的资源申请等,最后执行usrAppInit()函数。
二、配置VxWorks模块在生成用户自定义VxWorks映像前,应根据自己应用和目标机的需求,对VxWorks模块进行配置。
精心整理1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width 可以是1、2、4、8memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IP icmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statisticsnetStackSysPoolShow - show network stack system pool statisticsrouteShow - display all IP routes (summary information)mRouteShow - display all IP routes (verbose information)routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route table routeDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到。
Vxworks学习资料整理Vxworks学习资料整理 (1)1 基于硬盘启动的Vxworks环境搭建 (3)2 Vxworks引导盘制作 (6)2.1 通过DOS加载VxWorks方法 (6)2.2 Bootrom三种类型 (7)2.3 VxWorks映象 (7)2.4 Bootrom.sys最快制作方法 (8)2.5 从网络引导 (8)2.6 从本地硬盘引导 (9)2.7 制作bootrom文件 (9)2.8 Bootrom编译步骤 (11)2.9 用BSP生成Bootable工程(即我们的程序文件) (12)2.10 FTP Server下载VxWorks (14)3 Tornado调试环境的建立 (17)3.1.1 配置文件config.h (17)3.1.2 网络连接 (18)6 从主机搭接(attach)到目标机 (21)7.1.3 串口连接 (21)4 4.Config.h文件注释说明 (22)4.1 启动行说明 #define DEFAULT_BOOT_LINE \: (22)4.2 Config.h 文件说明 (23)4.3 启动参数结构体 BOOT_PARAMS (35)4.4 booting过程介绍,比较详细 (39)5 sysClkRateGet();返回系统时钟每秒的tick数量, tick详解 (43)6 中断应用设计要点 (44)7 驱动程序设计 (49)8 缩短vxworks的启动时间 (52)9 调试篇 (55)10 驱动编程步骤 (55)10.1 将驱动程序增加到“系统驱动程序列表”中 (55)10.2 将设备增加到“系统设备列表”中 (55)10.3 打开设备,得到文件描述符 (55)10.4 SELECT机制的使用 (56)10.4.1 select( )函数翻译 (58)11 VxWorks系统的网络驱动(END) (60)12 VXworks操作系统中信号量用于多任务同步与互斥的讨论 (62)12.1 二进制信号量实现互斥和同步 (64)12.1.1 互斥的实现: (64)12.1.2 同步的实现: (65)12.2 互斥信号量 (67)13 Tornado的文件目说明录 (68)14 Shell 内置命令说明 (72)14.1 任务管理 (72)14.2 任务状态信息 (72)14.3 系统修改和调试 (73)14.4 对象命令( WindSh Commands for Object Display ) (73)14.5 WindShell and Browser, Shell 命令 (74)15 驱动篇 (82)16 中断篇 (83)16.1 中断服务程序ISR编写注意事项 (83)16.2 中断号与中断向量的转换 (84)16.3 安装中断服务程序 intConnect() (84)16.4 调试中断服务程序方法 (84)17mkboot批处理命令详细解释 (84)18 MakeFile 说明 (86)19 VxWorks5.4中的输入输出重定向 (89)19.1 vxworks屏幕输出, 一般来说用printf都是串口/shell输出,串口输出就可以到屏幕上了? (89)19.2 20.2 VxWorks中针对X86开发时标准输入输出的重定向? (90)20 怎样加入外部.o文件? (93)21 如何在Vxworks中使用 cd ,pwd , ls 命令:启用File System and Disk Utilities 组件(INCLUDE_DISK_UTIL),可在shell下用pwd/cd/ls等命令 (94)22 Error: image is larger than 524288 bytes (94)23 proxyArpDefaultOn()未定义解决方法? (95)24 如何将VxWorks的系统定时间隔或系统Ticks设置为1ms (95)25 read/write、fread/fwrite、fopen/open有什么区别 (96)26 快速启动 (100)27 启动时报ATA0a和硬盘启动相关问题 (100)28 如何安装USB2.2新版本及编译USB驱动? (101)29 WindML、图形界面相关问题 (102)29.1 WindML,ugldemo出错? (102)29.2 5101 VxWorks黑屏问题? (102)29.3 添加ugldemo.c后,编译报undefined reference to “ugltextdraw”错误一大堆? (103)29.4 WindML 中文字库显示? (103)30 VxWork6.8相关问题 (105)30.1 ELF和bin文件的区别? (105)30.2 diab和GNU的区别? (106)31 No such file or directory错误? (108)专业术语:WTX协议:(Wind River Tool eXchange): 用于开发机内部Tornado工具与Target Server 之间通信.WDB协议:(Wind DeBug): 用于主机Target Server与目标机之间的通信.1基于硬盘启动的Vxworks环境搭建VxWorks操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS)。
vxworks串口常用命令VxWorks串口常用命令一、概述VxWorks是一款实时操作系统,广泛应用于嵌入式系统开发中。
在嵌入式系统中,串口通信是一种常见的数据传输方式。
本文将介绍VxWorks中常用的串口命令,帮助开发人员在串口通信中更加高效地进行操作。
二、常用命令1. devConnectdevConnect命令用于连接一个串口设备。
例如,要连接一个串口设备/dev/tty0,可以使用以下命令:-> devConnect("/ty0", "/tyCo/0");2. iosDevShowiosDevShow命令用于显示所有已连接的串口设备。
例如,要显示所有已连接的串口设备,可以使用以下命令:-> iosDevShow();3. ioctlioctl命令用于对串口设备进行控制操作。
例如,要设置串口波特率为9600,可以使用以下命令:-> ioctl("/tyCo/0", FIOBAUDRATE, 9600);4. openopen命令用于打开一个串口设备。
例如,要打开串口设备/dev/tty0,可以使用以下命令:-> open("/ty0", O_RDWR);5. readread命令用于从串口设备读取数据。
例如,要从串口设备/dev/tty0读取10个字节的数据,可以使用以下命令:-> read(fd, buffer, 10);6. writewrite命令用于向串口设备写入数据。
例如,要向串口设备/dev/tty0写入10个字节的数据,可以使用以下命令:-> write(fd, buffer, 10);7. closeclose命令用于关闭一个已打开的串口设备。
例如,要关闭串口设备/dev/tty0,可以使用以下命令:-> close(fd);8. selectselect命令用于在多个串口设备之间进行选择。
(完整版)主CPU板vxworks常用命令Vxworks常用命令版本及修订说明:目录VXWORKS常用命令 (1)说明 (2)常用命令 (2)说明常用指令使用两种方式:1、在串口超级终端下输入命令;串口设置为115200,8N1;2、使用telnet登陆装置,然后在shell下输入命令;用户:密码:常用命令命令:version查看vxworks程序时间:命令:ll查看文件列表。
U21平台的主CPU文件系统包括:/shr 、/set、/log、/wave。
命令:cdcd “目录名”命令:rm删除文件“文件路径和文件名称”或者remove “文件路径和文件名称”命令: i查看任务状态。
正常任务状态为:PEND/READY。
异常为:STOP、SUPPEND. 状态中出现+I说明该任务占用了高优先级任务所需要的资源,而被暂时提高了优先级运行。
命令:tt “任务名称”查看任务调用情况。
当系统中出现异常任务时,只要使用命令:tt,可以查看异常任务函数调用情况。
命令:ti “任务名称”查看任务详细信息.命令:checkStack 查看各任务堆栈使用情况。
命令:getcpuusage 查看任务负载。
命令:devs查看驱动设备列表。
命令:iosFdShow查看被打开的文件id列表:命令:systime查看修改装置时间命令;systime “Time=xx:xx:xx”修改时间;systime “TIME=XX-XX-XX”修改日期其中:status为0为没有检查到外部对时。
status为1为对时源为1588对时;2为B码;4为PPS;但与定值配置不符。
status=800x:表示外部对时正常;x为1为1588对时;2为B 码;4为PPS 命令:ifShow查看网口IP地址。
命令:ifAddrSet修改装置网卡IP地址:格式:ifAddrSet "qefcc0","198.120.0.107"其中:qefcc0为第一个网口(板卡面板从上往下数),qefcc1为第二个网口,qefcc2为第三个网口。
V x W o r k s常用命令汇总VxWorks常用的命令1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IPicmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statistics netStackSysPoolShow - show network stack system pool statistics routeShow - display all IP routes (summary information) mRouteShow - display all IP routes (verbose information) routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route tablerouteDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到vxWorks命令规则:名词+动词,第二个单词开始大写序号状态命令备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前网络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进入目录11 vxWorks cfIdeInit 每次上电后执行12 vxWorks cfFormat 新卡(或者是未格式化的卡)插入的时候执行,只需执行一次13 vxWorks ll 以详细模式查看当前目录下的文件14 vxWorks ls 以简单模式查看当前目录下的文件15 vxWorks version 查看编译时间16 vxWorks td xxx 终止xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs文件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0") 新增一个tffs格式的文件系统22 vxWorks pwd 查看当前操作所在的目录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号为xx的PCI设备VxWorks中如果稍有不慎,就可能导致task suspend,如果运气好,shell没有被挂起,则可以通过系统的一些命令追踪一下挂起的原因。
shell命令vxWorks命令规则:名词+动词,第二个单词开始大写序号 状态 命令 备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前网络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进入目录11 vxWorks cfIdeInit 每次上电后执行12 vxWorks cfFormat 新卡(或者是未格式化的卡)插入的时候执行,只需执行一次13 vxWorks ll 以详细模式查看当前目录下的文件14 vxWorks ls 以简单模式查看当前目录下的文件15 vxWorks version 查看编译时间16 vxWorks td xxx 终止xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs文件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0")新增一个tffs格式的文件系统22 vxWorks pwd 查看当前操作所在的目录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号。
VxWorks常用的命令1.与任务相关的命令sp function,[arg1],...,[arg9]-启动任务,最多接受9个参数,默认的优先级100、堆栈20000字节period n,function,[arg1],...,[arg8]-创建一个周期调用function的任务,周期为n秒,最多接受8个参数repeat m,function,[arg1],...,[arg8]-创建一个反复调用function的任务,调用次数为m,m=0时永久调用,最多也是8个参数ts tidX -挂起任务tr tidX -恢复挂起的任务td tidX -删除任务i tidX -显示任务基本信息,参数为0时显示全部任务ti tidX -显示任务详细信息,包括寄存器、堆栈等tt tidX -显示任务的函数调用关系checkStack tidX -显示任务堆栈使用的历史统计,参数为0时显示全部任务[其中tidX可以为任务ID 也可以为任务名]2、系统信息lkup ["string"] -在系统符号表中查找并列出含有"string"字符的函数及全局变量,有两个特殊参数:0,给出符号表统计;""(空字符串),列出全部符号lkAddr addr -显示addr地址附近的符号表l addr,[n] -显示addr地址开始的n条指令的反汇编,n省略时默认为10条指令h [n] -n为0时列出最近执行的shell命令,默认20条;n非0时,设定shell记录的历史命令的数目d [addr,[number],[width]]-显示addr地址开始的number个单元的内容,width定制每个单元的宽度,可以是1、2、4、8m addr,[width] -按width宽度修改addr地址的内容,width可以是1、2、4、8 memShow 1 -显示系统分区上空闲和已分配空间的总数等printErrno value -打印系统定义的错误码的宏3、与网络相关的命令ifShow ["ifname"] - show info about network interfacesinetstatShow - show all Internet protocol socketstcpstatShow - show statistics for TCPudpstatShow - show statistics for UDPipstatShow - show statistics for IPicmpstatShow - show statistics for ICMParpShow - show a list of known ARP entriesmbufShow - show network stack data pool statistics netStackSysPoolShow - show network stack system pool statistics routeShow - display all IP routes (summary information) mRouteShow - display all IP routes (verbose information) routestatShow - display routing statisticsrouteAdd "destaddr","gateaddr" - add route to route tablerouteDelete "destaddr","gateaddr" - delete route from route table说明:上述大多数命令都可以在help、netHelp中查到vxWorks命令规则:名词+动词,第二个单词开始大写序号状态命令备注1 BSP c 改变配置2 BSP p 打印当前配置信息3 BSP @ 开始加载内核4 BSP ctrl+x 重新启动5 BSP6 BSP7 vxWorks i 查看进程8 vxWorks ifShow 查看当前网络设置9 vxWorks devs 查看所有的设备10 vxWorks cd "/xxx/" 进入目录11 vxWorks cfIdeInit 每次上电后执行12 vxWorks cfFormat 新卡(或者是未格式化的卡)插入的时候执行,只需执行一次13 vxWorks ll 以详细模式查看当前目录下的文件14 vxWorks ls 以简单模式查看当前目录下的文件15 vxWorks version 查看编译时间16 vxWorks td xxx 终止xxx进程17 vxWorks help 帮助18 vxWorks tffsShow 查看tffs的相关信息19 vxWorks tffsDevFormat 格式化tffs文件系统20 vxWorks showTime 查看系统时间21 vxWorks usrTffsConfig(0,0,"/tffs0") 新增一个tffs格式的文件系统22 vxWorks pwd 查看当前操作所在的目录路径23 vxWorks ping "xx.xx.xx.xx",10,0 ping地址xx.xx.xx.xx,共计10次24 vxWorks pciDeviceShow 查看当前系统中的所有PCI设备25 vxWorks pciHeaderShow,0,xx 查看当前系统中的组号为0、地址号为xx 的PCI设备VxWorks中如果稍有不慎,就可能导致task suspend,如果运气好,shell没有被挂起,则可以通过系统的一些命令追踪一下挂起的原因。
其中用到的主要命令是i、tt、ti、d等。
首先从出错信息开始:0xfc8125b8 (t_Lcd): memPartFree: invalid block 0xfdfc6f38 in partition 0xfe508894.由于memPartFree了一个非法的内存块,导致了任务挂起,我们需要确定到底是哪条语句导致了这个异常的产生,可能是什么原因引起的。
首先,需要通过“i”命令察看任务状态:-> iNAME ENTRY TID PRI STATUS PC SP ERRNO DELAY---------- ------------ -------- --- ---------- -------- --------------- -----tExcTask excTask fdffec80 0 PEND fe3c5f50 fdffeb60 3006b 0tLogTask logTask fdffc298 0 PEND fe3c5f50 fdffc188 0 0tShell shell fdf5fa48 1 READY fe1f3afc fdf5f628 0 0……t_Lcd fe392a30 fc8125b8 100 SUSPEND fe1f24b0 fc8120b8d0003 0……可以看到任务t_Lcd的状态为SUSPEND,即被挂起的状态。
其他各项的含义都比较清楚,ENTRY是任务的入口函数,如果没有symbol,则直接显示地址,TID是任务的ID号,一般用任务的栈底地址表示,PC是当前的指令位置,SP是当前栈顶位置。
然后通过”tt”来追溯函数调用过程:-> tt "t_Lcd"fe3c14f4 vxTaskEntry +68 : fe392a30 ()fe392b48 initLcdComponent+2e8: fe392bdc ()fe392bec initLcdComponent+38c: fe392bfc ()fe39333c initLcdComponent+adc: lcdShowPassWord ()fe398590 lcdShowPassWord+84 : saveModifiedSetting ()fe3a3790 saveModifiedSetting+220: saveSettingValue (1)fe1fd6d0 saveSettingValue+148: fe1fc428 (0, 5, ffffffff)fe1fc888 getDeviceSettingValue+64c: fclose ()fe1aab48 fclose +ec : free ()fe1bb7d4 free +1c : memPartFree ()fe1bb2dc memPartFree +148: taskSuspend ()我们可以了解到函数的调用过程,vxTaskEntry()?->fe392a30()->fe392bdc ()->fe392bfc()->lcdShowPassWord ()->saveModifiedSetting ()->saveSettingValue (1)->fe1fc428 (0, 5, ffffffff)->fclose ()->free ()->memPartFree ()->taskSuspend ()。
其他相关信息:第一栏是发生跳转(即函数调用)后的返回地址,稍后会作详细解释,第二栏是离返回地址最近的symbol和偏移量,一般情况下会是发起调用的那个函数的名称,除非该函数是内部函数,系统中没有symbol,第三栏是被调用的函数。
再来查看一下t_Lcd任务的栈里的内容,从前面的任务信息里已经得知当前栈顶位置为fc8120b8,通过“d”命令显示该地址的内容。
-> d 0xfc8120b0fc8120b0: fc81 25b8 fc81 25b8 fc81 20c8 fe1f 24b0 *..%...%... ...$.* fc8120c0: fe50 8894 fdfc 6f30 fc81 20e8 fe1b b2dc *.P....o0.. .....* fc8120d0: fdf2 6b08 0000 0100 0000 000c 0000 0000 *..k.............* fc8120e0: 0000 0000 fdf1 ed80 fc81 20f8 fe1b b7d4 *.......... .....* fc8120f0: fd9a 3538 fdf1 ed80 fc81 2108 fe1a ab48 *..58......!....H* fc812100: fd9a 3538 fc81 2108 fc81 2238 fe1f c888 *..58..!..."8....* fc812110: 0000 0000 0000 0005 ffff ffff 0000 0600 *................* fc812120: 0000 000a fdf1 ed80 4230 312e 7874 6373 *........B01.xtcs* fc812130: 5f62 7566 2e69 6c32 0000 0000 0000 0000 *_buf.il2........*这里我们可以看到一些熟悉的地址,注意看最后两列,在这里可以找到”tt”中显示的第一栏地址即函数调用的返回地址。