新聞中心

EEPW首頁 > 測試測量 > 設(shè)計(jì)應(yīng)用 > 如何將RTOS添加到您的Zynq SoC設(shè)計(jì)中

如何將RTOS添加到您的Zynq SoC設(shè)計(jì)中

作者:AdamP.Taylor 時(shí)間:2015-04-29 來源:電子產(chǎn)品世界 收藏

  1 什么是實(shí)時(shí)操作系統(tǒng)?

本文引用地址:http://m.butianyuan.cn/article/273351.htm

  實(shí)時(shí)操作系統(tǒng)是確定的,意思是指系統(tǒng)需要在明確的截止時(shí)間內(nèi)做出響應(yīng)。這種確定性很重要,其原因有多種,例如,如果最終應(yīng)用正在監(jiān)控工業(yè)流程,那么必須在特定時(shí)段內(nèi)對事件做出響應(yīng),工業(yè)控制系統(tǒng)就屬于這類情況。

  可根據(jù)滿足截止時(shí)間的能力對進(jìn)一步分類為三種不同類型的,每種類型都以不同方式滿足截止時(shí)間。在hard 中,錯(cuò)過截止時(shí)間被視為系統(tǒng)錯(cuò)誤。而對于firm RTOS就不是這樣,偶爾錯(cuò)過截止時(shí)間是可以接受的。在soft RTOS中,錯(cuò)過一次截止時(shí)間會(huì)減少結(jié)果的有效性,但系統(tǒng)在整體上對此是可以接受的。

  實(shí)時(shí)操作系統(tǒng)以運(yùn)行任務(wù)為核心,每項(xiàng)任務(wù)執(zhí)行規(guī)定的功能。例如,某個(gè)任務(wù)可能通過接口讀取數(shù)據(jù),或?qū)?shù)據(jù)執(zhí)行某種操作。簡單的系統(tǒng)可能只運(yùn)行一項(xiàng)任務(wù),但采用分時(shí)法,每個(gè)任務(wù)都會(huì)獲得處理器上的一個(gè)專用時(shí)間檔,而更高優(yōu)先級的任務(wù)還可分配多個(gè)時(shí)間檔。更多情況下處理器上會(huì)同時(shí)運(yùn)行多項(xiàng)任務(wù)。這些任務(wù)間的轉(zhuǎn)換被稱為“上下文切換”,它要求將與每項(xiàng)任務(wù)關(guān)聯(lián)的處理器狀態(tài)存儲(chǔ)并添加到任務(wù)棧中。

  下一步運(yùn)行哪項(xiàng)任務(wù)將由內(nèi)核來控制。該內(nèi)核是RTOS的核心,用來管理軟件的輸入與輸出請求,并將它們轉(zhuǎn)換為處理器中央處理單元和功能元件能識別的數(shù)據(jù)處理指令。任務(wù)調(diào)度可能比較復(fù)雜,尤其是當(dāng)需要避免死鎖(指兩個(gè)或更多任務(wù)相互鎖定)時(shí)更是如此。兩種基本調(diào)度方法分別是分時(shí)法和事件驅(qū)動(dòng)法。采用分時(shí)法,每項(xiàng)任務(wù)都會(huì)獲得處理器上的一個(gè)專用時(shí)間檔,而更高優(yōu)先級的任務(wù)還可分配多個(gè)時(shí)間檔。時(shí)間分段通過定期中斷或定時(shí)器進(jìn)行控制,這種方法通常被稱為 “輪詢調(diào)度”。而采用事件驅(qū)動(dòng)方案,只有當(dāng)具有更高優(yōu)先級的任務(wù)需要運(yùn)行時(shí)才會(huì)進(jìn)行任務(wù)切換。這種方法通常稱為“搶先式調(diào)度”。

  2 死鎖、資源共享和互斥等待

  當(dāng)兩個(gè)或兩個(gè)以上進(jìn)程(例如UART、ADC或DAC)需要使用相同資源時(shí),它們可以同時(shí)對該資源提出請求。這種情況下,應(yīng)對訪問進(jìn)行控制以防出現(xiàn)爭用現(xiàn)象。如何對此進(jìn)行管理非常重要,若不采用正確的管理方法,就會(huì)出現(xiàn)“死鎖”或“互斥等待”這樣的問題,從而導(dǎo)致系統(tǒng)錯(cuò)誤。

  當(dāng)某個(gè)進(jìn)程占用一種資源且無法將其釋放時(shí),就會(huì)出現(xiàn)死鎖,因?yàn)樵谶@種情況下無法完成該項(xiàng)任務(wù)。該進(jìn)程需要使用當(dāng)前被另一進(jìn)程占用的另一種資源。由于系統(tǒng)無限期地處于這種狀態(tài),因此可以說應(yīng)用程序已被鎖死??梢韵胂螅梨i對于實(shí)時(shí)操作系統(tǒng)來說是非常不好的。

  當(dāng)某個(gè)進(jìn)程因?yàn)樗枰馁Y源總是被分配給其它進(jìn)程而無法運(yùn)行時(shí),就會(huì)發(fā)生互斥等待。多年來,已經(jīng)有很多關(guān)于這類主題的文章和資料,也推薦了很多解決方案,例如Dekker算法,這是一種用于并行程序中互斥問題的經(jīng)典解決方法。處理這類情況的最常用方法是法,通常分為二進(jìn)制和計(jì)數(shù)這兩種類型。

  通常,為每種資源會(huì)分配一個(gè)二進(jìn)制信號量。請求進(jìn)程會(huì)在任務(wù)執(zhí)行之前等待資源變?yōu)榭捎觅Y源。一旦任務(wù)完成,請求進(jìn)程就會(huì)釋放該資源。這些信號量通常被稱為等待(WAIT)和發(fā)信號(SIGNAL)操作。進(jìn)程首先等待信號量。如果資源閑置,進(jìn)程將被賦予該資源的控制權(quán),并運(yùn)行直到完成,此時(shí)進(jìn)程會(huì)發(fā)出完成信號。但是,如果進(jìn)程在等待信號量時(shí)資源已被占用,那么進(jìn)程將會(huì)被暫停直到該資源被釋放為止。當(dāng)前正在執(zhí)行的進(jìn)程一旦完成,暫停狀態(tài)就會(huì)立刻終止,但如果具備更高優(yōu)先級的進(jìn)程搶先占用該資源,那么就需要等待更長的時(shí)間。通常使用名為互斥鎖(mutexes)的特殊二進(jìn)制信號量來防止優(yōu)先級反轉(zhuǎn)的發(fā)生。

  計(jì)數(shù)信號量的工作方式與二進(jìn)制信號量相同,但是只有當(dāng)特定資源類型有一個(gè)以上的實(shí)例時(shí)才會(huì)使用計(jì)數(shù)信號量(例如數(shù)據(jù)存儲(chǔ))。由于每個(gè)資源都被分配到一個(gè)進(jìn)程中,因此計(jì)數(shù)數(shù)值會(huì)減少以顯示剩余的可用資源數(shù)量。當(dāng)數(shù)值減至為零時(shí)可用資源就沒有了,同時(shí)提出請求的進(jìn)程就會(huì)被暫停,直到有一種資源被釋放為止。

  不同進(jìn)程之間經(jīng)常進(jìn)行通信是很有必要的。最簡單的方法是按如上所訴的方式使用數(shù)據(jù)存儲(chǔ)和信號量。更為復(fù)雜的技術(shù)包括消息隊(duì)列。采用消息隊(duì)列,當(dāng)一個(gè)進(jìn)程需要向另一個(gè)進(jìn)程發(fā)送信息時(shí),它會(huì)向隊(duì)列POST一條消息。當(dāng)一個(gè)進(jìn)程需要從隊(duì)列中接收消息時(shí),它會(huì)PEND隊(duì)列。因此,消息隊(duì)列的工作原理就像FIFO(先入先出)存儲(chǔ)器一樣。

  3 µC/OS-III操作系統(tǒng)

  Micrium的µC/OS-III是一種優(yōu)先式RTOS,意思是指它總是運(yùn)行已做好執(zhí)行準(zhǔn)備并具有最高優(yōu)先級的任務(wù)。要想將該操作系統(tǒng)添加到您的 SoC系統(tǒng)設(shè)計(jì)中,第一步需要從Micrium網(wǎng)站下載µC/OS-III RTOS。下載后,安裝工作非常簡單。您只需要將一些ZIP文件解壓到電腦上賽靈思安裝程序中的正確文件夾(路徑)。

  應(yīng)確保將名為-7000-ucosiii-bsp.zip的ZIP文件解壓到 ISE_DSEDK sw libbsp文件夾。您會(huì)在此文件夾下看到一些其它操作系統(tǒng),包括獨(dú)立系統(tǒng)和xilkernel。隨后,如圖1所示,將名為-7000-ucosiii-demo.zip的ZIP 文件解壓到\ISE_DSEDKswlibsw_apps文件夾。您會(huì)在此文件夾內(nèi)看到一些其它應(yīng)用的演示。


上一頁 1 2 下一頁

關(guān)鍵詞: RTOS SDK 信號量 Zynq μC/OS-III

評論


相關(guān)推薦

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

關(guān)閉