写点什么

Shell:Lite OS 在线调试工具知多少

发布于: 1 小时前

摘要: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 命令,在命令行输入 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),回复“阅读”获取更多资讯


点击关注,第一时间了解华为云新鲜技术~

发布于: 1 小时前阅读数: 2
用户头像

提供全面深入的云计算技术干货 2020.07.14 加入

华为云开发者社区,提供全面深入的云计算前景分析、丰富的技术干货、程序样例,分享华为云前沿资讯动态,方便开发者快速成长与发展,欢迎提问、互动,多方位了解云计算! 传送门:https://bbs.huaweicloud.com/

评论

发布
暂无评论
Shell:Lite OS在线调试工具知多少