今天咱们看看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本身的命令 不过在Shell中直接声明的字符指针,应该用free()来释放 IO设备与内存操作 iosRtpFdShow(RTP_ID rtpId) - 打印指定RTP中的文件描述符
stdioShow(FILE *fp, int level) - 打印IO流fp的信息,需包含组件INCLUDE_STDIO_SHOW
Task操作
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阻塞的信息
envShow(TASK_ID taskId) - 打印Task的环境变量 long sp(FUNCPTR func,long arg1,…,longarg9) - 启动一个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,longarg1,..., 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后,还可以访问floatingpoint register taskSwitchHookShow() - Shows the listof task switch routines. 需INCLUDE_TASK_HOOKS_SHOW taskCreateHookShow() - Shows the listof task create routines. 需INCLUDE_TASK_HOOKS_SHOW taskDeleteHookShow() - Shows the listof task delete routines. 需INCLUDE_TASK_HOOKS_SHOW
符号表操作 moduleShow(char *moduleNameOrId,intoptions) - 打印加载的Module信息 ld(int syms,BOOL noAbort,char *name) - 将elf格式的module加载到内存中,syms为0表示加载global符号,为1表示加载global和local符号,为-1表示不加载符号
spy操作 需包含组件INCLUDE_SPY和INCLUDE_AUX_CLK
timexHelp timex(FUNCPTR func,int arg1,...,intarg8) - 测试函数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,intarg1,...,int arg8) - 创建函数列表,用于timex()或timexN()的测试。列表长度为4,参数i指定函数func在列表中的位置,取值0、1、2或3。func为NULL时,表示去除相应位置的函数。 timexPre(int i,FUNCPTR func,intarg1,...,int arg8) - 创建测试之前需调用的函数列表。 timexPost(int i,FUNCPTR func,intarg1,...,int arg8) - 创建测试之后需调用的函数列表。 timexShow() - 打印需要测试的函数列表
ioHelp 需包含组件INCLUDE_DISK_UTIL IO与文件系统操作 edrHelp 需包含组件INCLUDE_EDR_SHOW 打印EDR的Show命令 netHelp 打印Network函数摘要
nfsHelp 需包含组件INCLUDE_NFS_CLIENT_ALL 打印Shell里的NFS命令
dbgHelp 打印debug命令。需包含组件INCLUDE_DEBUG rtpHelp 打印Shell下RTP相关命令。需包含组件INCLUDE_RTP_SHELL_C Kernel Shell里可以使用的命令还有很多,我们用到的时候再去慢慢研究吧。 这正是: 且学且知己浅,Shell命令万千。 各取所需细看,艺不压身共勉。 我是泰山,专注VX14年!
|