摘要:Shell作为Huawei Liteos在线调试工具,能够通过串口工具输入输出,反对罕用的根本调试性能。同时用户能够新增定制的命令,新增命令需从新编译烧录后能力执行

本文分享自华为云社区《LIteOS----shell利用(1)零碎shell》,作者:o0龙龙0o 。

前言:

很多时候咱们在调试应用程式时都无奈设置过多断点或是无奈观测程序真正的流程动向,哪些语句有没有执行,还有就是手动开启某个本人写的利用的等等,这时候就须要shell命令行的操作,他能够以命令行的形式拜访操作系统的性能和服务,接管用户的输出命令,对操作系统的输入进行打印。

1、Huawei Liteos 的shell

Shell作为Huawei Liteos在线调试工具,能够通过串口工具输入输出,反对罕用的根本调试性能。同时用户能够新增定制的命令,新增命令需从新编译烧录后能力执行

2、shell性能关上办法

能够通过make menuconfig配置Shell,菜单门路为:Debug ---> Enable a Debug Version ---> Enable Shell。

3、LiteOS 内设Shell命令

烧录新零碎镜像后,重启零碎,如果曾经关上shell性能,既能够从串口中应用零碎自带的Shell性能了。

  • help、date、uname、task、free、memcheck、memused、hwi、queue、sem、mutex、dlock、swtmr、systeminfo、stack、cpup、watch等

通过这些命令我就能够实现对系统的一些基本操作,比方查问工作执行的状况,内存的分配情况及各种命令的帮忙性能。

例如:help命令,在命令行输出help

零碎谁输入以后的所有shell命令:

Huawei LiteOS # help*******************shell commands:*************************cpup          date          dlock         dmesg         free          help          hwilog           memcheck      mutex         queue         sem           stack         swtmrsysteminfo    task          uname         watch

task命令用于查问零碎工作信息

当输出 task [ID]时,能够查问到ID为ID的工作信息

比方输出task 0x01时,零碎会打印出:

Huawei LiteOS # task 0x01TaskName = SerialEntryTaskTaskId = 0x01*******backtrace begin*******traceback 0 -- lr = 0x1d804    fp = 0xa86bctraceback 1 -- lr = 0x1da40    fp = 0xa86e4traceback 2 -- lr = 0x20154    fp = 0xa86fctraceback 3 -- lr = 0x258e4    fp = 0xa8714traceback 4 -- lr = 0x242f4    fp = 0xa872ctraceback 5 -- lr = 0x123e4    fp = 0xa8754traceback 6 -- lr = 0x2a9d8    fp = 0xb0b0b0b

大家能够尝试,本人发现这些零碎性能的的作用是什么,也在其实发现更好地利用。

4、定义命令函数

首先要有一个性能函数还解决命令,须要在头文件中申明性能函数原型。

比方这里定义

int osShellCmdLs(int argc, const char **argv);

个别这里函数须要包过两个参数,argc 和argv字符串指针。argc:Shell命令的参数个数。个数中是否包含命令关键字,和注册命令时的命令类型无关。argv:为指针数组,每个元素指向一个字符串,该字符串就是执行shell命令时传入命令处理函数的参数。参数中是否包含命令关键字,和注册命令时的命令类型无关。

5、注册命令名称

LiteOS shell有动态注册命令和零碎运行时动静注册命令两种注册形式。两种形式次要是内存设定和开释不同,动态注册要求在编译器和设置中关上相干的反对能力失效。个别倡议采纳动静shell注册,这样简略好操作。

6、用例

1、定义一个shell 性能名称为 pf_best,性能是打印“We r best” ,首先定义他的性能

#include "shell.h"#include "shcmd.h"int cmd_pfbest(void){    printf("We r best!\n");    return 0;}

因为不须要出入参数,这里的函数为void空类型。

2、注册命令

依照动静注册的要求。

#include "shell.h"void cmd_init(void){osCmdReg(CMD_TYPE_EX, "pf_best", XARGS, (CMD_CBK_FUNC)cmd_pfbest);}

编译下载后就能够应用这个命令进行交互了。

说完了shell ,大家是不是感觉很简略呢,都来试试吧

更多学习内容,请关注IoT物联网社区

增加华为云IoT小助手微信号(hwc-iot),回复“浏览”获取更多资讯

点击关注,第一工夫理解华为云陈腐技术~