HarmonyOS 鸿蒙Next中Shell:Lite OS在线调试工具知多少

HarmonyOS 鸿蒙Next中Shell:Lite OS在线调试工具知多少 摘要:Shell作为Huawei Liteos在线调试工具,可以通过串口工具输入输出,支持常用的基本调试功能。同时用户可以新增定制的命令,新增命令需重新编译烧录后才能执行。

前言:

很多时候我们在调试应用程式时都无法设置过多断点或是无法观测程序真正的流程动向,哪些语句有没有执行,还有就是手动开启某个自己写的应用的等等,这时候就需要shell命令行的操作,他可以以命令行的方式访问操作系统的功能和服务,接收用户的输入命令,对操作系统的输出进行打印。

1、Huawei Liteos 的shell

Shell作为Huawei Liteos在线调试工具,可以通过串口工具输入输出,支持常用的基本调试功能。同时用户可以新增定制的命令,新增命令需重新编译烧录后才能执行

2、shell功能打开方法

可以通过make menuconfig配置Shell,菜单路径为:Debug —> Enable a Debug Version —> Enable Shell。

配置项 含义 取值范围 默认值 依赖
LOSCFG_SHELL Shell功能的裁剪开关 YES/NO YES LOSCFG_DEBUG_VERSION=y && LOSCFG_DRIVERS_UART=y
LOSCFG_SHELL_CONSOLE(开源版本无该配置项) 设置Shell直接与Console交互 YES/NO YES LOSCFG_SHELL=y
LOSCFG_SHELL_UART 设置Shell直接与uart驱动交互 YES/NO NO LOSCFG_DRIVERS_UART=y

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 swtmr
systeminfo task uname watch

task命令用于查询系统任务信息

当输入 task [ID]时,可以查询到ID为ID的任务信息

比如输入task 0x01时,系统会打印出:

Huawei LiteOS # task 0x01
TaskName = SerialEntryTask
TaskId = 0x01
*******backtrace begin*******
traceback 0 -- lr = 0x1d804 fp = 0xa86bc
traceback 1 -- lr = 0x1da40 fp = 0xa86e4
traceback 2 -- lr = 0x20154 fp = 0xa86fc
traceback 3 -- lr = 0x258e4 fp = 0xa8714
traceback 4 -- lr = 0x242f4 fp = 0xa872c
traceback 5 -- lr = 0x123e4 fp = 0xa8754
traceback 6 -- lr = 0x2a9d8 fp = 0xb0b0b0b

大家可以尝试,自己发现这些系统功能的的作用是什么,也在其实发现更好地应用。

定义命令函数

首先要有一个功能函数还处理命令,需要在头文件中声明功能函数原型。

比如这里定义

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

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

4、注册命令名称。

LiteOS shell有静态注册命令和系统运行时动态注册命令两种注册方式。两种方式主要是内存设定和释放不同,静态注册要求在编译器和设置中打开相关的支持才能生效。一般建议采用动态shell注册,这样简单好操作。

5、用例

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

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

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

注册命令

按照动态注册的要求。

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

编译下载后就可以使用这个命令进行交互了。

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

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

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

2 回复

讲的很细,有学到东西哦

更多关于HarmonyOS 鸿蒙Next中Shell:Lite OS在线调试工具知多少的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


在HarmonyOS鸿蒙Next中,Shell Lite OS在线调试工具是一个强大的调试和诊断工具,主要用于开发和调试嵌入式设备。它支持命令行操作,允许开发者实时监控设备状态、执行系统命令、调试应用程序等。关键功能包括进程管理、内存监控、网络调试等,帮助开发者快速定位和解决问题。通过USB或网络连接设备,开发者可以方便地进行远程调试,提高开发效率。

回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!