当前位置:文档之家› 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、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”中显示的第一栏地址即函数调用的返回地址。

相关主题