VxWorks Shell

来源:互联网 发布:软件版本说明模板 编辑:程序博客网 时间:2024/05/21 10:05

通常操作系统的操作过程中必须具有一个输入/输出的方式对系统进行控制,如DOS上的控制台(shell)或者Windows上的DOS Shell.在DOS Shell中可以输出如dir等DOS命令对Windows操作系统进行操作,它的输入使用标准键盘输入,而输出则使用显示输出.这样就为用户提供了一个操作Windows操作系统的方式.

      在嵌入式系统中运行的程序同样需要这样的Shell,这不仅对Vxworks这样的操作系统而言,对于UBOOT等bootloader程序同样需要.这种Shell通常叫做Target Shell,它为运行于目标机(target)中的程序提供了一个操作界面.在嵌入式系统中,由于一般没有标准键盘和显示器,因此输入/输出设备往往借助于主机上的软件完成.

      VxWorks shell 是用于与VXWorks系统交互的命令行界面.你可以使用命令加载程序,进行简单的debug.VxWorks是一个单用户系统,所以在同一时间内只能运行一个shell.当你输入shell命令,shell将执行该命令,然后打印返回值.

与unix shell的区别
与Unix Shell 区别很大,简单来说,它是一个C解释器,它使用C语法,除了下面的一些不同;
1.使用符号 < 和 > 支持I/O 重定向.
2.不能声明变量类型(尽管支持casting)
3.未决参数默认为0.
4.不需要圆括号
5.行尾不需要分号

所以说,与其它Shell相比,VxWorks shell更像c

VxWorks Shell的作用
VxWorks系统调用,全局函数调用

我们通过在shell中输入函数名和参数(用,号隔开),可以使用shell直接使用VxWorks系统调用或加载模块中的全局函数.例如,unix标准函数time(),输入为指针参数,返回自1970年1月1日来过去的秒数,在shell中输入time,打印如下值:
value = 341193 = 0x534c9 = _trcStack + 0x185
注意打印值是十进制和十六进制的.和一些神秘的符号.
你将在符号表中找到这些符号.同时我们也注意到,你并没有输入time后的圆括号和括号中的参数(参数默认值为0).

检查并设置变量(已定义&未定义)
我们可以通过输入变量名来检查和设置全局变量的符号,例如,我们想知道"shellTaskId"的值,
-> shellTaskId 
-> shellTaskId = 0x7b760: value = 3488644 = 0x353b84

设置shell task的优先级为5
-> shellTaskPriority=5 
-> shellTaskPriority = 0x6c864: value = 5 = 0x5

你也可以创建新变量:
-> myNewVar=0 
-> new symbol "myNewVar" added to symbol table. myNewVar = 0x3fdd3c: value = 0 = 0x0

通常,我们必须用引号修饰字符串参数,除非当字符串是重定向的文件名或设备名.


VxWorks 符号表

       虽然VxWorks是装载时链接,它必须保留一个符号表.它包括符号名和符号值.符号名是函数名,符号值是函数地址,全局函数和全局符号都可以在符号表中找到,当VxWoks Shell 打印命令返回值时,它打印的最后一个值是符号表中距返回地址最近的符号加上偏移值.

符号表中的符号可以覆盖,但最好不要覆盖.

0 0
原创粉丝点击