3_2_AliOS Things 命令行介绍|学习笔记

简介: 快速学习3_2_AliOS Things 命令行介绍。

开发者学堂课程【HaaS 物联网应用开发课程3_2_AliOS Things 命令行介绍】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/801/detail/13827


3_2_AliOS Things 命令行介绍

 

内容介绍

一、CLI 原理介绍

二、常用 CLI 命令介绍

三、添加 CLI 命令

 

一、CLI 原理介绍

本节课程的主题是 AliOS Things 命令行在本节课中会给大家介绍一下命令行的原,然后接下来给大家介绍AliOS Things 常用的命令行然后第三个如何添加一个自己的命令行指令

图片23.png

首先是命令行的交互原理,CommandLine Interface CLI 的缩写,它是命令行交互接口操作系统提供的命令行交互功能一般都是通过 UART 或者是 USB 作为用户输入输出的接口接收用户输入的指令解析指令并且对其进行执行AliOS Things 操作系统的 cli 组件也可以通过 UART 或者是 USB 或者其他方式和用户进行交互,那在 Haas EDU K1 上是通过 UARTO 作为通道和用户进行交互的

第一是组建或者是应用在启动的时候,它向 CUI 模块注册自己所关注的一个测试指令注册之后 CUI 组件就会把这个指令以及对应指令的处理程序记录在自己的模块内部然后第二是用户通过 UART 输入了一个测试指令,那 CUL 组件会对这个测试指令进行解析解析,然后会和自己记录的 CUL 指令进行匹配如果匹配成功,则会呼叫对应 CUL 指令的一个处理函数,然后呼叫处理函数的时候,也就是会呼叫到组建实现 API 或者是应用实现的 API 里面对这个命令进行处理那个函数这个函数里边做什么样的事情就是有组建或者是应用来处理的

AliOS Things CLI 的源代码是位于 core/cli  这个目录下边,然后如果需要使用 CLI 的功能,需要添加依赖关系或者是在应用的 aos.mk 中添加:$(NAME)_COMPONENTS += cli然后或者是说在应用的 Config.in 中添加:select AOS_COMP_CLI 来选择 CLI 组件选择好之后进行编译烧录,然后系统再启动的时候,在串口工具里边敲入回车机会出现#提示符,则代表 cli 组件正常运行了。

图片22.png


二、常用 CLI 命令介绍

图片21.png

接下来对常见 CLI 做一个介绍在敲入 help 指令之后, CLI 组件会把当前系统所支持的所有的指令给打印出来然后看一下它 help 的输出,首先第一行它提示说 #同时支持4条 cli 指令,也就是说同时可以输入4条 cli 指令,并且只要用分号隔开,然后 cli  模块就会按顺序的执行这四条指令,ystem version 打印系统版本号reboot system系统重启system time 打印系统启动时间msleep 是让CLI 延时一段时间它的单位是毫秒、cpuusage 是周期性显示CPU使用频率,默认时间间隔为1秒一次、show debug info 是显示系统的调试信息、P和m这两个也比较有,在出现问题的时候,可以动态的去修改 memory 的一些值然后改编程序的运行行为来做调试 run a function  是手动执行一个函数。Console show pc addr 是显示当前 PC 地址、 Console trigger system hung  是触发系统hang机的动作,尤其是在出现系统不响应或者是什么情况下,如果想查看当前系统的一些寄存器的状态的时候,可以使用  hang  这条指令,手动触发死机这样的动作,然后使用调试工具里面的一些测试指令,对系统进行调试Tasklist 是显示当前系统的所有 task  信息、dumpsys 是打印系统内存及  heap 分配情况、udp 则是向指定 IP:PORT 发送 UDP data。后边还有很多就不再一一介绍了

接下来对阿里性质当中用的比较多的指令做一个演示,这边是一个工程环境,为了延迟方便不让系统默认打印很多 log hello world 这句给注释掉,然后刚刚其实已经编译了,然后编译已经下载成功了

图片20.png

接下来就来看一下的输出日志是否还存在,这个时候看到已经没有再输出任何日志了,来看一下 Help 打印出来的就是现在系统里边支持的所有的命令都显示在这个地方所以就针对刚刚所说的那几条,然后一个一个的做演示

