1、AliOS Things CLI组件介绍
在日常嵌入式开发中,用户经常会自行实现一套类似Linux Shell的交互工具来实现通过串口命令控制设备进入某种特定的状态,或执行某个特定的操作。如系统自检,模拟运行,或者进入手动模式进行设备点动。AliOS-Things原生实现了一套名为CLI(command-line interface)的命令行交互工具,在提供基本的系统交互命令的基础上,也支持用户自定义命令。
2、CLI 组件如何使用
用户只需要在aos.mk里包含CLI组件,如
$(NAME)_COMPONENTS += cli
然后重新编译烧录上电即可,系统启动后,操作方法与其他的常用shell类似,按回车有#符号打印,输入help可查看系统自带的几个cli命令:
3、如何增加自定义的CLI命令
包含头文件
#include "aos/cli.h"
API | 入参 | 返回值 |
aos_cli_register_command | cli_command* | 0执行成功;其他:失败 |
调用示例:
-
/*参考代码*/
-
const
struct cli_command command = {
"debug",
"show debug info", debug_cmd };
-
ret = aos_cli_register_command(&command);
-
if (ret) {
-
/*错误处理*/
-
}
-
-
void debug_cmd(char *buf, int32_t len, int32_t argc, char **argv)
-
{
/*cli 命令实现*/ }
4、常见的cli命令介绍
4.1、内存状态统计
这个功能依赖debug组件,即在aos.mk下增加
$(NAME)_COMPONENTS += cli debug
重新编译上电,执行命令
dumpsys mm
上面截图中各字段的解释为:
HEAP中的内容含义:
• TotalSz:系统可供malloc的动态内存总大小;
• FreeSz:系统当前空闲内存大小;
• UsedSz:系统当前已经分配的内存大小,即UsedSz = TotalSz – FreeSz;
• MinFreeSz:系统空闲内存的历史最小值,即TotalSz – MinFreeSz 便是内存历史使用量峰值;
• MaxFreeBlkSz:系统最大空闲块Size,表示系统此时可供分配出来的内存最大值。
dumpsys mm_info
这个命令可以显示系统当前所有动态内存的申请情况,这个功能对与诊断系统内存泄漏的问题比较有用,它打印出来了此时系统正在使用的动态内存的地址address、大小size、申请者caller等有用信息。
注意:这个功能依赖k_config.h里宏的打开
-
#ifndef RHINO_CONFIG_MM_DEBUG
-
#define RHINO_CONFIG_MM_DEBUG 1
-
#endif
4.2、任务信息统计 tasklist
可以看到当前OS默认启动了几个后台任务。关于AliOS Things的OS使用,请关注后续文章。
4.3、任务负载统计 cpuusage
执行命令
cpuusage
可以以1s的周期打印系统当前任务的cpuusage,按ctrl c停止打印
4.4、显示/修改内存数据的p/m命令
举例说明:需要得到HaaS100系统外设中断的优先级,我们查到数据手册得知0xE000E400为系统外设中断优先级的寄存器地址,可以通过p命令访问系统寄存器或者内存:
p 0xE000E400
当我们需要修改一个内存值(或者一个寄存器的值),可以通过m命令,如:下面演示了将位于
0x34027770的地址的值,从0x12345678修改为0xffffffff的过程
4.5、系统复位命令reboot
reboot是系统热复位命令,命令是通过调用了板级的reboot接口来实现。
5、总结
HaaS100的诊断调试系统不止于上面介绍的cli 组件及常见命令,后续将为大家带来更多基于AliOS Things 的诊断调试方法。欢迎大家持续关注HaaS!
6、开发者技术支持
如需更多技术支持,可加入钉钉开发者群,或者关注微信公众号
更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/
转载:https://blog.csdn.net/HaaSTech/article/details/110659765