前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Component之Kernel Shell的命令

Component之Kernel Shell的命令

作者头像
Taishan3721
发布2019-07-10 15:27:24
7420
发布2019-07-10 15:27:24
举报
文章被收录于专栏:这里只有VxWorks这里只有VxWorks

今天咱们看看Kernel Shell里都有哪些命令。

如果是第一次用某个系统,你会先输入哪个命令?

我一般先试试help

Kernel Shell里调用命令时,可以省略包含参数的括号,而且默认会给该命令补充10个0作为参数。例如在Shell里键入“help”,等价于“help(0,0,0,0,0,0,0,0,0,0)”;键入“aa 1,2”等价于“aa(1,2,0,0,0,0,0,0,0,0)”。因此我们自己写的函数,参数个数尽量不要超过10个了。

下面咱们分类介绍一下这些命令

Shell本身的命令

  • h(int size) - size等于0时,显示Shell下已调用的命令;size大于0时,设置存储命令的长度,初始值是20
  • version() - 打印VxWorks系统的版本信息和boot line
  • printLogo() - 打印VxWorks的Logo
  • shConfig(char *config) - 参数为NULL时,显示当前Shell的配置参数,否则设置其参数
  • strFree(char *string) - 释放Shell里动态分配的字符指针。参数为0,则打印当前所有字符指针;参数为-1,则释放所有指针。

不过在Shell中直接声明的字符指针,应该用free()来释放

IO设备与内存操作

  • devs() - 打印系统已知的所有IO设备,等价于iosDevShow()
  • iosDrvShow() - 打印系统安装的驱动
  • iosFdShow() - 打印系统所有的文件描述符,可以用来查看当前系统打开了哪些IO设备
  • iosRtpFdShow(RTP_ID rtpId) - 打印指定RTP中的文件描述符
  • stdioShow(FILE *fp, int level) - 打印IO流fp的信息,需包含组件INCLUDE_STDIO_SHOW
  • logShow() - 打印当前活跃的logging文件描述符
  • ataShow(int ctrl,int drive) - 打印硬盘信息,需包含INCLUDE_ATA_SHOW
  • dosFsShow(void *pDevName, u_int level) -打印dosFs volume configuration。需包含INCLUDE_DOSFS_SHOW
  • memShow(int type) - 打印系统内存池的使用情况。0 = summary, 1 = list all blocks in the free list, 2 = list all sections。需包含组件INCLUDE_MEM_SHOW
  • d(void *adrs,int nunits,int width) - 从地址adrs开始,打印nunits个宽度为width的内存块的值。adrs为0时,从上一次的地址之后开始打印;nunits为0时,使用上一次的nunits;width为0时,使用上一次的width。width的取值为2/4/8,否则为1。
  • m(void *adrs,int width) - 从地址adrs开始,依次调整内存的值,每次调整的unit宽度为1/2/4/8,有width决定。每行显示一个unit,回车保留原值,“.”退出。

Task操作

  • i(long taskNameOrId) - 这其实是Shell里使用最频繁的命令,它会打印Task的TCB的概要信息。参数是Task的ID或name,如果为0,则打印当前所有Task的TCB的概要。
  • ti(long taskNameOrId) - 打印指定Task的完整TCB信息,如果参数为0,则打印最近访问的那个Task的信息。
  • show(long objId,int level) - 打印指定系统对象的信息,包括Task、Semaphore、Message Queue、Memory Partition、Watchdog、Symbol Table,可以说这是最强大的命令了,它会调用taskShow()/semShow()/msgQShow()/memPartShow()/wdShow/symShow()
  • w(long taskNameOrId) - 类似于i命令,不过w打印的是Task阻塞的信息
  • tw(long taskNameOrId) - 类似于ti,不过打印的是指定Task阻塞的信息
  • checkStack(long taskNameOrId) - 打印Task的Stack的使用情况。参数为0时,打印当前所有Task的Stack信息。当某个Task的MARGIN小于0,即表示这个Task的Stack溢出了
  • envShow(TASK_ID taskId) - 打印Task的环境变量
  • long sp(FUNCPTR func,long arg1,…,long arg9) - 启动一个Task,等价于taskSpawn(NULL,SHELL_SPAWNED_TASK_PRIORITY,SHELL_SPAWNED_TASK_OPTIONS,SHELL_SPAWNED_TASK_STACK_SIZE,func,arg1,...,arg9,0)。
  • ts(long taskNameOrId) - 挂起Task,它会调用taskSuspend()
  • tr(long taskNameOrId) - 恢复执行已挂起Task,它会调用taskResume()
  • td(long taskNameOrId) - 删除Task,它会调用taskDelete()
  • long period(int secs, FUNCPTR func, long arg1, ..., long arg8) - 启动一个Task,以周期secs调用函数func。可以给func传递8个参数。
  • long repeat(int n, FUNCPTR func,long arg1,..., long arg8) - 启动一个Task,重复n次调用函数func。如果n为0,则无限次调用func,直到该Task被删除。可以给func传递8个参数。
  • mRegs(char *regName,long taskNameOrId) -调整Task寄存器的值。taskNameOrId为0,则使用最近访问的那个Task。regName为无效值时,显示所有可用的寄存器;为0时,依次显示所有寄存器。

