finsh是RT-Thread的命令行外殼(shell),提供一套供用戶在命令行的操作接口,主要用于調試、查看系統信息。在大部分嵌入式系統中,一般開發調試都使用硬件調試器和printf日志打印,在有些情況下,這兩種方式并不是那么好用。比如對于RT-Thread這個多線程系統,我們想知道某個時刻系統中的線程運行狀態、手動控制系統狀態。如果有一個shell,就可以輸入命令,直接相應的函數執行獲得需要的信息,或者控制程序的行為。這無疑會十分方便。
finsh支持兩種模式:
1. C語言解釋器模式, 為行文方便稱之為c-style;
2. 傳統命令行模式,此模式又稱為msh(module shell)。C語言表達式解釋模式下, finsh能夠解析執行大部分C語言的表達式,并使用類似C語言的函數調用方式訪問系統中的函數及全局變量,此外它也能夠通過命令行方式創建變量。在msh模式下,finsh運行方式類似于dos/bash等傳統shell。
大致工作流程
一、finsh組件初始化函數finsh_system_init(),并且添加了INIT_COMPONENT_EXPORT(finsh_system_init),支持組件初始化;
這個函數會初始化finsh組件,包括一些finsh變量以及相關數據結構。
然后它會創建一個線程,代碼如下:
可以看到,線程函數是finsh_thread_entry,在下一節中我們將分析它具體工作流程。
二、void finsh_set_device(const char* device_name)函數為finsh設置終端設備,在stm32中主要設置串口設備為終端。該函數一般放在組件初始化函數rt_component_init()后面,因為要先完成finsh組件初始化才能設置終端設備。
-
嵌入式系統
+關注
關注
41文章
3593瀏覽量
129473 -
組件
+關注
關注
1文章
512瀏覽量
17826
原文標題:RT-Thread finsh組件工作流程
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論