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/