原创 WindShandBrowser

2006-10-26 12:49 4699 5 5 分类: MCU/ 嵌入式

     WindSh and Browser<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


1   WindSh(WindShell)


 1.1  简介


提供从宿主机到目标机之间的一个命令 shellWindSh 是一种非常受欢迎的开发工具,它具有很强的交互性和可操作性,允许用户调用内存中的应用程序模块或是 VxWorks模块中的任何例程。它不但具有一般命令语言的功能,而且也具有 C 语言的设计特点,能够解释几乎任何 C 语言表达式, 执行大多数 C 语言算子,解析符号表数据。对初用者来说,WindSh学习起来比较简单,使用比较方便,对熟练用户而言,则有较为高级的手段可以应用。


WindSh是一个驻留在主机内的C语言解释器,通过它可运行下载到目标机上的所有函数,包括VxWorks和应用函数。Tornado外壳还能解释常规的工具命令语言TCL


WindSh不仅可以解释几乎所有的C语言表达式,而且可以实现所有的调试功能。它主要有以下调试功能:下载软件模块;删除软件模块;产生任务;删除任务;设置断点;删除断点;运行、单步、继续执行程序;查看内存、寄存器、变量;修改内存、寄存器、变量;查看任务列表、内存使用情况、CPU利用率;查看特定的对象(任务、信号量、消息队列、内存分区、类);复位目标机。


 


1.2  启动和终止


        启动:命令行方式为:windSh phobos(目标服务器名称);菜单Tool->Shell;工具条。


终止: 快捷键[Ctrl+D];命令exit() quit()


 


1.3  Shell特性


     I/O重定向:            程序员常常调用例程从标准输入接收数据或在标准输出显示数据,缺省情况下,标准输入输出流被定向到 Tornado    Shell        使用Tcl过程 shConfig 修改WindSh 环境变量 SH_GET_TASK_IO,实现I/O复位向。


路径与符号补齐:         键入任何符号或存在的路径名的开始部分,然后键入[Ctrl+D] Shell会自动补齐命令或路径名。 并且可以继续键入若干字符后加上 [Ctrl+D] 知道命令或路径完整为止。


打印命令摘要(Synopsis ):键入完整的命令后,继续键入空格 + [Ctrl+D] 可以显示命令摘要,同时输入的命令继续作为输入。


使用Synopsis printing功能包含自定义程序的说明显示


1、WRS代码约定创建包含新例程的文件


2、在工程中包含这些文件


3、makefile中为宏DOC_FILES加入文件名


4、à cd $WIND_BASE/target/src/projectX


à make synopsis


显示HTML 帮助: 键入完整的命令后,继续键入空格 + [Ctrl+W]。将会启动浏览器显示该命令的详细帮助信息。


删除一行           [Ctrl+U]


输入类似Vi编辑命令Esc


数据转换与计算:      键入整数或字符后回车可以显示该整数的十进制及十六进制值。也可以键入字符常量或符号地址。


所有的C操作符都可以在Shell里用于数值计算。也可以在C表达式中使用变量。


WindSh环境变量:  使用 shConfig 命令修改环境变量


SH_GET_TASK_IO  为调用函数设置I/O重定向。


ON:重定向到WindSh;OFF:I/O显示到目标机控制台。


LD_CALL_XTORS   


LD_SEND_MODULES:设置load模式。


LD_PATH:     为模块设置搜索路径,用“;”隔开。 例如:ld 命令提交后,Shell搜寻模块的路径顺序为:首先在当前目录,然后到LD_PATH设置的路径。


LD_COMMON_MATCH_ALL:


DSM_HEX_MOD:


注意:因为shConfigTcl过程,所以输入命令时使用 ?shConfig


 


1.4   WindSh内置命令


  1.4.1  任务管理


   sp( )            用缺省参数创建一个任务(priority="100" 返回值为任务ID,或错误)(taskSpawn)


sps( )                创建一个任务,并挂起它


tr( )                  恢复一个挂起的任务(与taskResume相同)


ts( )                  挂起一个任务         (与taskSuspend相同)


td( )                  删除一个任务  (与taskDelete相同)


period( )           创建一个周期调用函数的任务


repeat( )           创建一个重复调用函数的任务


taskIdDefault( )  设置并报告当前缺省的任务ID


1.4.2  任务状态信息


i( )           显示系统信息,包括当前任务明、状态等(重复查询目标机,有时可能显示不一致)


iStrict( )    类似于i( ),但只查询目标机一次


