LiteOS之shell使用

举报
o0龙龙0o 发表于 2021/06/16 20:33:25 2021/06/16
【摘要】 说一个说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需要设置下面的宏
  • #define KERNEL_LOG_BUF_SIZE (8 * 1024)

    默认8k已经很大了,如果出现buf溢出错误,可以更改该宏
  • 打开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中

  1. 定义Shell命令需要处理的任务 
    int osShellCmdXX(int argc, const char **argv);

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

  2. 注册到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);
    PS:对于静态注册命令方式,在build/mk/liteos_tables_ldflags.mk中设置链接选项(LITEOS_TABLES_LDFLAGS变量).
  • 注册好后,就可以在串口交互中使用XX命令,执行osshellXX函数的功能。

6、总结,善于使用shell是方便LiteOS找bug的很好地一个方法,把自己需要用的tsak在需要时时候打开,然后并且查询系统和进程中信息。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

举报
请填写举报理由
0/200