一文轻松入门HaaS100诊断调试系统

自古美人都是妖i 提交于 2020-12-07 18:18:41

1、AliOS Things CLI组件介绍

在日常嵌入式开发中,用户经常会自行实现一套类似Linux Shell的交互工具来实现通过串口命令控制设备进入某种特定的状态,或执行某个特定的操作。如系统自检,模拟运行,或者进入手动模式进行设备点动。AliOS-Things原生实现了一套名为CLI(command-line interface)的命令行交互工具,在提供基本的系统交互命令的基础上,也支持用户自定义命令。

 

2、CLI 组件如何使用

用户只需要在aos.mk里包含CLI组件,如

$(NAME)_COMPONENTS += cli

然后重新编译烧录上电即可,系统启动后,操作方法与其他的常用shell类似,按回车有#符号打印,输入help可查看系统自带的几个cli命令:
image

 

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

image

上面截图中各字段的解释为:
HEAP中的内容含义:
• TotalSz:系统可供malloc的动态内存总大小;
• FreeSz:系统当前空闲内存大小;
• UsedSz:系统当前已经分配的内存大小,即UsedSz = TotalSz – FreeSz;
• MinFreeSz:系统空闲内存的历史最小值,即TotalSz – MinFreeSz 便是内存历史使用量峰值;
• MaxFreeBlkSz:系统最大空闲块Size,表示系统此时可供分配出来的内存最大值。





dumpsys mm_info

这个命令可以显示系统当前所有动态内存的申请情况,这个功能对与诊断系统内存泄漏的问题比较有用,它打印出来了此时系统正在使用的动态内存的地址address、大小size、申请者caller等有用信息。
image

 

注意:这个功能依赖k_config.h里宏的打开

#ifndef RHINO_CONFIG_MM_DEBUG
#define RHINO_CONFIG_MM_DEBUG                1
#endif

4.2、任务信息统计 tasklist

image

 

可以看到当前OS默认启动了几个后台任务。关于AliOS Things的OS使用,请关注后续文章。

4.3、任务负载统计 cpuusage

执行命令

cpuusage

可以以1s的周期打印系统当前任务的cpuusage,按ctrl c停止打印
image

 

4.4、显示/修改内存数据的p/m命令

举例说明:需要得到HaaS100系统外设中断的优先级,我们查到数据手册得知0xE000E400为系统外设中断优先级的寄存器地址,可以通过p命令访问系统寄存器或者内存:

p 0xE000E400

image

当我们需要修改一个内存值(或者一个寄存器的值),可以通过m命令,如:下面演示了将位于
0x34027770的地址的值,从0x12345678修改为0xffffffff的过程
image

 

4.5、系统复位命令reboot

reboot是系统热复位命令,命令是通过调用了板级的reboot接口来实现。

 

5、总结

HaaS100的诊断调试系统不止于上面介绍的cli 组件及常见命令,后续将为大家带来更多基于AliOS Things 的诊断调试方法。欢迎大家持续关注HaaS!

 

6、开发者技术支持

如需更多技术支持,可加入钉钉开发者群

更多技术与解决方案介绍,请访问阿里云AIoT首页https://iot.aliyun.com/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!