機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
嵌入式RTOS講座(2)
嵌入式RTOS講座(2)
 更新時間:2008-8-18 14:36:45  點擊數(shù):42
【字體: 字體顏色
[編者按] RTOS是開發(fā)計算機嵌入式應(yīng)用產(chǎn)品的有力工具,研究和掌握RTOS的思想方法有益于提高開發(fā)人員的水平,從而縮短產(chǎn)品開發(fā)周期、提高產(chǎn)品質(zhì)量。從第7期起,學(xué)習(xí)園地連載《嵌入式RTOS講座》,主要內(nèi)容如下:什么是嵌入式RTOS;RTOS中的一些基本概念;介紹一個源碼公開的實時內(nèi)核;在PC機上實現(xiàn)該實時內(nèi)核的運行;讓該實時內(nèi)核在8位單片機上運行;如何將該實時內(nèi)核移植到32位CPU上。嵌入式RTOS講座(2) 實時多任務(wù)系統(tǒng)中的一些基本概念清華MOTOROLA單片機應(yīng)用開發(fā)研究中心邵貝貝許慶豐王若鵬實時系統(tǒng)的特點是,如果邏輯和時序出現(xiàn)偏差將會引起嚴(yán)重后果。有兩種類型的實時系統(tǒng):軟實時系統(tǒng)和硬實時系統(tǒng)。軟實時系統(tǒng)的宗旨是使各個任務(wù)運行得越快越好,并不要求限定某一任務(wù)必須在多長時間內(nèi)完成;而在硬實時系統(tǒng)中,各任務(wù)不僅要執(zhí)行無誤,而且要做到準(zhǔn)時。大多數(shù)實時系統(tǒng)是二者的結(jié)合。實時系統(tǒng)的應(yīng)用涵蓋廣泛的領(lǐng)域,而多數(shù)實時系統(tǒng)又是嵌入式的。這意味著計算機在系統(tǒng)內(nèi)部,而用戶看不到。實時應(yīng)用軟件的設(shè)計一般比非實時應(yīng)用軟件設(shè)計難一些。實時系統(tǒng)的技術(shù)關(guān)鍵是如何保證系統(tǒng)的實時性。以下從不使用RTOS的系統(tǒng)說起。 1 不使用RTOS系統(tǒng)不使用RTOS系統(tǒng)也叫前后臺系統(tǒng)。編寫應(yīng)用程序時先順著一條線畫好流程圖,然后按照流程圖來編程序。嵌入式應(yīng)用的程序一般為一個無限循環(huán),循環(huán)中調(diào)用相應(yīng)的函數(shù)完成相應(yīng)的操作,我們把這部分看成是后臺行為。用中斷來處理隨機事件,這部分可以看成是前臺行為。這樣就構(gòu)成了前后臺系統(tǒng)。后臺也可以叫作任務(wù)級,前臺叫作中斷級。后臺程序逐個檢查每個任務(wù)是否具備了運行條件,逐個完成相應(yīng)的操作。時間要求苛刻的操作肯定是靠中斷完成的。中斷服務(wù)程序中置位一個事件發(fā)生了的標(biāo)志,然后退出中斷,待后臺程序運行到檢查這個標(biāo)志的時候,才能完成事件處理,再將事件發(fā)生標(biāo)志復(fù)位。如果把事件處理也放在中斷服務(wù)中,中斷服務(wù)程序就會變得特別長,影響后來的中斷或其它中斷。這種系統(tǒng)在處理信息的及時性上比實際可以做到的要差。也就是說,有辦法做得更快一些。這個反映及時性的指標(biāo)叫作任務(wù)級響應(yīng)時間。最壞情況下的任務(wù)級響應(yīng)時間取決于整個后臺循環(huán)的執(zhí)行時間,因為循環(huán)一圈的執(zhí)行時間不是常數(shù),程序經(jīng)過某一點的準(zhǔn)確時間也就不能確定。程序修改了,循環(huán)時序也會受影響。這種單任務(wù)程序的另一缺點是,如果這條線的任何一處因某種意外被破壞了,則整個系統(tǒng)就會“死機”。但這類系統(tǒng)的優(yōu)點是簡單,不需要什么RTOS,也沒有什么RAM/ROM的額外開銷,在相對簡單的單片機產(chǎn)品中仍被廣泛采用著。 2 任務(wù)與多任務(wù)以上引入了任務(wù)的概念,嵌入式RTOS中任務(wù)的概念與計算機操作系統(tǒng)中任務(wù)的概念有所不同。計算機操作系統(tǒng)中,任務(wù)是用戶遞交給計算機的一項工作。一個任務(wù)可以有許多進程,每個進程還可以有多個線程。在嵌入式RTOS中的一個任務(wù),是指一個程序分段。這個分段被操作系統(tǒng)當(dāng)作一個基本單元來調(diào)度,它大致相當(dāng)于與計算機操作系統(tǒng)中的進程的概念。任務(wù)是一個可運行的簡單程序,該程序可以認(rèn)為CPU完全只屬該程序自己。實時應(yīng)用程序的設(shè)計過程,包括如何把問題分割成多個任務(wù)。每個任務(wù)都是整個應(yīng)用的某一部分,每個任務(wù)被賦予一定的優(yōu)先級,有它自己的一套CPU寄存器和自己的堆?臻g。典型地,每個任務(wù)都是一個無限的循環(huán)。每個任務(wù)都處在以下5種狀態(tài)之一。這5種狀態(tài)是:休眠態(tài)、就緒態(tài)、運行態(tài)、等待態(tài)和被中斷態(tài)。休眠態(tài)相當(dāng)于該任務(wù)駐留在內(nèi)存中,但并不被多任務(wù)內(nèi)核調(diào)度。就緒態(tài)指該任務(wù)已經(jīng)準(zhǔn)備好,可以運行了,但由于某種原因還暫時不能運行。運行態(tài)指該任務(wù)掌握了CPU的控制權(quán),正在運行中。等待態(tài)指該任務(wù)在等待某一事件的發(fā)生,例如等待某外設(shè)的I/O操作,等待某共享資源由暫不能使用變成可以使用,等待定時脈沖的到來或等待超時信號的到來以結(jié)束目前的等待,等等。最后,發(fā)生中斷時,CPU進行相應(yīng)的中斷服務(wù),原來正在運行的任務(wù)暫不能運行,就進入了被中斷狀態(tài)。多任務(wù)運行的實現(xiàn)實際上是靠RTOS在許多任務(wù)之間切換、調(diào)度。CPU只有一個,輪番服務(wù)于一系列任務(wù)中的某一個任務(wù)。多任務(wù)運行使CPU的利用率得到最大的發(fā)揮,并使應(yīng)用程序模塊化。在實時應(yīng)用中,多任務(wù)化的最大特點是,開發(fā)人員可以將很復(fù)雜的應(yīng)用程序?qū)哟位J褂枚嗳蝿?wù),應(yīng)用程序?qū)⒏菀自O(shè)計與維護。 3 任務(wù)切換與調(diào)度任務(wù)切換(context switch)在有的書中翻譯成上下文切換,實際含義是任務(wù)切換或CPU寄存器內(nèi)容切換。當(dāng)多任務(wù)內(nèi)核決定運行另外的任務(wù)時,它保存正在運行任務(wù)的當(dāng)前狀態(tài)(context),即CPU寄存器中的全部內(nèi)容。這些內(nèi)容保存在任務(wù)的當(dāng)前狀況存儲區(qū),也就是任務(wù)自己的棧區(qū)之中。入棧工作完成以后,就是把下一個將要運行任務(wù)的CPU寄存器狀況從該任務(wù)的棧中重新裝入到CPU的寄存器中,或者說恢復(fù)到CPU的寄存器中,并開始下一個任務(wù)的運行。這個過程叫作任務(wù)切換。任務(wù)的切換過程增加了應(yīng)用程序的額外負(fù)荷。CPU的內(nèi)部寄存器越多,額外負(fù)荷就越重。做任務(wù)切換所需要的時間取決于CPU有多少寄存器要入棧。實時內(nèi)核的性能不應(yīng)該以每秒鐘能做多少次任務(wù)切換來評價。調(diào)度(scheduler),英文還有一詞叫dispatch,也是調(diào)度的意思。這是內(nèi)核的主要職責(zé)之一,是要決定該輪到哪個任務(wù)運行了。多數(shù)實時內(nèi)核是基于優(yōu)先級調(diào)度法的。每個任務(wù)根據(jù)其重要程度的不同被賦予一定的優(yōu)先級;趦(yōu)先級的調(diào)度法,指CPU總是讓處于就緒態(tài)的優(yōu)先級最高的任務(wù)先運行。然而,究竟何時讓高優(yōu)先級任務(wù)掌握CPU的使用權(quán),有兩種不同的情況,這要看用的是什么類型的內(nèi)核,是不可剝奪型的還是可剝奪型的內(nèi)核。 4 嵌入式實時多任務(wù)系統(tǒng) 實時多任務(wù)系統(tǒng)是靠RTOS管理的。如同使用一般的計算機,開機以后先啟動一個操作系統(tǒng),Linux、Unix也好,然后是運行應(yīng)用程序。應(yīng)用程序由多個任務(wù)組成,這些任務(wù)相對獨立又相互有關(guān)。Linux、Unix是分時的,有人把它們變成實時的,如實時Linux、Lynx等,辦法是讓事件中斷的優(yōu)先級由用戶設(shè)置,直到高于定時器的優(yōu)先級。這種系統(tǒng)性能肯定很不錯,因為這類操作系統(tǒng)集中了計算機專家們上千人的勞動與智慧。問題是系統(tǒng)太大,內(nèi)存的開銷至少也有幾百KB(字節(jié)),無法嵌入到一般的嵌入式應(yīng)用類產(chǎn)品中去,于是著手對這樣的系統(tǒng)進行裁剪。首先,在嵌入式應(yīng)用中不需要文件系統(tǒng),內(nèi)存管理一般也可以省去,只剩下進程管理和I/O管理。進程管理在嵌入式系統(tǒng)中就是任務(wù)管理。每個I/O設(shè)備的管理也可以當(dāng)若干個任務(wù)來管理。計算機的操作系統(tǒng)經(jīng)過這樣精簡,剩下了面向嵌入式應(yīng)用的部分,實時性變得更好,這部分通常稱作實時內(nèi)核。在嵌入式應(yīng)用中,先在嵌入的計算機中運行一個實時內(nèi)核,然后讓這個實時內(nèi)核管理應(yīng)用程序中的各個任務(wù),就形成了嵌入式實時多任務(wù)系統(tǒng)。從這種意義上說,實時內(nèi)核就是嵌入式應(yīng)用中所謂的實時操作系統(tǒng)RTOS。 5 實時內(nèi)核(the real time kernel)多任務(wù)系統(tǒng)中,實時內(nèi)核負(fù)責(zé)管理各個任務(wù),或者說為每個任務(wù)分配CPU時間,并且負(fù)責(zé)任務(wù)之間的通信。內(nèi)核提供的基本服務(wù)是任務(wù)切換。使用實時內(nèi)核可以大大簡化應(yīng)用系統(tǒng)的設(shè)計,這是因為實時內(nèi)核允許將應(yīng)用分解成若干個任務(wù),由實時內(nèi)核來管
[1] [2] [3]  下一頁
  • 上一篇: 嵌入式RTOS講座(1)
  • 下一篇: 符合無鉛標(biāo)準(zhǔn)的元器件的供應(yīng)
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1