如何安裝實時操作系統(tǒng)RTOS_第1頁
如何安裝實時操作系統(tǒng)RTOS_第2頁
如何安裝實時操作系統(tǒng)RTOS_第3頁
如何安裝實時操作系統(tǒng)RTOS_第4頁
如何安裝實時操作系統(tǒng)RTOS_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

如何安裝實時操作系統(tǒng)RTOS要想最大限度地發(fā)揮ZynqAllProgrammableSoC的優(yōu)勢,您需要一款操作系統(tǒng)。本文將介紹如何安裝實時操作系統(tǒng)——這里特指μC/OS-III。要想從最大限度地發(fā)揮賽靈思Zynq?-7000AllProgrammableSoC處理系統(tǒng)的地優(yōu)勢,采用操作系統(tǒng)肯定比使用簡單的物理硬件解決方案更加有效。ZynqSoC設計的開發(fā)人員有很多種操作系統(tǒng)可供選擇,可以根據(jù)最終應用選擇實時操作系統(tǒng)。如果您正在多個應用領域需要快速響應和可靠性能來避免損失或?qū)崿F(xiàn)嚴格性能目標的極具挑戰(zhàn)性的環(huán)境中使用ZynqSoC,那么RTOS無疑是您的最佳選擇。我們將利用最流行的實時操作系統(tǒng)之一,Micrium的μC/OS-III來演示如何以最佳方式將RTOS添加到ZynqSoC系統(tǒng)中。RTOS或其早期版本已被用于包括好奇號火星探測器在內(nèi)的多種激動人心的系統(tǒng)中。RTOS的最新版本目前正在進行MISRA-C、DO178BA級、SIL3/4和IEC61508標準的認證,這意味著它將吸引廣泛ZynqSoC用戶的目光。但是在介紹具體實現(xiàn)方法之前,我們先回顧一下實時操作系統(tǒng)的基本知識,這對此很有幫助。什么是實時操作系統(tǒng)?

實時操作系統(tǒng)與標準操作系統(tǒng)有什么區(qū)別?實時操作系統(tǒng)是確定的,意思是指系統(tǒng)需要在明確的截止時間內(nèi)做出響應。這種確定性很重要,其原因有多種,例如,如果最終應用正在監(jiān)控工業(yè)流程,那么必須在特定時段內(nèi)對事件做出響應,工業(yè)控制系統(tǒng)就屬于這類情況。可根據(jù)滿足截止時間的能力對RTOS進一步分類為三種不同類型的RTOS,每種類型都以不同方式滿足截止時間。在hardRTOS中,錯過截止時間被視為系統(tǒng)錯誤。而對于firmRTOS就不是這樣,偶爾錯過截止時間是可以接受的。在softRTOS中,錯過一次截止時間會減少結果的有效性,但系統(tǒng)在整體上對此是可以接受的。實時操作系統(tǒng)以運行任務(有時稱為進程)為核心,每項任務執(zhí)行規(guī)定的功能。例如,某個任務可能通過接口讀取數(shù)據(jù),或?qū)?shù)據(jù)執(zhí)行某種操作。簡單的系統(tǒng)可能只運行一項任務,但更多情況下處理器上會同時運行多項任務。這些任務間的轉(zhuǎn)換被稱為“上下文切換”,它要求將與每項任務關聯(lián)的處理器狀態(tài)存儲并添加到任務棧中。采用分時法,每個任務都會獲得處理器上的一個專用時間檔,而更高優(yōu)先級的任務還可分配多個時間檔。下一步運行哪項任務將由內(nèi)核來控制。該內(nèi)核是RTOS的核心,用來管理軟件的輸入與輸出請求,并將它們轉(zhuǎn)換為處理器中央處理單元和功能元件能識別的數(shù)據(jù)處理指令。任務調(diào)度可能比較復雜,尤其是當需要避免死鎖(指兩個或更多任務相互鎖定)時更是如此。兩種基本調(diào)度方法分別是分時法和事件驅(qū)動法。采用分時法,每項任務都會獲得處理器上的一個專用時間檔,而更高優(yōu)先級的任務還可分配多個時間檔。時間分段通過定期中斷或定時器進行控制,這種方法通常被稱為“輪詢調(diào)度”。而采用事件驅(qū)動方案,只有當具有更高優(yōu)先級的任務需要運行時才會進行任務切換。這種方法通常稱為“搶先式調(diào)度”。死鎖、資源共享和互斥等待

