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文章
3683瀏覽量
131395 -
組件
+關注
關注
1文章
532瀏覽量
18424
原文標題:RT-Thread finsh組件工作流程
文章出處:【微信號:RTThread,微信公眾號:RTThread物聯網操作系統】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
RT-Thread學習筆記和finsh shell配置方法
在 RT-Thread Studio 上使用 RT-Thread Nano
【每日一練】RT-Thread Nano-Finsh組件支持(第四節學習視頻)
RT-Thread FinSH 控制臺
RT-Thread的FinSH命令行組件原理是什么
RT-thread系統之LED驅動及finsh組件調試實戰指南
RT-Thread FinSH命令行組件導出自定義msh命令
RT-Thread 應用筆記 - RTC Alarm 組件的使用

RT-Thread全球技術大會:Kconfig在RT-Thread中的工作機制

評論