<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 測試測量 > 設計應用 > 如何將RTOS添加到您的Zynq SoC設計中

          如何將RTOS添加到您的Zynq SoC設計中

          作者:AdamP.Taylor時間:2015-04-29來源:電子產品世界收藏

            1 什么是實時操作系統?

          本文引用地址:http://www.ex-cimer.com/article/273351.htm

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

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

            實時操作系統以運行任務為核心,每項任務執行規定的功能。例如,某個任務可能通過接口讀取數據,或對數據執行某種操作。簡單的系統可能只運行一項任務,但采用分時法,每個任務都會獲得處理器上的一個專用時間檔,而更高優先級的任務還可分配多個時間檔。更多情況下處理器上會同時運行多項任務。這些任務間的轉換被稱為“上下文切換”,它要求將與每項任務關聯的處理器狀態存儲并添加到任務棧中。

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

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

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

            當某個進程占用一種資源且無法將其釋放時,就會出現死鎖,因為在這種情況下無法完成該項任務。該進程需要使用當前被另一進程占用的另一種資源。由于系統無限期地處于這種狀態,因此可以說應用程序已被鎖死??梢韵胂?,死鎖對于實時操作系統來說是非常不好的。

            當某個進程因為所需要的資源總是被分配給其它進程而無法運行時,就會發生互斥等待。多年來,已經有很多關于這類主題的文章和資料,也推薦了很多解決方案,例如Dekker算法,這是一種用于并行程序中互斥問題的經典解決方法。處理這類情況的最常用方法是法,通常分為二進制和計數這兩種類型。

            通常,為每種資源會分配一個二進制信號量。請求進程會在任務執行之前等待資源變為可用資源。一旦任務完成,請求進程就會釋放該資源。這些信號量通常被稱為等待(WAIT)和發信號(SIGNAL)操作。進程首先等待信號量。如果資源閑置,進程將被賦予該資源的控制權,并運行直到完成,此時進程會發出完成信號。但是,如果進程在等待信號量時資源已被占用,那么進程將會被暫停直到該資源被釋放為止。當前正在執行的進程一旦完成,暫停狀態就會立刻終止,但如果具備更高優先級的進程搶先占用該資源,那么就需要等待更長的時間。通常使用名為互斥鎖(mutexes)的特殊二進制信號量來防止優先級反轉的發生。

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

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

            3 µC/OS-III操作系統

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

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


          上一頁 1 2 下一頁

          評論


          相關推薦

          技術專區

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();