一文輕鬆入門HaaS100診斷調試系統

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/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章