參考 FreeRTOs,orq怎樣工作小節獲取多任務的基本概念任務和聯合程序文檔提供了怎樣判斷何時適合以及何時不適合使用聯合程序的方法,下面是簡單的總結。注意一個系統可以只使用任務、或者只使用聯合程序、或混合使用-但是任務和聯合程序使用不同的API函數,因此一個隊列(或者信號)不能用于從任務傳遞數據到聯合程序,反之亦然。任務"的特性FreeRTOS低于V4.0.0.0的版本只允許實時系統的結構以一組任務的方式組成,這是RTOS調度的傳統模式。簡評 In brief:一個使用RTos的實時應用系統可以由一組獨立的任務組成,每個任務執行它自己的內容而不依賴于其他任務或者調度器。在任何時候只有個任務可以被執行,調度器負責決定哪個任務應當被執行。調度器反復啟動和停止任務(切換任務),因為個任務不清楚調度器的活動,所以在任務切換時保證處理器內容不變(寄存器值、堆棧等)就是實時內核調度器的工作。要做到這點每個任務都需要使用自己的堆棧,當任務切換時運行的參數保存到堆棧中任務再次運行時就可以從堆棧中恢復參數。參考 FreeRTOs怎樣工作小節獲得更多內容。就緒的任務是那些可以執行(沒有被阻塞或暫停),但是因為其他相同或更高優先級任務正在運行造成還沒有運行的任務。阻塞當一個任務等待臨時事件或外部事件時它就是處于阻塞狀態。例如,任務調用 VAsk Delay(),它將被阻塞(置為阻塞狀態)直到超過延時時間個臨時事件。任務也可以阻塞等待隊列和信號事件。阻塞狀態的任務般有一個超時時間,超時后任務將解鎖。阻塞的任務不會參與調度。
標簽:
freertos
上傳時間:
2022-03-19
上傳用戶:kingwide