包含组件INCLUDE_HW_FP_SHOW后,还可以访问floating point register

  • pc(long taskId) - 打印Task的PC指针,参数0表示当前Task
  • printErrno(int errNo) - 打印指定error状态的值,参数为0时,使用当前Task的error状态。需包含组件INCLUDE_STAT_SYM_TBL
  • taskSwitchHookShow() - Shows the list of task switch routines. 需INCLUDE_TASK_HOOKS_SHOW
  • taskCreateHookShow() - Shows the list of task create routines. 需INCLUDE_TASK_HOOKS_SHOW
  • taskDeleteHookShow() - Shows the list of task delete routines. 需INCLUDE_TASK_HOOKS_SHOW

符号表操作

  • moduleShow(char *moduleNameOrId,int options) - 打印加载的Module信息
  • ld(int syms,BOOL noAbort,char *name) - 将elf格式的module加载到内存中,syms为0表示加载global符号,为1表示加载global和local符号,为-1表示不加载符号
  • lkup(char *substr) - 打印系统符号表中所有包含字符串substr的符号。substr为0时,仅打印符号表的基本信息;为空字符串""时,打印所有符号。每次打印的符号数量为symLkupPgSz,当symLkupPgSz为0时,一次性打印所有符号。
  • lkAddr(unsigned long addr) -从地址addr之前的符号开始,打印12个符号

spy操作

需包含组件INCLUDE_SPY和INCLUDE_AUX_CLK

  • spy(int freq,int ticksPerSec) - 每秒钟采集ticksPerSec次所有Task的活跃时间,每freq秒打印一次。freq为0时,取默认值5;ticksPerSec为0时,取默认值100
  • spyStop() - 结束spy操作

timexHelp

  • timex(FUNCPTR func,int arg1,...,int arg8) - 测试函数func的执行时长,func可带8个参数。func为NULL时,测试由timexFunc(), timexPre(),和timexPost()创建的函数列表。如果func的执行时长过短,则提议使用timexN()
  • timexN(FUNCPTR func,int arg1,...,int arg8) - 类似于timex,但重复调用func,直到误差小于2%
  • timexFunc(int i,FUNCPTR func,int arg1,...,int arg8) - 创建函数列表,用于timex()或timexN()的测试。列表长度为4,参数i指定函数func在列表中的位置,取值0、1、2或3。func为NULL时,表示去除相应位置的函数。
  • timexPre(int i,FUNCPTR func,int arg1,...,int arg8) - 创建测试之前需调用的函数列表。
  • timexPost(int i,FUNCPTR func,int arg1,...,int arg8) - 创建测试之后需调用的函数列表。
  • timexShow() - 打印需要测试的函数列表

ioHelp

需包含组件INCLUDE_DISK_UTIL

IO与文件系统操作

edrHelp

需包含组件INCLUDE_EDR_SHOW

打印EDR的Show命令

netHelp

打印Network函数摘要

  • arpShow() -打印已有的ARP entry,INCLUDE_IPWRAP_ARP
  • sockShow() - 打印所有的Socket。
  • ifShow(char *ifName) - 打印已挂接的网卡,INCLUDE_IPWRAP_IFSHOW
  • routec(char * param) - param为NULL时,打印路由信息。需包含组件INCLUDE_ROUTECMD
  • netstat(char * param) -打印Network数据结构。需包含组件INCLUDE_NETSTAT
  • ifconfig(char * param) - param为NULL时,打印Network接口配置。需包含组件INCLUDE_IFCONFIG
  • muxShow(char *pDevNameint unit) - 打印网卡上绑定的协议

nfsHelp

需包含组件INCLUDE_NFS_CLIENT_ALL

打印Shell里的NFS命令

dbgHelp

打印debug命令。需包含组件INCLUDE_DEBUG

rtpHelp

打印Shell下RTP相关命令。需包含组件INCLUDE_RTP_SHELL_C

Kernel Shell里可以使用的命令还有很多,我们用到的时候再去慢慢研究吧。

这正是:

且学且知己浅,Shell命令万千。

各取所需细看,艺不压身共勉。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-01-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 这里只有VxWorks 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档