ti( )         显示任务的TCB信息 (例如:ti tWdbTask)


w( )              显示所有挂起任务的详细信息。.


tw( )         显示某挂起任务的详细信息。(例如: tw tLogTask


checkState( )  显示一个任务的使用堆栈的总结,没有定义任务时显示所有


tt( )         显示堆栈记录


taskIdFigure( )  报告任务的ID,以及名称


1.4.3  系统信息


devs( )           列出目标机系统上的所有设备


lkup( )           List symbols from  symbol table


lkAddr( )     List symbols whose values are near a specified value


d( )              显示目标机内存


l( )              Disassemble and display a specific nuber of instructions


printError( )  给出最近的错误值


version()     显示VxWorks版本


cd( )         改变宿主机工作目录(不影响目标机)


ls( )           列出宿主机工作目录下的文件


pwd( )              显示宿主机当前工作目录


help( )             显示Shell命令的帮助


h( )                显示最近输入的20个命令


shellHistory( )   设置或显示Shell命令


shellPromptSet( )改变C解释器Shell 提示


printLogo( )       显示Tornado Shell 登陆


1.4.4  系统修改和调试


    ld( )      加载一个对象模块到目标机,并动态连接到run-time


( 例如:ld 1,0,"/Tornado/target/proj/project0/simntgnu/multitasktest.o"


ld() < / Tornado/target/proj/project0/simntgnu/multitasktest.o


错误:返回-1;正确:返回MOUDLE_ID


unld( )        从目标机内存中删除动态连接的对象模块        例:unld (windDemo.o)


m( )           Modify memory in Width(byte,short,long)starting at adr.


MRegs( )       为特定的任务改变寄存器的值


b( )           设置或修改断点  例:b (wdCreate)


bh( )      设置硬件断点


s( )           单步跟踪到下一条指令


so( )      单步跟踪,但跳过子程序


c( )       从断点处继续


cret( )        继续执行,直到当前的子程序返回


bdall( )       删除所有断点


bd( )      删除一个断点


reboot( )  重新启动targe server


bootChange( ) 改变boot参数保存值


sysSuspend( ) 如果目标机代理支持,进入系统模式


sysResume( )      如果目标机代理支持,从系统模式返回到任务模式


agentModeShow( )  显示代理模式(系统模式 或 任务模式)


sysStatusShow( )显示系统上下文(suspend running 系统模式下使用)


quit( ) or exit( )


1.4.5  对象命令( WindSh Commands for Object Display )


  show( )             shell窗口打印特定对象的信息


browse( )           Tornado browser 显示特定的对象


classShow( )   Show information about a class of VxWorks kernel objects.List available classes


taskShow( )          显示任务TCB信息


taskCreateHookShow( )  显示任务创建例程列表


taskDeleteHookShow( )   显示任务删除例程列表


taskRegsShow( )                 显示任务寄存器的内容


taskSwitchHookShow( )   显示任务切换例程列表


taskWaitShow( )                  显示阻塞任务信息


semShow( )                       显示信号量的信息


semPxShow( )               显示POSIX信号量的信息


wdShow( )                  显示看门狗的信息


msgQShow( )                显示消息队列的信息


mqPxShow( )                 显示POSIX消息队列的信息


iosDrvShow( )               显示系统驱动程序的信息


iosDevShow( )             显示系统设备的信息


iosFdShow( )         显示系统命名descriptor的信息


memPartShow( )         显示分区块及统计信息


memShow( )                显示系统分区上空闲和已分配空间的总数等等


smMemShow( )           Display the amount of free space and statistics on


memory-block allocation for the shared-memory system partition


smMemPartShow( )            Display the amount of free space and statistics on


memory-block allocation for a specified shared-memory partition


moduleShow( )            Show the current status for all the loaded modules


moduleIdFigure( )              Report a loaded module's module ID, given its name


intVecShow( )                     Display the interrupt vector table. This routine displays(nt下不可用)


 


 

2            Browser


 可对系统对象(任务、消息队列、信号量等)和存储器使用情况进行观察的浏览器。可以方便地监视用户的 目标系统。Browser汇总了应用进程,内存消耗和一个目标内存的映像。通过 Browser,用户可以观察信号量、消息队列、内存分配、看门狗计时器、堆栈使用情况、目标 CPU使用率、对象模块结构和符号表以及每个任务的详细信息。


Memory Usage


Module Information


Object Information


Spy Chart


Stack Check


Target Information


Tasks

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
5
关闭 站长推荐上一条 /3 下一条