新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應用 > 介紹一種實時操作系統(tǒng)DSP/BIOS

介紹一種實時操作系統(tǒng)DSP/BIOS

作者: 時間:2009-04-09 來源:網(wǎng)絡(luò) 收藏

所有SWI任務共享一個堆棧,SWI任務只能在程序編制時預先定義好。/中對任務的動態(tài)產(chǎn)生和對阻塞狀態(tài)的支持是通過TSK模塊來實現(xiàn)的。TSK有15個優(yōu)先級,也是可以搶斷的,但是每個TSK任務使用獨立的堆棧。TSK任務是通過TSK_create()和TSK_delete()來動態(tài)生成和結(jié)束的。它的運行狀態(tài)如圖2所示。

5  同步(SEM/ATM/QUE/MBX)
  多任務系統(tǒng)中多個任務之間的協(xié)調(diào)同步工作可以通過多種方法來實現(xiàn)。常用方法如信號量、原子量、隊列和郵箱等。在/中對這些方法的支持分別通過模塊SEM、ATM、QUE和MBX來實現(xiàn)。由于這些方法的使用與一般的完全一樣,在這里就不再贅述了。僅就最靈活的在SWI中使用Mailbox的方法來加以簡單地說明。每個SWI任務都帶有一個Mailbox,對它的操作可以是計數(shù)型的SWI_inc()、  SWI_dec()  也可以是比特位操作型的  SWI_or()、  SWI_andn()。Mailbox控制SWI任務被調(diào)度的條件。這些操作的功能如表2所示。

 or操作是將Mailbox中的某一位置1,同時引起SWI任務的調(diào)度。當一個SWI任務可能由多個事件觸發(fā)時,使用or操作可以方便地表示出觸發(fā)的事件。如例3使用or操作指示觸發(fā)事件:

andn操作是將Mailbox中的某一位清0,如果Mailbox為0,則引起SWI任務的調(diào)度。一個SWI任務需要多個條件都滿足時才運行的情況下,使用andn操作可以方便地表示出這些條件的狀態(tài)。如例4用andn操作來表示多條件時SWI任務調(diào)度:

inc和dec操作則更加靈活,用戶可以借此實現(xiàn)多種應用。唯一需要注意的是,inc操作總是引起任務調(diào)度,而dec操作僅在Mailbox減到0時才引起一次任務調(diào)度。
6  通訊(PIP/SIO/HST)
  一個系統(tǒng)如何從外部設(shè)備中取得數(shù)據(jù),向外部設(shè)備輸出數(shù)據(jù),如何在兩個任務之間進行數(shù)據(jù)正常交換是多樣靈活的。但是這種多樣性也給軟件的維護升級以及模塊化工作帶來許多不利因素。因此在保持多樣性的同時,保持接口的一致性對于一個軟件來說是非常有幫助的??紤]到大多數(shù)是通過某種類型的串行接口如中繼線E1、IIS、SPI、同步串行口等與外部設(shè)備進行數(shù)據(jù)交換的,所以在中提供了兩種非常有用的接口對象PIP和  SIO。
  PIP對象包含一個緩沖隊列,與之對應的有兩個任務讀和寫。圖3很好地說明了PIP的邏輯關(guān)系和操作方式。例5,例6分別是一個PIP對象對應的讀任務和寫任務的示范程序。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