瞭解RTOS

嵌入式軟件經常要同時完成若干任務,可以在無人干預的情況下應對所有的事件及異常,並且可以根據事件的輕重緩急自動保證最先完成最緊急的任務。
 
嵌入式軟件由RTOS跟其上跑的應用部分軟件組成,應用部分軟件可簡單看成一個個任務,每個任務可以對相關的外界產生的事件或是異常響應。而RTOS的核心功能就是管理各個任務,並建立起任務和外界事件的聯繫。
 
一個典型的任務示意如下:
 
void Task()
{
       for (;;)
       {
              //Do something initial;
              OSFlagPend();
              OSMboxPend();
              OSMutexPend();
              OSQPend();
              OSSempend();
 
              OSTaskPend(priority);
              OSTaskDel(priority);
              OSTimeDly();
             
              /* application code */
       }
}
 
首先任務應該包含一個無限循環,這個循環意在一直處理跟任務自己感興趣的事件。可以看到上面的示意代碼裏有一串的Pend調用,這些Pend函數就是每個RTOS都會提供的,使用了這些Pend調用後RTOS就可以讓這個任務與它感興趣的事件建立起聯繫。如果有它感興趣的事件發生,就會向下執行到application code來處理這個事件。處理完以後又進入循環回等待它感興趣事件的狀態,直到有它感興趣的事件發生,然後又處理,如此周而復此。如果沒有這個任務感興趣事件發生會怎麼呢?那RTOS就會掛起這個任務,去執行其它的任務處理其自身感興趣的事件。如果沒有任何事件發生會怎麼樣呢?這種情況下通常RTOS會運行一個自建的任務TaskIdle(), 這個任務什麼事也不幹,通常是給一個整數進行自加動作。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章