1. 程式人生 > >記一次處理rt-thread優先順序低執行緒無法執行

記一次處理rt-thread優先順序低執行緒無法執行

最近升級了rt-thread的核心程式碼,從3.0正式發行不久後,rt-thread採用了KConfig的配置方式,因為以前搞過linux核心配置,所以對KConfig不算太陌生,rt-thread的配置介面用起來還是相當不錯的,詳細用法可以參考官方相關文件。
移置過程還是很順利的就完成了,可以在程式除錯的過程式中出現了相當詭異的現象,開始沒有注意。一直認為是自己執行緒優先順序未處理好,也沒太在意。
詭異現象主要有以下兩點:
1. 動態創建出來的任務,只能建立一次,下次再想建立相同的執行緒無法成功。也即是無法實現動態建立一個任務自動結束,下次需要再建立執行。
2. 程式低優先順序的任務似乎無法執行。

對於低優先順序任務執行不到,那就索性把所有的任務優先順序設定成相同,這樣程式似乎可以手動避免。但無法再次動態建立任務一直未能找到比較好的辦法。

最終實在是沒辦法了,始終感覺不爽,所以下定決心一定要找到原因。終於經過一番努力找到根本原因所在,由於不小心選中finsh shell,又未實現finsh需要的輸入輸出設定console裝置,導致在finsh任務進入while(1),但任務排程並未完全崩潰,只能排程當前最高優先順序的任務,其它低優先順序任務就對不起了,無法運行了。
所以去掉finsh shell勾選後一切正常了。誒,現在看什麼都那麼美好了。