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://www.uj5u.com/qita/230633.html
標籤:其他
上一篇:使用mesh、Lora、NB通訊方式快速搭建共享停車位物聯網解決方案
下一篇:用Java撰寫一個猜數程式
