日志档案

发表于 2006-10-26 12:49:56

26

标签: WindSh  and  Browser  

WindShandBrowser

     WindSh and Browser

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功能包含自定义程序的说明显示

à 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

系统分类: 嵌入式   |   用户分类: tornado   |   来源: 无分类   |   【推荐给朋友】   |   【添加到收藏夹】

    阅读(1172)    回复(1)  

投一票您将和博主都有获奖机会!

最新评论

  • 于凤新

    2006-12-27 10:14:25

    标记一下!!

    呵呵!