关键词:
摘要: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 hwi
log 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
大家可以尝试,自己发现这些系统功能的的作用是什么,也在其实发现更好地应用。
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),回复“阅读”获取更多资讯
fiddler原理~知多少?
...骗子的意思。那么它是干什么的呢?#Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。Fiddler要比其他的网络调... 查看详情
fiddler原理~知多少?
...骗子的意思。那么它是干什么的呢?Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。Fiddler要比其他的... 查看详情
arthas在线java进程诊断工具在线调试神器(代码片段)
Arthas在线java进程诊断工具在线调试神器tag:java诊断堆栈在线调试耗时死锁arthas阿里巴巴Arthas是Alibaba开源的Java诊断工具,深受开发者喜爱。官网文档:https://arthas.aliyun.com/doc/当你遇到以下类似问题而束手无策时,Arthas... 查看详情
gtk4listmodel知多少?(代码片段)
【GTK4】LISTMODEL总结文章目录【GTK4】LISTMODEL总结一、LISTMODEL创建、管理工具1️⃣GtkSliceListModel2️⃣GtkFlattenListModel3️⃣GtkMapListModel二、LISTMODEL的具体应用1️⃣Pangoobjects2️⃣GtkDirectoryList和GtkBookmarkList3️⃣GtkDropDown三、LI 查看详情
gtk4listmodel知多少?(代码片段)
【GTK4】LISTMODEL总结文章目录【GTK4】LISTMODEL总结一、LISTMODEL创建、管理工具1️⃣GtkSliceListModel2️⃣GtkFlattenListModel3️⃣GtkMapListModel二、LISTMODEL的具体应用1️⃣Pangoobjects2️⃣GtkDirectoryList和GtkBookmarkList3️⃣GtkDropDown三、LI 查看详情
adb命令知多少?详细adb命令大全来啦
...、ADB简介1、什么是ADB?ADB全称为AndroidDebugBridge,起到调试桥的作用,是一个客户端-服务器端程序。其中客户端是用来操作的电脑,服务端是Android设备。ADB也是AndroidSDK中的一个工具,可以直接操作管理Android模拟器... 查看详情
fortran语言在线代码运行编译工具推荐
Fortran语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Fortran语言代码,点击运行,可在线编译运行Fortran语言,Fortran语言代码在线运行调试,Fortran语言在线编译,可快速在线测试您的Fortran语言代码,在线编译Fortran语言代码发... 查看详情
php语言在线代码运行编译工具推荐
PHP语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入PHP语言代码,点击运行,可在线编译运行PHP语言,PHP语言代码在线运行调试,PHP语言在线编译,可快速在线测试您的PHP语言代码,在线编译PHP语言代码发现是否存在错误,如果... 查看详情
swift语言在线代码运行编译工具推荐
Swift语言在线运行编译,是一款可在线编程编辑器,在编辑器上输入Swift语言代码,点击运行,可在线编译运行Swift语言,Swift语言代码在线运行调试,Swift语言在线编译,可快速在线测试您的Swift语言代码,在线编译Swift语言代码发现是否存... 查看详情
antlr4入门:在线语法调试塈maven项目中使用语法调试工具testrig(代码片段)
ANTLR是一款强大的语法分析器生成工具,可用于读取、处理、执行和翻译结构化的文本和二进制文件。它被广泛用于学术领域和工业生产实践,是众多语言、工具和技术框架基石。一门语言的正式描述称为语法(grammar)... 查看详情
unitofwork知多少(代码片段)
原文链接:https://www.cnblogs.com/sheng-jie/p/7416302.html1.引言Maintainsalistofobjectsaffectedbyabusinesstransactionandcoordinatesthewritingoutofchangesandtheresolutionofconcurrencyproblems.UnitofWork 查看详情
antlr4入门:在线语法调试塈maven项目中使用语法调试工具testrig(代码片段)
...效的调试工具,本文介绍ANTLR的两种语法调试方式。在线语法调试工具/lab.antlr.orglab.antlr.org是ANTLR提供的在线语法调试工具地址。你可以如下将自己的语法文件复制(也支持鼠标拖拽)到Parser输入区,在输入文本区输入要测... 查看详情
射频&天线设计-db知多少
《射频&天线设计-dB知多少》在调试射频输出功率时经常听到“相差多少dB”,刚入门的话听得一脸懵逼,当然这种通俗单位别人也懒得跟你解释。分贝(dB)是一个对数单位(logarithmicunit),最初用... 查看详情
射频&天线设计-db知多少
《射频&天线设计-dB知多少》在调试射频输出功率时经常听到“相差多少dB”,刚入门的话听得一脸懵逼,当然这种通俗单位别人也懒得跟你解释。分贝(dB)是一个对数单位(logarithmicunit),最初用... 查看详情
android底层原理你知多少?你来说说handler吧!(代码片段)
...道,它通常被我们用来做主线程与子线程之间的通信工具,而Handler作为Android中消息机制的重要一员也确实给我们的开发带来了极大的便利。可以说只要有异步线程与主线程通信的地方就一定会有Handler。那么,Handler... 查看详情
io模型知多少|代码篇(代码片段)
引言之前的一篇介绍IO模型的文章IO模型知多少|理论篇比较偏理论,很多同学反应不是很好理解。这一篇咱们换一个角度,从代码角度来分析一下。socket编程基础开始之前,我们先来梳理一下,需要提前了解的几个概念:socket:直... 查看详情
07linux一个完整的shell脚本调试工具(代码片段)
一个完整的shell脚本调试工具常用的日志输出形式使用OOP编程思想设计log函数让log方法象log4j一样输出时前面带日期和时间为日志输出添加开关划分日志等级并添加颜色输出到文件为什么输出没有颜色?见下图总结执行shell脚... 查看详情
玩转springboot原理篇(核心注解知多少)(代码片段)
type=FilterType.CUSTOM,classes=TypeExcludeFilter.classtype=FilterType.CUSTOM,classes=AutoConfigurationExcludeFilter.classSpringBootApplicationSpringBootConfigurationComponentScanEnableAutoConfiguratio 查看详情