首先是 dumpsys 可以打印现在内存的状态统计信息dumpsys 有两个,一个是 dumpsys mm,一个是 dumpsys heap 。现在来演示一下 dump mm可以看到这边的 heap 的 total size 指的是系统可以供 vlog 使用的动态内存的总大小free size 系统当前空闲内存的大小,use size 是当前已经分配的内存的大小然后 minimum free size 是系统空闲内存的历史最小值,然后 maximum free block size 是指系统的最大动力空闲块

图片19.png

再来看一下一条指令是 task list可以通过这人可以看到当前 os 启动了多少条 task ,然后每个 task 的优先级是怎么样的?当前的状态是怎么样的?每个 task  size 设定的是多大,然后在整个 task 运行过程当中,它的历史 task size 最小值是怎么样的?然后它运行的时间有多长

然后其他占用的 CPU loading 是多大接下来是 CPU usage,这个地方提示说已经开始去统计 CPU 的利用率了,现在是以每秒打印一次的频率来打印当前 CPU 的占用率,可以看到当前刚刚 task list 里面列出来的,然后现在因为没有什么事情在做,所以就基本上只有占用99.6%的 CPU,然后 CPU 占有的很少输入之后看看它周期性的打印,所以这个时候输入 ctrl c它就不会再继续打印了

接下来演示一下读取和修改当前内存数据的两条指令,一个是 p,一个是 m p 是 printn 的意思,假如说要修改一个内存地址为0x340 27770地址的值的时候,先打印一下它的0x340 27770,然后可以看到这个寄存器开始的这些内存里面的值都是零,那现在用 m 来修改一下X34027770,给改成零x12345678,这样然后就会打印一条 log在这个地址原来的只是0x ,然后现在修改到 x12345678了之后再使用 P0x34027770,然后打印一下它里面的,看看它里面的值有没有改过来,现在可以看到这个地址的值已经改成12345678了最后再来演示一下 reboot CLI 再收到 reboot 之后就会做系统重启的动作,可以看到现在系统已经重启成功了

 

三、添加 CLI 命令

图片18.png

下面内容最后来介绍一下如何添加一个 CLI 指令首先对 CLI 接口的一个重要数据结构做一个说明,这段数据结构它的结构声明是在 include/aos /cli.h 里边,它有一个名字叫 struct cli_command 的一个结构体它里面总共有三个变量,第一个是 name,第二个是 help第三个是 function,这个 name 其实就是命令行里边提示命令的一个名字,然后 help 就是刚刚敲 help 指令的时候前面会显示命令的名字后面有一连串说明的字串,这个字串就是从 help 这个地方打印出来的,下面就是定义一个 function 处理函数这里边的参数就不详细介绍了

然后看一下使用 CLI 的一个步骤,首先要包含刚刚的 cli.h 这个文件,第二步要实现自己的命令行处理的函数,第三是在组建或者是应用初始化函数中需要去呼叫 aos_cli_register_commands把这一条指定注册的 cli 模块中去第四编译烧录第五步系统启动之后,然后用 help 来看添加的测试指令第六可以执行新增测试指令

图片17.png

这就是那几的展开说明,首先要包含 aos /cli.h 的头文件然后要实现自己的命令行处理函数,假如说名字叫led_switch ,那要声明一下自己的这条命令对应一个重要数据结构叫 struct cli ,名字叫 led switch command这条测试程序的一个测试指令名字就叫 LED switch,然后 help 里边输入说假如说 help 后面带着 on ,然后就会打印 turn on 如果带 off 再打 turn off led to ,然后点 function 就是 led switch 这个函数的 point 那 led_switch 里面实现的功能是怎么样的?

那先来看一下假如说参数为空,那就可以直接报错返回就可以了。接下来对第一个参数进行检查,假如说这个参数和 on 匹配并且跟 on 完全匹配,然后打印 LED ON command received,然后如果跟 on 不完全匹配,则打印LED  OFF command received,然后接下来要在组建或者是应用的始化函数中呼叫

aos_cli_register_commands ,然后把 led_switch_command 这条注册到 cli 组建中去,然后编译烧录之后系统启动插入 help ,然后就可以看到 LED switch 这条指令以及 LED switch 的一个说明了假如说输入的是 LED switch on,会打印 LED_ON command received 。

