LiteOS之shell使用
【摘要】 说一个说LIteOS中的shell使用
在使用LiteOS系统时,需要使用到利用串口即console进行执行自己的进程,往往需要使用到shell命令,所以需要学习如何在自己的程序中增加shell的使用。
1、shell是啥
Shell在liteOS作为在线调试工具,可以通过串口工具输入输出,支持常用的基本调试功能。同时用户可以新增定制的命令,新增命令需重新编译烧录后才能执行。
2、shell的作用
- 1️⃣为LiteOS提供基础的命令供用户使用,用户可以利用这些命令控制LIteOS系统,并查询相相关信息;
- 2️⃣为用户提供接口,可以将自己的进程和任务进行命令输出,并在console进行交互。
3、如何才能使用Sell
- 首先,要在软件剪裁开关中打开sell功能,即在make menuconfig中选择打开Sell,Debug ---> Enable a Debug Version ---> Enable Shell
- 设置shell连接uart端口,程序通过下面的程序将需要的串口和shell进行连接
- UINT32 ShellStdinLoop(ShellCB *shellCB) { UINT8 ch; while (1) { ch = uart_read(); ShellCmdLineParse(ch, (pf_OUTPUT)dprintf, shellCB); } return 0; }
- 如果需要更改log的存储buf需要设置下面的宏
-
默认8k已经很大了,如果出现buf溢出错误,可以更改该宏#define KERNEL_LOG_BUF_SIZE (8 * 1024)
- 打开shelll功能宏后,LiteOS系统的宏已经可以使用,如果需要自己的进程需要使用宏,需要注册,后面会讲到。
4、系统shell命令
- 设置好,studio IDE 设置好串口号,波特率设置为115200;
- 上电控制板,系统启动后在Log出现“Huawei LiteOS #”的提示符,就可以使用shell了;
- shell有几个常用的键盘特殊字符操作:
-
回车键
执行操作; -
Tab键
可自动联想补全,若有多个匹配项则补全共同字符,并打印多个匹配项。 -
退格键
可删除一个字符,如果在UTF8格式下输入了中文字符,只能通过回退三次来删除。默认模式为英文输入。 -
方向键上下
可选择历史命令。
-
- 常见的系统命令有:help、date、uname、task、free、memcheck、memused、hwi、queue、sem、mutex、dlock、swtmr、systeminfo、log、dmesg、stack、cpup、watch ;使用和Linux的shell比较相似,需要可以查询帮助。
5、自己的task如何注册到shell中
- 定义Shell命令需要处理的任务
int osShellCmdXX(int argc, const char **argv);
argc:Shell命令的参数个数。个数中是否包括命令关键字,和注册命令时的命令类型有关。
argv:为指针数组,每个元素指向一个字符串,该字符串就是执行shell命令时传入命令处理函数的参数。参数中是否包括命令关键字,和注册命令时的命令类型有关。 - 注册到shell命令:分为静态注册和动态注册,建议使用动态注册
-
静态注册XX命令到shell:
#include "shcmd.h" SHELLCMD_ENTRY(XX_shellcmd, CMD_TYPE_EX, "XX", XARGS, (CMD_CBK_FUNC)osShellCmdXX);
-
动态注册XX命令到shell:
#include "shell.h" osCmdReg(CMD_TYPE_EX, "XX", XARGS, (CMD_CBK_FUNC)osShellCmdXX);
- 注册好后,就可以在串口交互中使用XX命令,执行osshellXX函数的功能。
6、总结,善于使用shell是方便LiteOS找bug的很好地一个方法,把自己需要用的tsak在需要时时候打开,然后并且查询系统和进程中信息。
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)