當兩個或兩個以上進程(例如UART、ADC或DAC)需要使用相同資源時,它們可以同時對該資源提出請求。這種情況下,應對訪問進行控制以防出現(xiàn)爭用現(xiàn)象。如何對此進行管理非常重要,若不采用正確的管理方法,就會出現(xiàn)“死鎖”或“互斥等待”這樣的問題,從而導致系統(tǒng)錯誤。當某個進程占用一種資源且無法將其釋放時,就會出現(xiàn)死鎖,因為在這種情況下無法完成該項任務。該進程需要使用當前被另一進程占用的另一種資源。由于系統(tǒng)無限期地處于這種狀態(tài),因此可以說應用程序已被鎖死。可以想象,死鎖對于實時操作系統(tǒng)來說是非常不好的。當某個進程因為所需要的資源總是被分配給其它進程而無法運行時,就會發(fā)生互斥等待。多年來,已經(jīng)有很多關于這類主題的文章和資料,也推薦了很多解決方案,對此您可能并不會感到意外,例如Dekker算法,這是一種用于并行程序中互斥問題的經(jīng)典解決方法。處理這類情況的最常用方法是信號量法,通常分為二進制信號量和計數(shù)信號量這兩種類型。通常,為每種資源會分配一個二進制信號量。請求進程會在任務執(zhí)行之前等待資源變?yōu)榭捎觅Y源。一旦任務完成,請求進程就會釋放該資源。這些信號量通常被稱為等待(WAIT)和發(fā)信號(SIGNAL)操作。進程首先等待信號量。如果資源閑置,進程將被賦予該資源的控制權,并運行直到完成,此時進程會發(fā)出完成信號。但是,如果進程在等待信號量時資源已被占用,那么進程將會被暫停直到該資源被釋放為止。當前正在執(zhí)行的進程一旦完成,暫停狀態(tài)就會立刻終止,但如果具備更高優(yōu)先級的進程搶先占用該資源,那么就需要等待更長的時間。通常使用名為互斥鎖(mutexes)的特殊二進制信號量來防止優(yōu)先級反轉(zhuǎn)的發(fā)生(mutexes一詞源于“mutualexclusion”)。計數(shù)信號量的工作方式與二進制信號量相同,但是只有當特定資源類型有一個以上的實例時才會使用計數(shù)信號量(例如數(shù)據(jù)存儲)。由于每個資源都被分配到一個進程中,因此計數(shù)數(shù)值會減少以顯示剩余的可用資源數(shù)量。當數(shù)值減至為零時可用資源就沒有了,同時提出請求的進程就會被暫停,直到有一種資源被釋放為止。不同進程之間經(jīng)常進行通信是很有必要的。有以下幾種方法可供使用,其中最簡單的方法是按如上所訴的方式使用數(shù)據(jù)存儲和信號量。更為復雜的技術包括消息隊列。采用消息隊列,當一個進程需要向另一個進程發(fā)送信息時,它會向隊列POST一條消息。當一個進程需要從隊列中接收消息時,它會PEND隊列。因此,消息隊列的工作原理就像FIFO(先入先出)存儲器一樣。μC/OS-III操作系統(tǒng)

Micrium的μC/OS-III是一種優(yōu)先式RTOS,意思是指它總是運行已做好執(zhí)行準備并具有最高優(yōu)先級的任務。要想將該操作系統(tǒng)添加到您的ZynqSoC系統(tǒng)設計中,第一步需要從Micrium網(wǎng)站下載μC/OS-IIIRTOS。下載后,安裝工作非常簡單。您只需要將一些ZIP文件解壓到電腦上賽靈思安裝程序中的正確文件夾(路徑)。應確保將名為Zynq-7000-ucosiii-bsp.zip的ZIP文件解壓到\\ISE_DS\EDK\sw\lib\bsp\文件夾。您會在此文件夾下看到一些其它操作系統(tǒng),包括獨立系統(tǒng)和xilkernel。隨后,如圖1所示,將名為Zynq-7000-ucosiii-demo.zip的ZIP文件解壓到\\ISE_DS\EDK\sw\lib\sw_apps\文件夾。您會在此文件夾內(nèi)看到一些其它應用的演示。安裝完這兩組文件后,我們就可以在軟件開發(fā)套件(SDK)中創(chuàng)建項目。我們將會使用之前創(chuàng)建的相同基礎硬件,但由于想添加該操作系統(tǒng),因此還需要一個新的應用程序和板支持包(BSP)。在SDK中,應關閉基礎硬件設計外所有已打開的項目。下一步選擇File>New>ApplicationProject選項,命名新項目并選擇操作系統(tǒng)μC/OS-III(見圖2)。然后選擇用于μC/OS-III的演示程序(見圖3)。完成后,點擊Finish按鈕。在SDK中將會創(chuàng)建應用和板支持包(如選擇該項)。如果您選擇了AutoBuild選項,會發(fā)現(xiàn)若干錯誤報告。這是因為并不是所有項目參考都是正確的。要設定這些項目參考,您需要導入在Project>Src>Settings選項中找到的演示設置。右擊XML文件并查看屬性。這樣便可選擇并復制文件位置,如圖4所示。位置復制后,右擊項目并選擇屬性。在項目C/C++General下,選擇Paths和Symbol選項。然后選擇ImportSettings,并粘貼到設置文件的位置。另外必須確保資源庫能正確指向您之前所添加的庫。您可以通過設置XilinxTools>Repositories對其進行檢查;該選項應顯示之前μC/OS-IIIBSP的安裝位置。由于我們希望用UART輸出演示的狀態(tài)(顯示完成的初始化值和正在運行的任務),因此您可能需要在BSP設置下將stdin和stdout設置到UART。執(zhí)行完這些工作后,您會發(fā)現(xiàn)目前就可以創(chuàng)建項目了。但是仍存在一些警告,如果您嘗試在硬件上運行該項目,項目并不能如演示那樣執(zhí)行。這是因為存在一個未聲明的函數(shù)警告。在bsp.c文件中加入如下聲明可糾正這個問題。

#include"xil_cache.l一旦添加“include”頭文件后,項目就可按照預期構建并在ZedBoard上運行,(登陸?v=uRB4La5ijrA觀看YouTube視頻)。啟動并運行

啟動并運

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論