假如输入 led_switch off 则会打印 LED  OFF command received。假如输入的是 led_switch o ,因为 o 与 on 不完全匹配,所以也会打印 LED  OFF command received 。接下来对这个过程进行一下演示还是用刚刚新创建的那个Neo components,进到该代码的下面,为了效率更快把刚刚的测试代码然后放到  cli _test.c 这个文件里面来看这边生成了一个 led_switch然后把这个 cli_switch_command 的结构体写在这个地方,然后实现 led_switch 的处理函数,如果检测到输入的参数是 on 就打印下来,这个地方写了一个函数去呼叫 aos_ cli_register_command,然后把注册的 cli 指令模块当中去接下来要在 aos.mk 里面把 cli test上的 .c 放到文件里面去,这样系统在编译的时候才会编译到这个文件

然后再来看一下 new component.c 里边在刚刚的 new component welcome 里面去呼叫 component_cli_test_init,它就是刚刚注册 cli 指令的那个函数

接下来就去看一下 workspace 里面去呼叫这个 new_comp 函数的地方呼叫这个 new component welcome 的时候,然后就会去向 cli 注册一条指令,这样来进行一下编译同样是先执行一下 make然后执行 helloworld_demo@haaseduk1-c config,等编译完成之后通过aos   upload 将 helloworld_demo 这个应用程序收入到板子当中去

这个时候再选择一个 port ,然后就开始进行这边销售完成之后再新起一个窗口,然后来看一下第一个前面的串口是叫什么启动 picocom ,现在这个时候来交流一下 help ,看一下新增加的指令 led switch已经添加到这个地方了,然后后边的 help 写的是 on turn to turn off two ,然后来执行一下 led _switch,然后打开 led_switch off,然后输入一个,这样提示的也是 LED off received,程序设计的逻辑是一样的

相关文章
|
物联网 Linux
【AliOS Things学习笔记】为你的AliOS Things应用增加自定义cli命令
怎么才能在RTOS系统中,通过 串口shell控制LED的开关。
3584 0
|
AliOS-Things 物联网 编译器
使用HaaS Studio开发AliOS Things C/C++应用
本文章将介绍使用HaaS Studio 进行AliOS-Things C/C++应用开发。
使用HaaS Studio开发AliOS Things C/C++应用
|
传感器 存储 移动开发
使用AliOS Things快速构建温度计应用 |《AliOS Things快速开发指南》
本文是基于AliOS Things 3.1快速构建温度计的应用场景。涉及AliOS Things组件开发,构建AliOS Things用户项目,AliOS Things HAL API使用,向AliOS Things中添加并使用组件。用到的硬件设备有半导体开发板、温度传感器、数码管显示器。
使用AliOS Things快速构建温度计应用 |《AliOS Things快速开发指南》
|
域名解析 移动开发 数据可视化
使用 AliOS Things 3.0 快速构建用户应用 BlinkAPP
AliOS Things 3.0版本于去年9月份在云栖大会正式发布,在新版本中带来了全新的应用开发框架,帮助用户快速构建自己的应用。使用户可以更专注于自身应用的开发。本文将已BlinkAPP为例,为大家演示如何快速使用应用开发框创建项目并完成应用代码编写。
911 0
使用 AliOS Things 3.0 快速构建用户应用 BlinkAPP
|
物联网 AliOS-Things 机器人
AliOS Things 3.0 应用笔记:摄像头配网 + 钉钉群通知 + 天气显示
距离 AliOS Things 3.0 上线已经有一段时间了,新版的 AliOS Things 3.0 体验感到底如何呢?本文将为大家详细讲解其应用实例,我们分别从运行流程、效果展示、操作流程以及源码讲解四个方面进行了阐述。
1700 0
|
物联网 传感器 API
AliOS Things 3.0应用笔记:http client简单应用
AliOS Things 3.0版本新增加了httpc组件(http 客户端组件),httpc组件支持多种RESTful的API调用,包括GET、POST、PUT、HEAD等,也支持https安全协议。
12208 1
|
物联网 机器人 AliOS-Things
|
物联网 机器人 AliOS-Things
AliOS Things 3.0应用笔记:摄像头配网 + 钉钉群通知 + 天气显示
AliOS Things 3.0应用笔记:摄像头配网 + 钉钉群通知 + LCD天气显示
3330 0
|
传感器 移动开发 物联网
AliOS Things 3.0应用笔记:http client简单应用
AliOS Things 3.0版本于9月27日在云栖大会正式发布,在新版本中带来了全新的应用开发框架,帮助用户快速构建自己的应用。使用户可以更专注于自身应用的开发。 本示例是基于AliOS Things 3.0应用开发框架做的一个简单的http client应用,通过http API请求获取当前的天气信息。
4318 0