第一篇:計(jì)算機(jī)實(shí)時(shí)操作系統(tǒng)的改善措施
《計(jì)算機(jī)實(shí)時(shí)操作系統(tǒng)的改善措施》
摘要:
實(shí)時(shí)系統(tǒng)在工業(yè)、商業(yè)和軍事等領(lǐng)域都有非常廣泛的用途,并且已經(jīng)有很多實(shí)際的應(yīng)用。一般來說,實(shí)時(shí)系統(tǒng)通常是比較復(fù)雜的,因?yàn)樗仨毺幚砗芏嗖l(fā)事件的輸入數(shù)據(jù)流,這些事件的到來次序和幾率通常是不可預(yù)測(cè)的,而且還要求系統(tǒng)必須在事先設(shè)定好的時(shí)限內(nèi)做出相應(yīng)的響應(yīng)。因此,實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性是第一要求,需要調(diào)度一切可利用的資源完成實(shí)時(shí)任務(wù)。這就要求我們?cè)O(shè)計(jì)好實(shí)時(shí)操作系統(tǒng),了解實(shí)時(shí)操作系統(tǒng)的改善措施對(duì)我們非常重要。
關(guān)鍵字:實(shí)時(shí)操作系統(tǒng);特點(diǎn);實(shí)現(xiàn)技術(shù);改善措施。
一、計(jì)算機(jī)實(shí)時(shí)操作系統(tǒng)的概念
實(shí)時(shí)操作系統(tǒng)(RTOS)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時(shí),能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時(shí)間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實(shí)時(shí)任務(wù)協(xié)調(diào)一致運(yùn)行的操作系統(tǒng)。因而,提供及時(shí)響應(yīng)和高可靠性是其主要特點(diǎn)。實(shí)時(shí)操作系統(tǒng)有硬實(shí)時(shí)和軟實(shí)時(shí)之分,硬實(shí)時(shí)要求在規(guī)定的時(shí)間內(nèi)必須完成操作,這是在操作系統(tǒng)設(shè)計(jì)時(shí)保證的;軟實(shí)時(shí)則只要按照任務(wù)的優(yōu)先級(jí),盡可能快地完成操作即可。我們通常使用的操作系統(tǒng)在經(jīng)過一定改變之后就可以變成實(shí)時(shí)操作系統(tǒng)。
二、實(shí)時(shí)操作系統(tǒng)的特點(diǎn)
1、高精度計(jì)時(shí)系統(tǒng)
計(jì)時(shí)精度是影響實(shí)時(shí)性的一個(gè)重要因素。在實(shí)時(shí)應(yīng)用系統(tǒng)中,經(jīng)常需要精確確定實(shí)時(shí)地操作某個(gè)設(shè)備或執(zhí)行某個(gè)任務(wù),或精確的計(jì)算一個(gè)時(shí)間函數(shù)。這些不僅依賴于一些硬件提供的時(shí)鐘精度,也依賴于實(shí)時(shí)操作系統(tǒng)實(shí)現(xiàn)的高精度計(jì)時(shí)功能。
2、多級(jí)中斷機(jī)制
一個(gè)實(shí)時(shí)應(yīng)用系統(tǒng)通常需要處理多種外部信息或事件,但處理的緊迫程度有輕重緩急之分。有的必須立即作出反應(yīng),有的則可以延后處理。因此,需要建立多級(jí)中斷嵌套處理機(jī)制,以確保對(duì)緊迫程度較高的實(shí)時(shí)事件進(jìn)行及時(shí)響應(yīng)和處理。
3、實(shí)時(shí)調(diào)度機(jī)制
實(shí)時(shí)操作系統(tǒng)不僅要及時(shí)響應(yīng)實(shí)時(shí)事件中斷,同時(shí)也要及時(shí)調(diào)度運(yùn)行實(shí)時(shí)任務(wù)。但是,處理機(jī)調(diào)度并不能隨心所欲的進(jìn)行,因?yàn)樯婕暗絻蓚€(gè)進(jìn)程之間的切換,只能在確?!鞍踩袚Q”的時(shí)間點(diǎn)上進(jìn)行,實(shí)時(shí)調(diào)度機(jī)制包括兩個(gè)方面,一是在調(diào)度策略和算法上保證優(yōu)先調(diào)度實(shí)時(shí)任務(wù);二是建立更多“安全切換”時(shí)間點(diǎn),保證及時(shí)調(diào)度實(shí)時(shí)任務(wù)。
三、實(shí)時(shí)性能主要實(shí)現(xiàn)技術(shù)
實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性是第一要求,需要調(diào)度一切可利用的資源完成實(shí)時(shí)任務(wù)。根據(jù)響應(yīng)時(shí)間在微秒、毫秒和秒級(jí)的不同,可分為強(qiáng)實(shí)時(shí)、準(zhǔn)實(shí)時(shí)和弱實(shí)時(shí)三種。強(qiáng)實(shí)時(shí)系統(tǒng)必須是對(duì)即時(shí)的事件作出反應(yīng),絕對(duì)不能錯(cuò)過事件處理時(shí)限。例如測(cè)控領(lǐng)域就是要求強(qiáng)或接近強(qiáng)實(shí)時(shí)系統(tǒng)。在機(jī)頂盒、PDA、信息家電等應(yīng)用領(lǐng)域,系統(tǒng)負(fù)荷較重的時(shí)候,允許發(fā)生錯(cuò)過時(shí)限的情況而且不會(huì)造成太大的危害,準(zhǔn)和弱實(shí)時(shí)系統(tǒng)就可滿足應(yīng)用。一個(gè)強(qiáng)實(shí)時(shí)的操作系統(tǒng)通常使用以下技術(shù):
1、占先式內(nèi)核
當(dāng)系統(tǒng)時(shí)間響應(yīng)很重要時(shí),要使用占先式內(nèi)核。當(dāng)前最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能立即得到CPU 的控制權(quán),而CPU 的控制權(quán)是可知的。使用占先式內(nèi)核使得任務(wù)級(jí)響應(yīng)時(shí)間得以最優(yōu)化。
2、調(diào)度策略分析
任務(wù)調(diào)度策略是直接影響實(shí)時(shí)性能的因素。強(qiáng)實(shí)時(shí)系統(tǒng)和準(zhǔn)實(shí)時(shí)系統(tǒng)的實(shí)現(xiàn)區(qū)別主要在選擇調(diào)度算法上。選擇基于優(yōu)先級(jí)調(diào)度的算法足以滿足準(zhǔn)實(shí)時(shí)系統(tǒng)的要求,而 且可以提供高速的響應(yīng)和大的系統(tǒng)吞吐率。當(dāng)兩個(gè)或兩個(gè)以上任務(wù)有同樣優(yōu)先級(jí),通常用時(shí)間片輪轉(zhuǎn)法進(jìn)行調(diào)度。對(duì)硬實(shí)時(shí)系統(tǒng)而言,需要使用的算法就應(yīng)該是調(diào)度 方式簡(jiǎn)單,反應(yīng)速度快的實(shí)時(shí)調(diào)度算法了。盡管調(diào)度算法多種多樣,但大多由單一比率調(diào)度算法(RMS)和最早期限優(yōu)先算法(EDF)變化而來。前者主要用于 靜態(tài)周期任務(wù)的調(diào)度,后者主要用于動(dòng)態(tài)調(diào)度,在不同的系統(tǒng)狀態(tài)下兩種算法各有優(yōu)劣。在商業(yè)產(chǎn)品中采用的實(shí)際策略常常是各種因素的折中。
3、任務(wù)優(yōu)先級(jí)分配
每個(gè)任務(wù)都有其優(yōu)先級(jí)。任務(wù)越重要,賦予的優(yōu)先級(jí)應(yīng)越高。應(yīng)用程序執(zhí)行過程中諸任務(wù)優(yōu)先級(jí)不變,則稱之為靜態(tài)優(yōu)先級(jí)。在靜態(tài)優(yōu)先級(jí)系統(tǒng)中,諸任務(wù)以及它們的時(shí)間約束在程序編譯時(shí)是已知的。反之,應(yīng)用程序執(zhí)行過程中,任務(wù)的優(yōu)先級(jí)是可變的,則稱之為動(dòng)態(tài)優(yōu)先級(jí)。
4、時(shí)間的可確定性
強(qiáng)實(shí)時(shí)操作系統(tǒng)的函數(shù)調(diào)用與服務(wù)的執(zhí)行時(shí)間應(yīng)具有可確定性。系統(tǒng)服務(wù)的執(zhí)行時(shí)間不依賴于應(yīng)用程序任務(wù)的多少。系統(tǒng)完成某個(gè)確定任務(wù)的時(shí)間是可預(yù)測(cè)的。
四、實(shí)時(shí)操作系統(tǒng)中遇到的問題
1、優(yōu)先級(jí)反轉(zhuǎn)
這是實(shí)時(shí)系統(tǒng)中出現(xiàn)得最多的問題。優(yōu)先級(jí)反轉(zhuǎn)是指一個(gè)任務(wù)等待比它優(yōu)先級(jí)低的任務(wù)釋放資源而被阻塞,如果這時(shí)有中等優(yōu)先級(jí)的就緒任務(wù),阻塞會(huì)進(jìn)一步惡化。它嚴(yán)重影響了實(shí)時(shí)任務(wù)的完成。
2、任務(wù)執(zhí)行時(shí)間的抖動(dòng)
各種實(shí)時(shí)內(nèi)核都有將任務(wù)延時(shí)若干個(gè)時(shí)鐘節(jié)拍的功能。優(yōu)先級(jí)的不同、延時(shí)請(qǐng)求發(fā)生的時(shí)間、發(fā)出延時(shí)請(qǐng)求的任務(wù)自身的運(yùn)行延遲,都會(huì)造成被延時(shí)任務(wù)執(zhí)行時(shí)間不同程度的提前或滯后,稱之為任務(wù)執(zhí)行時(shí)間的抖動(dòng)。
3、任務(wù)劃分
程序在CPU 中是以任務(wù)的方式在運(yùn)行,所以我們要將系統(tǒng)的處理框圖轉(zhuǎn)化為多任務(wù)流程圖,對(duì)處理進(jìn)行任務(wù)劃分。任務(wù)劃分存在這樣一對(duì)矛盾:如果任務(wù)太多,必然增加系統(tǒng)任 務(wù)切換的開銷;如果任務(wù)太少,系統(tǒng)的并行度就降低了,實(shí)時(shí)性就比較差。
五、實(shí)時(shí)操作系統(tǒng)改善措施
跟據(jù)上述討論的實(shí)時(shí)操作系統(tǒng)中遇到的問題我們提出相應(yīng)的改善措施,如下所示:
1、對(duì)于優(yōu)先級(jí)反轉(zhuǎn)的改善措施
為防止發(fā)生優(yōu)先級(jí)反轉(zhuǎn),一些商業(yè)內(nèi)核(如VxWorks)使用了優(yōu)先級(jí)繼承技術(shù),當(dāng)優(yōu)先級(jí)反轉(zhuǎn)發(fā)生時(shí),優(yōu)先級(jí)較低的任務(wù)被暫時(shí)地提高它的優(yōu)先級(jí),使得該任務(wù)能盡快執(zhí)行,釋放出優(yōu)先級(jí)較高的任務(wù)所需要的資源。但它也不能完全避免優(yōu)先級(jí)反轉(zhuǎn),只能稱其減輕了優(yōu)先級(jí)反轉(zhuǎn)的程度,減輕了優(yōu)先級(jí)反轉(zhuǎn)對(duì)實(shí)時(shí)任務(wù)完成的影響。
優(yōu)先權(quán)極限是另一種解決方案,系統(tǒng)把每一個(gè)臨界資源與1個(gè)極限優(yōu)先權(quán)相聯(lián)系,這個(gè)極限優(yōu)先權(quán)等于系統(tǒng)此時(shí)最高優(yōu)先權(quán)加1。當(dāng)這個(gè)任務(wù)退出臨界區(qū)后,系統(tǒng)立即把它的優(yōu)先權(quán)恢復(fù)正常,從而保證系統(tǒng)不會(huì)出現(xiàn)優(yōu)先權(quán)反轉(zhuǎn)的情況。采用這種方案的另一個(gè)有利之處,是僅僅通過改變某個(gè)臨界資源的優(yōu)先級(jí)就可以使多個(gè)任務(wù)共享這個(gè)臨界資源。
2、對(duì)于任務(wù)時(shí)間抖動(dòng)的改善措施 可能的解決方案有:
a.增加微處理器的時(shí)鐘頻和時(shí)鐘節(jié)拍的頻率; b.重新安排任務(wù)的優(yōu)先級(jí); c.避免使用浮點(diǎn)運(yùn)算等。
強(qiáng)實(shí)時(shí)系統(tǒng)中,我們必須綜合考慮,充分利用各種手段,盡量減少任務(wù)執(zhí)行時(shí)間的抖動(dòng)。
3、對(duì)于任務(wù)劃分的改善措施
在任務(wù)劃分時(shí)要遵循H.Gomma 原則: a. I/O原則:不同的外設(shè)執(zhí)行不同任務(wù);
b. 優(yōu)先級(jí)原則:不同優(yōu)先級(jí)處理不同的任務(wù); c. 大量運(yùn)算:歸為一個(gè)任務(wù); d. 功能耦合:歸為一個(gè)任務(wù); e. 偶然耦合:歸為一個(gè)任務(wù);
f. 頻率組合:對(duì)于周期時(shí)間,不同任務(wù)處理不同的頻率。
如果我們?cè)诰唧w分析一個(gè)系統(tǒng)的時(shí)候發(fā)生原則沖突的話,則要為每一個(gè)原則針對(duì)具體的系統(tǒng)設(shè)定“權(quán)重”,必要的時(shí)候可以通過計(jì)算“權(quán)重”來最終確定如何去劃分任務(wù)。
第二篇:計(jì)算機(jī)控制系統(tǒng)實(shí)時(shí)性的改善措施
Hefei University
計(jì)算機(jī)控制技術(shù)
課程題目: 計(jì)算機(jī)控制系統(tǒng)實(shí)時(shí)性的改良措施
姓 名: 111 學(xué) 號(hào): 11111
指導(dǎo)老師: 11111
摘要:實(shí)時(shí)系統(tǒng)是能夠在確定的時(shí)間內(nèi)執(zhí)行計(jì)算或處理事務(wù)并對(duì)外部事件作出響應(yīng)的計(jì)算機(jī)系統(tǒng)。對(duì)很多嵌入式系統(tǒng)來說,一個(gè)設(shè)計(jì)良好的實(shí)時(shí)操作系統(tǒng)(RTOS)可以讓開發(fā)工程師掌握系統(tǒng)執(zhí)行任何任務(wù)或響應(yīng)任何關(guān)鍵事件的時(shí)間,滿足系統(tǒng)實(shí)時(shí)性要求。為了理解RTOS如何通過系統(tǒng)調(diào)度策略實(shí)現(xiàn)實(shí)時(shí)性要求,本文介紹了搶占式調(diào)度、可搶占的內(nèi)核、優(yōu)先級(jí)繼承和中斷處理等概念。
Abstract: real-time system is able to the determination of the time or processing performs calculations and a response to external affairs events of the computer system.For many embedded systems for, a design good real-time operating system(RTOS)can let the development engineers grasp the system to carry out any task or response to any of the key events of the time, meet the system in real-time.In order to understand how RTOS through the system to realize real-time scheduling strategy, this paper introduces the pre-emptive scheduling, but the core of preemption, priority concepts such as inherit and interrupt handling.關(guān)鍵字:計(jì)算機(jī)、控制系統(tǒng)、實(shí)時(shí)性、措施
正文:
1.RT-Linux的系統(tǒng)結(jié)構(gòu)
RT-Linux的基本思想就是使Linux運(yùn)行在實(shí)時(shí)核心之下,見圖1。RT—Linux是一個(gè)可加載的核心模塊。一個(gè)小的RT-Linux實(shí)時(shí)內(nèi)核同原來的Linux內(nèi)核共同控制處理器。實(shí)時(shí)內(nèi)核直接管理硬件中斷,因此實(shí)時(shí)內(nèi)核操縱著機(jī)器的響應(yīng)時(shí)間,原來的Linux就無法影響實(shí)時(shí)任務(wù)了。在RT-Linux中設(shè)計(jì)了兩類中斷。軟中斷是正常的Linux中斷,硬中斷則是真正的實(shí)時(shí)中斷,執(zhí)行時(shí)幾乎沒有任何延遲。實(shí)現(xiàn)時(shí),RT-Linux是通過在 Linux核心和中斷處理器之間設(shè)計(jì)一個(gè)仿真軟件來達(dá)到其目的的。
實(shí)時(shí)中斷不經(jīng)過中斷仿真器,標(biāo)準(zhǔn)Linux的所有硬件中斷首先被中斷仿真器捕獲,所以也根本無法影響實(shí)時(shí)進(jìn)程的處理。當(dāng)實(shí)時(shí)內(nèi)核禁止中斷時(shí),仿真器中的一個(gè)標(biāo)志位被置0。當(dāng)有其它非實(shí)時(shí)中斷產(chǎn)生時(shí),仿真器檢查那個(gè)標(biāo)志位,如果為0,說明不允許中斷,否則可以立即執(zhí)~Linux中斷處理程序。筒而言之,Linux不能中斷自身,但是RT-Linux可以中斷Linux,這也就達(dá)到了所謂的”RT—Linux的核心可搶占機(jī)制”。實(shí)時(shí)任務(wù)與普通進(jìn)程之間的通信是通過封鎖,釋放隊(duì)列來完成的。具體地說就是當(dāng)有實(shí)時(shí)任務(wù)要完成時(shí),實(shí)時(shí)操作系統(tǒng)運(yùn)行實(shí)時(shí)內(nèi)核下的任務(wù);當(dāng)沒有實(shí)時(shí)任務(wù)時(shí),實(shí)時(shí)內(nèi)核調(diào)度 Linux運(yùn)行。所以Linux是實(shí)時(shí)內(nèi)核中優(yōu)先級(jí)最低的一個(gè)任務(wù)。
目前為止,在RT-Linux中采用兩種調(diào)度策略。一種是基于優(yōu)先級(jí)的搶占式調(diào)度算法;另一種是lsmaelRipoll實(shí)現(xiàn)的 EDF(EarliestDeadlineFirst)算法。對(duì)于周期性任務(wù)可以采用單調(diào)率調(diào)度算法,即周期短的任務(wù)能夠獲得較高的優(yōu)先級(jí)。調(diào)度策略將 Linux視為賦予最低優(yōu)先級(jí)的實(shí)時(shí)任務(wù)。
Linux僅僅在實(shí)時(shí)系統(tǒng)沒有其它任務(wù)時(shí)運(yùn)行。Linux和實(shí)時(shí)任務(wù)之間的轉(zhuǎn)換依據(jù)上述提及的軟中斷狀態(tài)而定。RT-Linux通過這樣一種設(shè)計(jì)方法,將標(biāo)準(zhǔn)的Linux核心改成一個(gè)可搶占的、具有低延遲中斷處理的實(shí)時(shí)系統(tǒng)。
2.提高實(shí)時(shí)操作系統(tǒng)的實(shí)時(shí)性能和可靠性策略
對(duì)很多嵌入式系統(tǒng)來說,一個(gè)設(shè)計(jì)良好的實(shí)時(shí)操作系統(tǒng)(RTOS)可以讓開發(fā)工程師掌握系統(tǒng)執(zhí)行任何任務(wù)或響應(yīng)任何關(guān)鍵事件的時(shí)間,滿足系統(tǒng)實(shí)時(shí)性要求。為了理解RTOS如何通過系統(tǒng)調(diào)度策略實(shí)現(xiàn)實(shí)時(shí)性要求,本文介紹了搶占式調(diào)度、可搶占的內(nèi)核、優(yōu)先級(jí)繼承和中斷處理等概念。在設(shè)計(jì)工業(yè)控制系統(tǒng)或醫(yī)療設(shè)備時(shí),大部分工程師和系統(tǒng)設(shè)計(jì)工程師會(huì)認(rèn)為采用RTOS是必需的。然而,網(wǎng)際路由器、車載娛樂系統(tǒng)和多媒體設(shè)備等普通應(yīng)用還需要采用RTOS嗎?像Linux或Windows這樣的通用操作系統(tǒng)是否就能勝任呢?通常,這些產(chǎn)品需要采用RTOS,但是這個(gè)問題常常直到設(shè)計(jì)階段的后期才能意識(shí)到。RTOS對(duì)于很多嵌入式系統(tǒng)來說不但是有益的,而且也是必要的,認(rèn)識(shí)到這一點(diǎn)很重要。例如,一個(gè)播放如MPEG格式電影的設(shè)備,如果依靠軟件來實(shí)現(xiàn)其整個(gè)內(nèi)容傳輸,可能會(huì)出現(xiàn)用戶難以接受的高丟幀率。然而,通過使用RTOS,系統(tǒng)設(shè)計(jì)工程師能夠準(zhǔn)確地控制軟件過程的執(zhí)行順序,從而保證按照給定的媒體速率進(jìn)行播放。上述大部分情況適用于用戶希望對(duì)輸入做出立即響應(yīng)的系統(tǒng)。通過RTOS,開發(fā)人員能夠保證由用戶的操作總能得到及時(shí)的響應(yīng),除非一個(gè)更重要的操作(如一項(xiàng)有助于保障用戶安全的操作)必須首先執(zhí)行。總之,一個(gè)好的RTOS支持開發(fā)人員控制系統(tǒng)執(zhí)行任何任務(wù)或?qū)θ魏沃匾录龀龇磻?yīng)的時(shí)間,并且能夠以一種可以預(yù)測(cè)并且完全一致的形式滿足任務(wù)執(zhí)行的最終期限要求。但是,如果RTOS崩潰,這些最終期限就不能被滿足。因此,RTOS必須提供高度的可靠性。特別是它必須提供在不需要重啟的情況下,從軟件故障中快速并智能恢復(fù)的機(jī)制。
3.搶占式調(diào)度
在像Linux這樣的通用操作系統(tǒng)中,在對(duì)線程和進(jìn)程的CPU占用上采用了“公平”調(diào)度策略。這樣的策略能夠提供良好的整體表現(xiàn),但是不能保證高優(yōu)先級(jí)、對(duì)時(shí)間要求嚴(yán)格的線程將優(yōu)先于低優(yōu)先級(jí)的線程執(zhí)行。事實(shí)上,操作系統(tǒng)有時(shí)甚至?xí)袛喔邇?yōu)先級(jí)的線程來為低優(yōu)先級(jí)線程提供CPU時(shí)間。其結(jié)果可能造成對(duì)時(shí)間要求嚴(yán)格的線程很容易地錯(cuò)過它們的最終期限,甚至在一個(gè)高速的高端處理器上運(yùn)行時(shí)也會(huì)出現(xiàn)這種情況。而在RTOS中,線程按照其優(yōu)先級(jí)順序執(zhí)行。如果一個(gè)高優(yōu)先級(jí)的線程準(zhǔn)備運(yùn)行時(shí),它將在一個(gè)短的、有限時(shí)間間隔內(nèi)從任何可能正在運(yùn)行的低優(yōu)先級(jí)進(jìn)程接管CPU。另外,高優(yōu)先級(jí)的線程能夠不被中斷地運(yùn)行,直到它已經(jīng)完成了需要做的事情-當(dāng)然是在不被更高優(yōu)先級(jí)進(jìn)程搶占的前提下。這種方法就是搶占式調(diào)度,保證了高優(yōu)先級(jí)線程始終滿足其最終期限,而不管有多少其它線程正在競(jìng)爭(zhēng)CPU時(shí)間。通過合理地控制線程優(yōu)先級(jí),開發(fā)者能顯著地提高很多對(duì)用戶非常重要的應(yīng)用響應(yīng)速度。然而,控制優(yōu)先級(jí)可能是一把雙刃劍,當(dāng)使用不當(dāng)時(shí)它可能會(huì)潛在地導(dǎo)致低優(yōu)先級(jí)的進(jìn)程不能得到CPU時(shí)間。保證高優(yōu)先級(jí)的進(jìn)程和線程的同時(shí)確保不會(huì)使其它進(jìn)程處于“饑餓”狀態(tài)的關(guān)鍵是要對(duì)它們的執(zhí)行進(jìn)行限制,通過對(duì)執(zhí)行進(jìn)行調(diào)整或在響應(yīng)加載的過程中進(jìn)行控制,開發(fā)人員能夠限制這些活動(dòng)消耗的CPU時(shí)間比例,并支持低優(yōu)先級(jí)進(jìn)程獲得對(duì)CPU的共享。優(yōu)先級(jí)控制能夠使很多應(yīng)用受益,包括像前面提到的媒體播放器(MP3、WAV、MPEG2等格式)。媒體播放器需要實(shí)現(xiàn)正常播放所要求的速率(例如44kHz的音頻、30fps的視頻)。在這種限制之下,一個(gè)讀線程和一個(gè)顯示線程可以被設(shè)計(jì)成依靠一個(gè)可編程的定時(shí)器來喚醒,緩沖或顯示一幀后進(jìn)入睡眠狀態(tài),直到下一個(gè)定時(shí)觸發(fā)。這提供了一種調(diào)整機(jī)制,支持高于正常用戶活動(dòng)而又低于關(guān)鍵系統(tǒng)功能的優(yōu)先級(jí)設(shè)置。換句話說,如果沒有更重要的任務(wù)準(zhǔn)備運(yùn)行,媒體播放將始終以給定的媒體速率執(zhí)行。
4.最壞情形
搶占式調(diào)度僅在高優(yōu)先級(jí)的線程在一個(gè)短的、有限時(shí)間段內(nèi)搶占低優(yōu)先級(jí)線程的情況下有效。否則,系統(tǒng)將不可能預(yù)測(cè)要花費(fèi)多長(zhǎng)時(shí)間來執(zhí)行一個(gè)給定的操作。因此,任何銷售進(jìn)程模式的RTOS的供應(yīng)商都必須提供針對(duì)下面兩種時(shí)間間隔提供最壞情形:線程切換時(shí)間,即當(dāng)兩個(gè)線程處于同一進(jìn)程的情況下,從執(zhí)行一個(gè)線程的最后一條指令到執(zhí)行下一個(gè)被調(diào)度線程的第一條指令所經(jīng)過的時(shí)間;前后關(guān)系切換(context switch)時(shí)間,其定義同上,但僅針對(duì)兩個(gè)線程處于不同進(jìn)程的情況??梢詫⒕€程看作是最小的“執(zhí)行單元”,而將進(jìn)程看作是一個(gè)或多個(gè)線程的“容器”,進(jìn)程定義了線程將要在其中執(zhí)行的地址空間。顯然,最壞情形的前后關(guān)系切換時(shí)間將比最壞情形的線程切換時(shí)間要慢,盡管在一個(gè)好的RTOS設(shè)計(jì)中差別可能是微不足道的。將所有的線程放在幾個(gè)大的進(jìn)程中將是錯(cuò)誤的,因?yàn)榫€程提供的切換速度更快。雖然線程能實(shí)現(xiàn)并行處理優(yōu)勢(shì)因而適合于某些設(shè)計(jì),但將一個(gè)應(yīng)用分成多個(gè)內(nèi)存保護(hù)的進(jìn)程使得代碼更容易調(diào)試,提供了更好的錯(cuò)誤隔離和恢復(fù)能力,并允許系統(tǒng)進(jìn)行新功能的動(dòng)態(tài)升級(jí)。
5.可搶占的內(nèi)核
在大部分通用操作系統(tǒng)中,操作系統(tǒng)的內(nèi)核是不可搶占的。其結(jié)果是,一個(gè)高優(yōu)先級(jí)的進(jìn)程不可能搶占一個(gè)內(nèi)核調(diào)用,而是必須等待整個(gè)調(diào)用完成,即使這個(gè)調(diào)用是由系統(tǒng)中的低優(yōu)先級(jí)進(jìn)程發(fā)起的。另外,當(dāng)經(jīng)常在內(nèi)核調(diào)用中執(zhí)行的驅(qū)動(dòng)程序或其它系統(tǒng)服務(wù)代表一個(gè)客戶線程執(zhí)行的時(shí)候,所有的優(yōu)先級(jí)信息常常會(huì)丟失,這導(dǎo)致了不可預(yù)測(cè)的延遲并阻止了關(guān)鍵活動(dòng)的準(zhǔn)時(shí)完成。而在RTOS中,內(nèi)核操作是可搶占的。盡管仍然會(huì)存在一些時(shí)間窗口,在這些時(shí)間窗口中可能沒有搶占,但是這些時(shí)間間隔應(yīng)該是相當(dāng)短暫的,通常在幾百納秒。另外,必須有一個(gè)關(guān)于搶占被推遲或中斷被禁止的時(shí)間上限,這樣開發(fā)者可以確定最壞情形下的等待時(shí)間。為了實(shí)現(xiàn)這個(gè)目標(biāo),操作系統(tǒng)內(nèi)核必須盡可能簡(jiǎn)潔,只有具有較短執(zhí)行路徑的服務(wù)才被包含在內(nèi)核中,任何需要大量工作(如進(jìn)程加載)的操作必須被安排到外部進(jìn)程或線程。這種方法有助于通過內(nèi)核確保最長(zhǎng)的不可搶占代碼路徑具有一個(gè)時(shí)間上限。
6.優(yōu)先級(jí)繼承
然而,為一個(gè)進(jìn)程設(shè)定一個(gè)高優(yōu)先級(jí)并不總能保證該進(jìn)程能夠搶占低優(yōu)先級(jí)的進(jìn)程。有時(shí)候,系統(tǒng)會(huì)出現(xiàn)一種稱為優(yōu)先級(jí)倒置(priority inversion)的狀態(tài),在這種狀態(tài)下,低優(yōu)先級(jí)的進(jìn)程將在“無意中”阻止較高優(yōu)先級(jí)進(jìn)程占用CPU。優(yōu)先級(jí)倒置可能會(huì)表現(xiàn)為幾種形式,為了防止發(fā)生這種情況,RTOS必須提供一種稱為優(yōu)先級(jí)繼承的功能。假定系統(tǒng)有三個(gè)進(jìn)程:A(低優(yōu)先級(jí)),B(中等優(yōu)先級(jí)),Z(高優(yōu)先級(jí))。這里Z是一個(gè)為A和B提供服務(wù)的“服務(wù)器”進(jìn)程。現(xiàn)在假定A已經(jīng)請(qǐng)求Z來執(zhí)行一個(gè)計(jì)算,而在這期間,突然B需要Z的服務(wù)。因?yàn)锽擁有比A更高的優(yōu)先級(jí),一般會(huì)認(rèn)為Z將立即掛起A的請(qǐng)求并將轉(zhuǎn)向?yàn)锽服務(wù)。但是實(shí)際情況并非如此,因?yàn)閆比B具有更高的優(yōu)先級(jí)。其結(jié)果是,B不能阻止Z完成它當(dāng)前的工作,即對(duì)A做出響應(yīng)。從效果上看,低優(yōu)先級(jí)的進(jìn)程A占用了更高優(yōu)先級(jí)進(jìn)程B的CPU時(shí)間,這是引入優(yōu)先級(jí)繼承的原因。通過使用RTOS提供的優(yōu)先級(jí)繼承機(jī)制,系統(tǒng)可以在A發(fā)出請(qǐng)求的情況下,讓Z繼承A的低優(yōu)先級(jí)。通過這種方式,B能夠在任何時(shí)候搶占A的請(qǐng)求。如果一個(gè)應(yīng)用程序分布于幾個(gè)通過網(wǎng)絡(luò)連接的處理器,那么RTOS也應(yīng)該支持分布式優(yōu)先級(jí)繼承,這樣可以按照優(yōu)先級(jí)的順序處理來自多個(gè)處理器的請(qǐng)求。如果沒有優(yōu)先級(jí)繼承,一個(gè)多處理器系統(tǒng)可能會(huì)落入無限的優(yōu)先級(jí)倒置和死鎖中。7.中斷處理
為了獲得對(duì)外部事件的及時(shí)響應(yīng),最小化硬件中斷發(fā)生到執(zhí)行該中斷的第一條代碼的時(shí)間很重要。這個(gè)時(shí)間間隔稱為中斷延遲,為了保證中斷延遲盡可能小,一個(gè)好的RTOS應(yīng)該在幾乎所有時(shí)間內(nèi)都支持產(chǎn)生中斷。正如在關(guān)于內(nèi)核搶占部分提到的那樣,一些重要的代碼段的確需要暫時(shí)屏蔽中斷。這種最大的屏蔽時(shí)間通常被定義為最大的中斷延遲。在某些情況下,硬件中斷處理器必須調(diào)度并運(yùn)行一個(gè)更高優(yōu)先級(jí)的線程(例如在一個(gè)驅(qū)動(dòng)程序中)。在這樣的情況下,中斷處理器將返回并指示一個(gè)事件將被處理。這樣的處理將引入了第二種形式的延遲-調(diào)度延遲,這個(gè)延時(shí)必須在設(shè)計(jì)中加以考慮。調(diào)度延遲是介于用戶的中斷處理器的最后一條指令和驅(qū)動(dòng)程序線程第一條指令的執(zhí)行之間的時(shí)間。在一個(gè)嵌入式系統(tǒng)中可能會(huì)同時(shí)出現(xiàn)多個(gè)硬件中斷。例如,在一個(gè)病人監(jiān)護(hù)系統(tǒng)中,當(dāng)一個(gè)傳感器記錄了病人心跳的一次變化并且網(wǎng)卡接收到網(wǎng)絡(luò)傳來的數(shù)據(jù)的同時(shí),護(hù)士按了觸摸屏。很明顯,一些中斷(如心率的變化)應(yīng)該立即得到處理,而其他的則可以延緩。通過提供對(duì)嵌套中斷的支持,RTOS支持嵌入式系統(tǒng)優(yōu)先處理更高優(yōu)先級(jí)的中斷。
8.如何提高可靠性
我們已經(jīng)明白怎樣使RTOS具有可以預(yù)測(cè)性,但是如何實(shí)現(xiàn)其可靠性呢?答案在很大程度上取決于RTOS的架構(gòu)。例如在實(shí)時(shí)執(zhí)行模式架構(gòu)中,大部分或所有軟件組件都在一個(gè)單一的內(nèi)存地址空間中運(yùn)行,包括操作系統(tǒng)內(nèi)核、網(wǎng)絡(luò)協(xié)議棧、設(shè)備驅(qū)動(dòng)程序、應(yīng)用程序等。雖然很有效率,但這種架構(gòu)有兩個(gè)明顯的缺陷:1.在任何組件中的一個(gè)指針錯(cuò)誤,不論這個(gè)錯(cuò)誤多么細(xì)微,都可能破壞操作系統(tǒng)內(nèi)核或任何其它組件,導(dǎo)致不可預(yù)測(cè)的行為和整個(gè)系統(tǒng)的崩潰;2.很難動(dòng)態(tài)修復(fù)或替換任何有故障的組件。在大多數(shù)情況下,出現(xiàn)這些問題時(shí)系統(tǒng)復(fù)位是唯一的選擇。一些RTOS,也像Linux一樣,試圖通過使用單內(nèi)核架構(gòu)來解決這個(gè)問題。在這種架構(gòu)中,用戶的應(yīng)用程序在隔離的、受保護(hù)內(nèi)存地址空間中運(yùn)行。如果一個(gè)應(yīng)用程序試圖訪問其地址空間之外的數(shù)據(jù),內(nèi)存管理單元(MMU)將通知操作系統(tǒng),操作系統(tǒng)可能會(huì)采取保護(hù)措施,例如終止出錯(cuò)進(jìn)程。然而,這樣的操作系統(tǒng)需要將大多數(shù)或所有驅(qū)動(dòng)程序、文件系統(tǒng)和其它系統(tǒng)服務(wù)綁定到內(nèi)核中。因此,任何組件中的一個(gè)錯(cuò)誤都可能帶來災(zāi)難性的內(nèi)核故障。第三種方法是采用微內(nèi)核(mricokernel)架構(gòu)來提供更精確的故障隔離,像QNX Neutrino這樣的操作系統(tǒng)都基于微內(nèi)核架構(gòu)。
微內(nèi)核有兩個(gè)明確的特征:
1.在操作系統(tǒng)內(nèi)核中只實(shí)現(xiàn)了一個(gè)包含了基本OS服務(wù)的小內(nèi)核(如信號(hào)量、定時(shí)器、任務(wù)調(diào)度等)。包括驅(qū)動(dòng)程序、文件系統(tǒng)、協(xié)議棧和用戶應(yīng)用程序在內(nèi)的所有其它的組件在內(nèi)核外部分離的、保護(hù)內(nèi)存的進(jìn)程中運(yùn)行。有問題的系統(tǒng)服務(wù)不再作為孤立的故障點(diǎn),而是在它破壞其它服務(wù)或操作系統(tǒng)內(nèi)核之前被終止并重啟。2.所有的組件能夠通過消息傳遞進(jìn)行通信,一個(gè)定義良好的通信機(jī)制保障了程序在保持彼此安全隔離的前提下進(jìn)行數(shù)據(jù)交換。適當(dāng)實(shí)現(xiàn)的消息傳遞也可以作為一個(gè)虛擬的“軟件總線”,允許幾乎任何的軟件組件,甚至是一個(gè)設(shè)備驅(qū)動(dòng)程序被動(dòng)態(tài)地加入或替換,對(duì)于必須提供連續(xù)服務(wù)的系統(tǒng)而言這是一項(xiàng)關(guān)鍵要求。
和傳統(tǒng)的操作系統(tǒng)架構(gòu)相比,微內(nèi)核支持嵌入式設(shè)備贏得明顯更快的平均修復(fù)時(shí)間(MTTR)。例如,如果一個(gè)設(shè)備驅(qū)動(dòng)程序失敗將可能出現(xiàn)以下情況:操作系統(tǒng)可以終止該驅(qū)動(dòng)程序,回收其正在使用的資源,并對(duì)其進(jìn)行重新啟動(dòng),這個(gè)過程通常這只需要幾個(gè)毫秒時(shí)間。
盡管和傳統(tǒng)的操作系統(tǒng)相比,基于消息傳遞的微內(nèi)核RTOS通常提供了更好的容錯(cuò)性和動(dòng)態(tài)升級(jí)能力,也有一些觀點(diǎn)認(rèn)為消息傳遞增加了開銷。在實(shí)際應(yīng)用中,如果實(shí)現(xiàn)正確,消息傳遞的性能可以接近底層硬件的內(nèi)存帶寬。例如,一個(gè)微內(nèi)核RTOS可以采用多段式(multipart)消息和線程到線程的消息數(shù)據(jù)直接拷貝等各種技術(shù),來確保系統(tǒng)性能可以達(dá)到傳統(tǒng)的進(jìn)程間通信(IPC)方法的水平。由一些組織如Dedicated Systems(網(wǎng)址:www.omimo.be)等進(jìn)行的獨(dú)立測(cè)試證實(shí),和傳統(tǒng)的RTOS相比,微內(nèi)核RTOS在一系列的實(shí)時(shí)指標(biāo)方面表現(xiàn)良好,在很多情況下甚至有更好的表現(xiàn)。
9.策略決策
RTOS有助于使一個(gè)復(fù)雜的應(yīng)用程序具有可預(yù)測(cè)性和可靠性。當(dāng)然,選擇一個(gè)合適的RTOS本身就是一項(xiàng)復(fù)雜的任務(wù),而RTOS的底層架構(gòu)是選擇的重要依據(jù),此外還有一些其它因素,包括:
1.調(diào)度算法的靈活選擇。RTOS應(yīng)該支持調(diào)度算法的選擇(先入先出(FIFO)、輪詢(round robin)、零星調(diào)度等)并支持以線程為單位設(shè)定這些算法。這樣,工程師就可以不必將一個(gè)算法用到系統(tǒng)中的所有線程。
2.圖形用戶界面(GUI)。RTOS使用的是原始的圖形庫(kù)還是能支持多層界面、多路顯示、3D渲染以及其它高級(jí)的圖形功能的真正的窗口系統(tǒng)?能很容易定制GUI的外觀嗎?GUI支持同時(shí)顯示和輸入多種語言(漢語、韓語、日語、英語、俄語等)嗎?
3.遠(yuǎn)程診斷工具。因?yàn)閷?duì)很多嵌入式系統(tǒng)而言,中斷系統(tǒng)運(yùn)行進(jìn)行檢測(cè)和維護(hù)是無法接受的。RTOS供應(yīng)商應(yīng)該提供診斷工具,這些工具能夠在不中斷系統(tǒng)服務(wù)的前提下分析系統(tǒng)的行為。要尋找能提供代碼覆蓋、應(yīng)用測(cè)評(píng)、跟蹤分析和內(nèi)存分析工具的供應(yīng)商。
4.開發(fā)平臺(tái)。RTOS提供商提供的開發(fā)環(huán)境是基于像Eclipse那樣的開放平臺(tái),允許工程師嵌入所喜愛的第三方工具來進(jìn)行建模、版本控制嗎?還是開發(fā)環(huán)境基于專利技術(shù)?
5.互聯(lián)網(wǎng)功能。RTOS支持預(yù)集成最新的IPv4、IPv6、IPsec、SCTP和具有NAT功能的IP過濾等協(xié)議棧套件嗎?它支持嵌入式網(wǎng)絡(luò)瀏覽器嗎?瀏覽器應(yīng)該具有可擴(kuò)展的封裝模式,并能夠在很小的屏幕上繪制網(wǎng)頁(yè)。它也應(yīng)該支持像HTML 4.01、XHTML 1.1、SSL 3.0和 WML 1.3這樣的標(biāo)準(zhǔn)。
6.標(biāo)準(zhǔn)API。RTOS將你限定到專有的API之中了嗎?還是它對(duì)于像POSIX這樣的標(biāo)準(zhǔn)API提供了完全的支持,這使得將代碼移植到其它操作系統(tǒng),或者從其它操作系統(tǒng)移植代碼變得更容易?另外,所用的RTOS提供完全一致性的API還是僅僅支持被定義接口的一個(gè)子集?例如,POSIX.1的最新版本包含了大約1,300個(gè)接口。
7.多處理技術(shù)。RTOS能支持對(duì)稱多處理和分布式多處理技術(shù)來提高應(yīng)用性能和容量嗎?如果這樣,是必須重新設(shè)計(jì)你的應(yīng)用程序呢,還是RTOS能夠?qū)?yīng)用程序透明的分配到多個(gè)處理器上去呢?
8.源代碼工具包。RTOS供應(yīng)商提供了能使RTOS滿足設(shè)計(jì)需求的具有詳細(xì)文檔的定制工具包嗎?供應(yīng)商提供了方便開發(fā)驅(qū)動(dòng)定制硬件的驅(qū)動(dòng)程序開發(fā)工具包嗎?
9.對(duì)于很多公司而言,選擇一款RTOS是一項(xiàng)戰(zhàn)略性決策。RTOS供應(yīng)商在對(duì)上述問題提供了清楚的回答后,你將選擇出一個(gè)在現(xiàn)在和將來都適合你的RTOS。
第三篇:實(shí)時(shí)操作系統(tǒng)報(bào)告
實(shí)時(shí)操作系統(tǒng)課程實(shí)驗(yàn)報(bào)告
專業(yè):通信1001 學(xué)號(hào):3100601025 姓名:陳治州
完成時(shí)間:2013年6月11日
實(shí)驗(yàn) 簡(jiǎn)易電飯煲的模擬
一.實(shí)驗(yàn)?zāi)康模?/p>
掌握在基于嵌入式實(shí)時(shí)操作系統(tǒng)μC/OS-II的應(yīng)用中,基于多任務(wù)的模式的編程方法。鍛煉綜合應(yīng)用多任務(wù)機(jī)制,任務(wù)間的通信機(jī)制,內(nèi)存管理等的能力。
二.實(shí)驗(yàn)要求:
1.按“S”開機(jī),系統(tǒng)進(jìn)入待機(jī)狀態(tài),時(shí)間區(qū)域顯示當(dāng)前北京時(shí)間,默認(rèn)模式“煮飯”;2.按“C”選擇模式,即在“煮飯”、“煮粥”和“煮面”模式中循環(huán)選擇;
3.按“B”開始執(zhí)行模式命令,“開始”狀態(tài)選中,時(shí)間區(qū)域開始倒計(jì)時(shí),倒計(jì)時(shí)完成后進(jìn)入“保溫”狀態(tài),同時(shí)該狀態(tài)顯示選中,時(shí)間區(qū)域顯示保溫時(shí)間;
4.按“Q”取消當(dāng)前工作狀態(tài),系統(tǒng)進(jìn)入待機(jī)狀態(tài),時(shí)間區(qū)域顯示北京時(shí)間,模式為當(dāng)前模式;
5.按“X”退出系統(tǒng),時(shí)間區(qū)域不顯示。
6.煮飯時(shí)長(zhǎng)為30,煮粥時(shí)長(zhǎng)為50,煮面時(shí)長(zhǎng)為40.三.實(shí)驗(yàn)設(shè)計(jì):
1.設(shè)計(jì)思路:
以老師所給的五個(gè)程序?yàn)榛A(chǔ),看懂每個(gè)實(shí)驗(yàn)之后,對(duì)borlandc的操作有了大概的認(rèn)識(shí),重點(diǎn)以第五個(gè)實(shí)驗(yàn)Task_EX為框架,利用其中界面顯示與按鍵掃描以及做出相應(yīng)的響應(yīng),對(duì)應(yīng)實(shí)現(xiàn)此次實(shí)驗(yàn)所需要的功能。
本次實(shí)驗(yàn)分為界面顯示、按鍵查詢與響應(yīng)、切換功能、時(shí)鐘顯示與倒計(jì)時(shí)模塊,綜合在一起實(shí)驗(yàn)所需功能。2.模塊劃分圖:(1)界面顯示:
Main()Taskstart()Taskstartdispinit()在TaskStartDispInit()函數(shù)中,使用PC_DispStr()函數(shù)畫出界面。(2)按鍵查詢與響應(yīng):
Main()Taskstart()在TaskStart()函數(shù)中,用if(PC_GetKey(&key)== TRUE)判斷是否有按鍵輸入。然后根據(jù)key的值,判斷輸入的按鍵是哪一個(gè);在響應(yīng)中用switch語句來執(zhí)行對(duì)應(yīng)按鍵的響應(yīng)。(3)切換功能:
l計(jì)數(shù)“C”按鍵的次數(shù)M=l%3Switch(m)M=0,1,2對(duì)應(yīng)于煮飯,煮粥,煮面,然后使用PC_DispStr()函數(shù)在選擇的選項(xiàng)前畫上“@”指示,同時(shí),在其余兩項(xiàng)錢畫上“ ”以“擦出”之前畫下的“@”,注意l自增。
四.主要代碼:
#include “stdio.h” #include “includes.h” #include “time.h” #include “dos.h” #include “sys/types.h” #include “stdlib.h” #define TASK_STK_SIZE
512
#define N_TASKS
OS_STK
TaskStk[N_TASKS][TASK_STK_SIZE];
OS_STK
TaskStartStk[TASK_STK_SIZE];
INT8U
TaskData[N_TASKS];
void Task0(void *pdata);
void TaskStart(void *pdata);
static void TaskStartDispInit(void);
void main(void){
PC_DispClrScr(DISP_FGND_WHITE + DISP_BGND_BLACK);
OSInit();
PC_DOSSaveReturn();
PC_VectSet(uCOS, OSCtxSw);
OSTaskCreate(TaskStart,(void *)0, &TaskStartStk[TASK_STK_SIZE-1], 4);
OSStart();
} void TaskStart(void *pdata){ #if OS_CRITICAL_METHOD == 3
OS_CPU_SR cpu_sr;#endif
INT8U l,m;
INT16S key;
l=0;
pdata = pdata;
TaskStartDispInit();
OS_ENTER_CRITICAL();
PC_VectSet(0x08, OSTickISR);
PC_SetTickRate(OS_TICKS_PER_SEC);
OS_EXIT_CRITICAL();
OSStatInit();
for(;;){
if(PC_GetKey(&key)== TRUE)
{
switch(key)
{
case 0x1B:
PC_DOSReturn();
break;
case 0x43:
{ m=(l%3);
switch(m)
{ case 0: {
PC_DispStr(26,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;
case 1: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(40,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(55,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);} break;case 2: { PC_DispStr(26,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);
PC_DispStr(40,6, “ ”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(55,6, “@”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);}
break;}
l++;} break;
} } OSCtxSwCtr = 0;
OSTimeDlyHMSM(0, 0, 1, 0);
} } static void TaskStartDispInit(void){ PC_DispStr(0, 0, “
uC/OS-II, The Real-Time Kernel
”, DISP_FGND_WHITE + DISP_BGND_RED + DISP_BLINK);PC_DispStr(0, 1, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 2, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 3, “
dianfanbao shiyan
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 4, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 5, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 6, “
kai shi.zhu fan.zhu zhou.zhu mian.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 7, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 8, “
bao wen.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 9, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 10, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 11, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 12, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 13, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 14, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 15, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 16, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 17, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 18, “
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY);PC_DispStr(0, 19, “ 'S':kai ji.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 20, “ 'C':mo shi qie huan.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 21, “ 'B':kai shi zhi xin.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 22, “ 'Q':qu xiao dang qian gong zuo zhuang tai.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);PC_DispStr(0, 23, “ 'X':tui chu xi tong.”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);
PC_DispStr(0, 24, “
<-PRESS 'ESC' TO QUIT->
”, DISP_FGND_BLACK + DISP_BGND_LIGHT_GRAY + DISP_BLINK);}
五.運(yùn)行界面:
(1)主界面:
(2)顯示北京時(shí)間:
(3)模式切換:
(4)倒計(jì)時(shí):
(5)保溫執(zhí)行時(shí)間:
六.總結(jié):
本次實(shí)驗(yàn)主要以老師所給的實(shí)驗(yàn)事例為基礎(chǔ),并結(jié)合老師課堂講的內(nèi)容,理解編寫程序。做實(shí)驗(yàn)本實(shí)驗(yàn)前,先執(zhí)行了一下事例程序,以此了解borlandc的一些基本操作;然后就是看懂每個(gè)實(shí)驗(yàn)的框架和主要部分;接著,將事例程序中的部分思想運(yùn)用到本次實(shí)驗(yàn)中,其中以顯示界面的思想運(yùn)用的最多;除此以外,在模式切換上花了最大的精力,最終的解決方法是以變量l作為一個(gè)計(jì)數(shù)值,并運(yùn)用switch語句在選擇的模式上畫上“@”,同時(shí)還得注意在未選擇的模式上畫上空格來“擦除”之前畫上的@;在查詢按鍵上,同樣運(yùn)用switch語句......這次實(shí)驗(yàn)收獲不少,不僅對(duì)之前學(xué)的C語言有了更進(jìn)一步的鞏固,而且還強(qiáng)化了ucos里面的多任務(wù)的一些認(rèn)識(shí);同時(shí),以前對(duì)DOS界面很陌生,但本次實(shí)驗(yàn)使用的正是DOS界面,通過幾天的經(jīng)歷,對(duì)DOS中的編譯、“help”等各個(gè)方面有了更深入的認(rèn)識(shí),不再害怕使用DOS了。
對(duì)本課程有很大的興趣,在以后的課余時(shí)間里我會(huì)不斷學(xué)習(xí)這些知識(shí)。
第四篇:嵌入式Linux實(shí)時(shí)操作系統(tǒng)習(xí)題總結(jié)
第1章
1.嵌入式系統(tǒng)是指操作系統(tǒng)和功能軟件集成于計(jì)算機(jī)硬件系統(tǒng)之中。嵌入式系統(tǒng)一般有3個(gè)主要的組成部分:硬件、實(shí)時(shí)操作系統(tǒng)以及應(yīng)用軟件。
2.嵌入式系統(tǒng)的三要素是嵌入、專用、計(jì)算機(jī);即以應(yīng)用為中心、以計(jì)算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計(jì)算機(jī)系統(tǒng)。
3.目前國(guó)際較為知名的有:VxWorks、NeutrinoRTOS、Nucleus Plus、OS/
9、VRTX、LynuxOS,RTLinux、BlueCat RT等。
4.嵌入式系統(tǒng)一般由硬件層、中間層、軟件層和功能層組成。其作用分別如下:
(1)硬件層 :由嵌入式微處理器、外圍電路和外設(shè)組成。操作系統(tǒng)和應(yīng)用程序都可以固化在ROM或者Flash中。為方便使用,有的模塊在此基礎(chǔ)上增加了LCD、鍵盤、USB接口,以及其他一些功能的擴(kuò)展電路。
(2)中間層 :硬件層與軟件層之間為中間層,其作用將系統(tǒng)軟件與底層硬件部分隔離,使得系統(tǒng)的底層設(shè)備驅(qū)動(dòng)程序與硬件無關(guān);
(3)軟件層 :主要是操作系統(tǒng),有的還包括文件系統(tǒng)、圖形用戶接口和網(wǎng)絡(luò)系統(tǒng)等。操作系統(tǒng)是一個(gè)標(biāo)準(zhǔn)的內(nèi)核,將中斷、I/O、定時(shí)器等資源都封裝起來,以方便用戶使用。(4)功能層 :由基于操作系統(tǒng)開發(fā)的應(yīng)用程序組成,用來完成對(duì)被控對(duì)象的控制功能。5.非占先式調(diào)度法也稱作合作型多任務(wù)(cooperative multitasking),各個(gè)任務(wù)彼此合作共享一個(gè)CPU。中斷服務(wù)可以使一個(gè)高優(yōu)先級(jí)的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個(gè)任務(wù),直到該任務(wù)主動(dòng)放棄CPU的使用權(quán)時(shí),那個(gè)高優(yōu)先級(jí)的任務(wù)才能獲得CPU的使用權(quán)。當(dāng)系統(tǒng)響應(yīng)時(shí)間很重要時(shí),要使用占先式(preemptive)內(nèi)核。最高優(yōu)先級(jí)的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個(gè)運(yùn)行著的任務(wù)使一個(gè)比它優(yōu)先級(jí)高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了。6.在實(shí)時(shí)系統(tǒng)中,如果系統(tǒng)在指定的時(shí)間內(nèi)未能實(shí)現(xiàn)某個(gè)確定的任務(wù),會(huì)導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱硬實(shí)時(shí)系統(tǒng)。在弱實(shí)時(shí)系統(tǒng)中,超時(shí)卻不會(huì)發(fā)生致命的錯(cuò)誤。其實(shí)時(shí)性的要求比硬實(shí)時(shí)系統(tǒng)要差一些。
7.嵌入式系統(tǒng)的設(shè)計(jì)步驟及各部分的主要工作如下。(1)需求分析階段,羅列出用戶的需求;
(2)體系結(jié)構(gòu)設(shè)計(jì)階段,描述系統(tǒng)的功能如何實(shí)現(xiàn);
(3)詳細(xì)設(shè)計(jì)階段,進(jìn)行硬件系統(tǒng)與軟件系統(tǒng)的分類劃分,以決定哪些功能用硬件實(shí)現(xiàn),哪些用軟件實(shí)現(xiàn);
(4)系統(tǒng)集成,把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)在設(shè)計(jì)過程中的錯(cuò)誤;
(5)系統(tǒng)測(cè)試,對(duì)設(shè)計(jì)好的系統(tǒng)進(jìn)行測(cè)試,看其是否滿足給定的要求。8.Linux作為嵌入式操作系統(tǒng)的優(yōu)勢(shì)主要有以下幾點(diǎn):
(1)可應(yīng)用于多種硬件平臺(tái)。
(2)Linux的高度模塊化使添加部件非常容易。
(3)Linux是一個(gè)和Unix相似、以內(nèi)核為基礎(chǔ)的、具有完全的內(nèi)存訪問控制,支持大量硬件的一種通用操作系統(tǒng)。
(4)Linux可以隨意地配置,不需要任何的許可證或商家的合作關(guān)系。
(5)Linux帶有Unix用戶熟悉的完善的開發(fā)工具。其強(qiáng)大的語言編譯器GCC,C++等也可以很容易得到,不但成熟完善,而且使用方便。9. Linux執(zhí)行進(jìn)程調(diào)度一般是在以下情況發(fā)生的:(1)正在執(zhí)行的進(jìn)程運(yùn)行完畢;
(2)正在執(zhí)行的進(jìn)程調(diào)用阻塞原語將自己阻塞起來進(jìn)入等待狀態(tài);(3)正在執(zhí)行的進(jìn)程調(diào)用了P原語操作,從而因資源不足而被阻塞;(4)執(zhí)行中的進(jìn)程提出I/O請(qǐng)求后被阻塞;(5)系統(tǒng)分配的時(shí)間片已經(jīng)用完;
(6)就緒隊(duì)列中的某個(gè)進(jìn)程的優(yōu)先級(jí)變得高于當(dāng)前運(yùn)行進(jìn)程的優(yōu)先級(jí)。
第4章
1、Linux 內(nèi)核的編譯菜單有好幾個(gè)版本,運(yùn)行:
(1)make config:進(jìn)入命令行,可以一行一行的配置,但使用不十分方便。
(2)make menuconfig:大多數(shù)開發(fā)人員使用的Linux 內(nèi)核編譯菜單,使用方便。
(3)make xconfig:在2.4.X 以及以前版本中xconfig 菜單是基于TCL/TK 的圖形庫(kù)的。
2、在完成內(nèi)核的裁減之后,內(nèi)核的編譯就只要執(zhí)行以下幾條命令: make clean
編譯內(nèi)核之前先把環(huán)境給清理干凈。make dep
編譯相關(guān)依賴文件 make zImage
創(chuàng)建內(nèi)核鏡像文件 make modules 創(chuàng)建內(nèi)核模塊。
make install
把相關(guān)文件拷貝到默認(rèn)的目錄。
3、此命令是裝載壓縮映像文件zImage到flash存儲(chǔ)器中,地址是kernel分區(qū),并采用xmodem傳輸協(xié)議。
4、此命令是設(shè)置網(wǎng)卡1的地址192.168.1.1,掩碼為255.255.255.0,不寫netmask參數(shù)則默認(rèn)為255.255.255.0。
5、此命令將nfs服務(wù)的共享目錄sharedir加載到/mnt/nfs。
6、此命令是裝載根文件系統(tǒng)root.cramfs到flash存儲(chǔ)器中,地址是根文件系統(tǒng)分區(qū),并采用xmodem傳輸協(xié)議。
7、這個(gè)命令的操作同時(shí)進(jìn)行了分區(qū)和格式化,0~128K存放vivi,128K~192K存放VIVI控制臺(tái)指令,192K~1216K存放kernel,1216K~4288K存放root,其余部分存放應(yīng)用程序。
第6章
1.使用虛擬地址尋址整個(gè)系統(tǒng)的主存和輔存的方式在現(xiàn)代操作系統(tǒng)中被稱為虛擬內(nèi)存。虛擬內(nèi)存的管理方法使系統(tǒng)既可以運(yùn)行體積比物理內(nèi)存還要大的應(yīng)用程序,也可以實(shí)現(xiàn)“按需調(diào)頁(yè)”策略,既滿足了程序的運(yùn)行速度,又節(jié)約了物理內(nèi)存空間。2.進(jìn)程內(nèi)存區(qū)域涉及到5種數(shù)據(jù)段,即:
①代碼段:代碼段是用來存放可執(zhí)行文件的操作指令。
②數(shù)據(jù)段:數(shù)據(jù)段用來存放可執(zhí)行文件中已初始化全局變量。③BSS段:BSS段包含了程序中未初始化的全局變量。④堆(heap):用于存放進(jìn)程運(yùn)行中被動(dòng)態(tài)分配的內(nèi)存段,它的大小并不固定,可動(dòng)態(tài)擴(kuò)張或縮減。
⑤棧:棧是用戶存放程序臨時(shí)創(chuàng)建的局部變量。3.在Linux系統(tǒng)中,內(nèi)核在最高級(jí)執(zhí)行,也稱為“系統(tǒng)態(tài)”,在這一級(jí)任何操作都可以執(zhí)行。而應(yīng)用程序則執(zhí)行在最低級(jí),即所謂的“用戶態(tài)”。在這一級(jí)處理器禁止對(duì)硬件的直接訪問和對(duì)內(nèi)存的未授權(quán)訪問。模塊是在所謂的“內(nèi)核空間”中運(yùn)行的,而應(yīng)用程序則是在“用戶空間”中運(yùn)行的。它們分別引用不同的內(nèi)存映射,也就是程序代碼使用不同的“地址空間”。4.共享內(nèi)存區(qū)域是被多個(gè)進(jìn)程共享的一部分物理內(nèi)存。如果多個(gè)進(jìn)程都把該內(nèi)存區(qū)域映射到自己的虛擬地址空間,則這些進(jìn)程就都可以直接訪問該共享內(nèi)存區(qū)域,從而可以通過該區(qū)域進(jìn)行通信。共享內(nèi)存是進(jìn)程間共享數(shù)據(jù)的一種最快的方法,一個(gè)進(jìn)程向共享內(nèi)存區(qū)域?qū)懭肓藬?shù)據(jù),共享這個(gè)內(nèi)存區(qū)域的所有進(jìn)程就可以立刻看到其中的內(nèi)容。5.內(nèi)存管理利用虛擬文件系統(tǒng)支持交換,交換進(jìn)程(swapd)定期由調(diào)度程序調(diào)度,這也是內(nèi)存管理依賴于進(jìn)程調(diào)度的唯一原因。當(dāng)一個(gè)進(jìn)程存取的內(nèi)存映射被換出時(shí),內(nèi)存管理向文件系統(tǒng)發(fā)出請(qǐng)求,同時(shí),掛起當(dāng)前正在運(yùn)行的進(jìn)程。
第9章
1.參考答案:
Mutex互斥量,用于操作某個(gè)臨界資源時(shí)對(duì)該資源上鎖,以實(shí)現(xiàn)互斥地對(duì)獨(dú)占資源的使用。Semophore信號(hào)燈,信號(hào)燈內(nèi)有一計(jì)數(shù)器,可以用于對(duì)多個(gè)同類資源的分配。
Condition條件變量,條件變量用于等待信號(hào)。當(dāng)一個(gè)線程需要等待某個(gè)信號(hào)時(shí),就可到條件變量上等待,當(dāng)信號(hào)具備時(shí),系統(tǒng)會(huì)喚醒該線程繼續(xù)運(yùn)行。2.參考答案:
本地:共享內(nèi)存+信號(hào)量,適合于大量數(shù)據(jù)傳輸。Linux支持系統(tǒng)V和POSIX的共享內(nèi)存和信號(hào)量。(5分)
遠(yuǎn)程:Socket+應(yīng)用協(xié)議。適合于跨網(wǎng)絡(luò)的(大量)數(shù)據(jù)傳輸。Linux支持BSD的socket。應(yīng)用層協(xié)議需要自行設(shè)計(jì)。(5分)
3.答案要點(diǎn):程序是編譯后形成的可執(zhí)行代碼,是靜止的。進(jìn)程是程序的一次執(zhí)行,是活動(dòng)的。線程是進(jìn)程的可執(zhí)行單元,同一進(jìn)程的不同線程共享進(jìn)程的資源和地址空間。4.兩種實(shí)現(xiàn)方法,一種是繼承Thread,另外一種是實(shí)現(xiàn)接口Runnable。
同步的實(shí)現(xiàn)方法有兩種,分別是synchronized, wait與notify。用synchronized可以對(duì)一段代碼、一個(gè)對(duì)象及一個(gè)方法進(jìn)行加鎖。用wait與notify可以使對(duì)象處于等待及喚醒方式導(dǎo)致同步,因?yàn)槊總€(gè)對(duì)象都直接或間接的繼承了Object類。
5、什么是BootLoader?主要有幾種工作模式及主要功能是什么? 答:
Bootloader就是操作系統(tǒng)內(nèi)核運(yùn)行的一段小程序,完成進(jìn)行初始化系統(tǒng)硬件設(shè)置的任務(wù),(2分)
分為啟動(dòng)加載模式和下載模式。(1啟動(dòng)加載模式
啟動(dòng)加載(Boot laoding)模式是指 Bootloader 從目標(biāo)機(jī)上的某個(gè)固態(tài)存儲(chǔ)設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個(gè)過程并沒有用戶的介入。(2分)(2)下載模式
在下載模式下,目標(biāo)機(jī)上的 Bootloader 將先通過串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)下載文件。(2分)
6、簡(jiǎn)述Bootloader有何作用?
答案要點(diǎn):(1)首先,bootloader是在特定硬件平臺(tái)運(yùn)行的程序,嚴(yán)重依賴于硬件平臺(tái),需要移植;(2)是系統(tǒng)上電之后,第一個(gè)運(yùn)行的程序,系統(tǒng)在上電或復(fù)位時(shí)通常都從地址 0x0 處開始執(zhí)行,而在這個(gè)地址處安排的通常就是系統(tǒng)的 Boot Loader 程序;(3)bootloader程序的設(shè)計(jì)目標(biāo)是啟動(dòng)嵌入式操作系統(tǒng),嵌入式操作系統(tǒng)的啟動(dòng)需要一定的條件,這些條件由bootloader來滿足;(4)Bootloader一般具有對(duì)存儲(chǔ)器和網(wǎng)絡(luò)接口操作的功能;如擦除、讀寫Flash,通過USB、串口下載文件等
第五篇:嵌入式實(shí)時(shí)操作系統(tǒng) 項(xiàng)目開發(fā)總結(jié)報(bào)告
項(xiàng)目開發(fā)總結(jié)報(bào)告
分 類:軟件項(xiàng)目計(jì)劃 使用者:E-fanciers
Version: 1.0
項(xiàng) 目 承 擔(dān) 隊(duì)伍:煙臺(tái)大學(xué)
計(jì)算機(jī)學(xué)院 E-fanciers小組撰 寫 人(簽名): 許超 于歌
完 成 日 期: 2009-7-16 本文檔使用小組: E-fanciers小組
評(píng)審負(fù)責(zé)人(簽名): 孝瑞
評(píng) 審 日 期: 2009-7-19
目 錄
一、引言.............................................3
1.1編寫目的.......................................3 1.2項(xiàng)目背景.......................................3 1.3定義...........................................3 1.4參考資料:.....................................3
二、開發(fā)結(jié)果........................錯(cuò)誤!未定義書簽。
2.1產(chǎn)品..........................錯(cuò)誤!未定義書簽。2.2主要功能......................錯(cuò)誤!未定義書簽。2.3所用工時(shí).......................................4 2.3所用機(jī)時(shí).......................................4 2.3進(jìn)度...........................................4
三、評(píng)價(jià)............................................4
3.1生產(chǎn)率評(píng)價(jià).....................................4 3.2技術(shù)方案評(píng)價(jià)...................................4 3.3產(chǎn)品質(zhì)量評(píng)價(jià)...................................4
四、經(jīng)驗(yàn)與教訓(xùn).......................................4
一.引言
1.編寫目的(闡明編寫總結(jié)報(bào)告的目的,指明讀者對(duì)象。)
詳細(xì)陳述項(xiàng)目開發(fā)過程,對(duì)項(xiàng)目開發(fā)做最后的總結(jié)完善,說明項(xiàng)目開發(fā)過程中遇到的難題及解決方案。
2.項(xiàng)目背景(說明項(xiàng)目的來源、委托單位、開發(fā)單位及主管部門。)
隨著微電子技術(shù)、計(jì)算機(jī)技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,嵌入式系統(tǒng)已廣泛應(yīng)用在各個(gè)領(lǐng)域,包括消費(fèi)電子、汽車電子、網(wǎng)絡(luò)通信、工業(yè)設(shè)備、航空航天和國(guó)防軍事等。隨著嵌入式技術(shù)的發(fā)展,工業(yè)領(lǐng)域也一改過去傳統(tǒng)的單片機(jī)應(yīng)用模式,逐漸將一些新嵌入式技術(shù)引入到系統(tǒng)中。特別是作為軟件基礎(chǔ)的嵌入式操作系統(tǒng)已廣泛為業(yè)界所接受,借以提高系統(tǒng)的開發(fā)效率和運(yùn)行效率。是否采用嵌入式操作系統(tǒng),已成為工業(yè)設(shè)備品質(zhì)優(yōu)劣的標(biāo)志之一。
當(dāng)今的嵌入式操作系統(tǒng)領(lǐng)域呈現(xiàn)百家爭(zhēng)鳴的狀態(tài)。據(jù)最近的調(diào)查數(shù)據(jù)顯示,嵌入式操作系統(tǒng)有數(shù)十種之多的。這種多樣性存在是必然的,是由嵌入式系統(tǒng)的定制性所決定的,是針對(duì)各個(gè)領(lǐng)域和行業(yè)的不同需求的應(yīng)對(duì)。也就是說,各個(gè)嵌入式操作系統(tǒng)都有自己的應(yīng)用領(lǐng)域,針對(duì)不同的應(yīng)用沒有絕對(duì)的優(yōu)劣之分,不會(huì)出現(xiàn)一種操作系統(tǒng)壟斷的局面。自主開發(fā)嵌入式操作系統(tǒng)絕對(duì)不是多余的,也是是對(duì)這種多樣性的自然順應(yīng),應(yīng)該可擁有自己的用武之地。有些國(guó)內(nèi)嵌入式廠商將希望寄托在Linux之上,以為它可以幫助解決所面臨的版稅和安全等問題。但事實(shí)并非完全如此,至少在嵌入式系統(tǒng)領(lǐng)域。首先,Linux還是泊來貨,國(guó)人并未掌握其核心技術(shù)和進(jìn)程,也并未解決對(duì)外依賴的問題。其次,Linux是為桌面系統(tǒng)而設(shè)計(jì)的,并不能很好地滿足嵌入式系統(tǒng)高效性和靈活性的要求;再次,Linux的一統(tǒng)也違背了嵌入式系統(tǒng)應(yīng)用靈活定制的本質(zhì)特性。
3.定義(列出報(bào)告中用到的專門術(shù)語定義和縮寫詞的原意。)
int taskInit(void);
/*創(chuàng)建一個(gè)任務(wù), 返回: 返回任務(wù)編號(hào)tid, >0: 成功, 其他: 失敗.*/ /*name: 任務(wù)名稱, entryPtr : 任務(wù)函數(shù)入口, stack_size: 任務(wù)棧大小, priority: 任務(wù)優(yōu)先級(jí)*/ int taskCreate(char *name, void *entryPtr, int stack_size, int priority);/*啟動(dòng)一個(gè)任務(wù), 讓taskCreat創(chuàng)建的任務(wù)參加調(diào)度*/ int taskStart(unsigned char tid);/*tid: 任務(wù)編號(hào), 由taskCreate返回*/ int taskPriorityGet(unsigned char tid);int taskPrioritySet(unsigned char tid, int newPriority);/*獲取和設(shè)置任務(wù)優(yōu)先級(jí), 用于動(dòng)態(tài)調(diào)整*/ int taskSuspend(unsigned char tid);/*將任務(wù)掛起, 該任務(wù)退出調(diào)度*/ int taskDelete(unsigned char tid);/*將任務(wù)刪除 該任務(wù)退出調(diào)度且回收任務(wù)分配的資源*/ int semCreate(void);/*互斥信號(hào)量創(chuàng)建, 返回信號(hào)量標(biāo)識(shí)sid, <0: 失敗*/ int semTake(int sid);int semGive(int sid);/*互斥信號(hào)量獲取和釋放*/ int taskSleep(int ticks);/*任務(wù)睡眠(非忙等), 由任務(wù)自己調(diào)用, 主動(dòng)阻塞一段時(shí)間.時(shí)間單位為tick, 即10ms*/ 4.參考資料(列出這些資料的作者、標(biāo)題、編號(hào)、發(fā)表日期、出版單位或資料來源,可包括:(1)項(xiàng)目開發(fā)計(jì)劃;(2)需求規(guī)格說明書;(3)概要設(shè)計(jì)說明書;(4)詳細(xì)設(shè)計(jì)說明書;(5)用戶操作手冊(cè);(6)測(cè)試計(jì)劃;(7)測(cè)試分析報(bào)告(8)本報(bào)告引用的其他資料、采用的開發(fā)標(biāo)準(zhǔn)或開發(fā)規(guī)范。)(1)軟件項(xiàng)目計(jì)劃(2)需求規(guī)格說明(3)軟件編寫向?qū)?/p>
(4)國(guó)家軟件開發(fā)文檔標(biāo)準(zhǔn)模板
二.開發(fā)結(jié)果
1.產(chǎn)品(可包括:(1)列出各部分的程序名稱、源程序行數(shù)(包括注釋行)或目標(biāo)程序字節(jié)數(shù)及程序總計(jì)數(shù)量、存儲(chǔ)形式;產(chǎn)品文檔名稱等。)
2.主要功能及性能 基本功能
1.基于參考硬件平臺(tái),建立硬件抽象層,完成基本硬件初始化,建立時(shí)鐘中斷; 2.在硬件抽象層基礎(chǔ)上,建立多任務(wù)操作系統(tǒng)環(huán)境; 3.任務(wù)調(diào)度采用同級(jí)時(shí)間片輪詢機(jī)制;
4.實(shí)現(xiàn)任務(wù)間基本通訊機(jī)制:互斥信號(hào)量(共享內(nèi)存); 5.實(shí)現(xiàn)基本的時(shí)鐘管理機(jī)制:任務(wù)睡眠阻塞;
6.實(shí)現(xiàn)一個(gè)RS232串口驅(qū)動(dòng)?;诖隍?qū)動(dòng)實(shí)現(xiàn)一個(gè)命令行Shell(用一個(gè)獨(dú)立的任務(wù)實(shí)現(xiàn)),可在超級(jí)終端顯示信息和執(zhí)行命令。
擴(kuò)展功能
7.任務(wù)區(qū)分優(yōu)先級(jí),在同級(jí)輪詢調(diào)度基礎(chǔ)上添加優(yōu)先級(jí)調(diào)度機(jī)制; 8.不同優(yōu)先級(jí)任務(wù)之間實(shí)現(xiàn)搶占調(diào)度;
9.在搶占調(diào)度的基礎(chǔ)上實(shí)現(xiàn)優(yōu)先級(jí)逆轉(zhuǎn)保護(hù),避免邏輯死鎖問題; 10.將代碼移植到另一個(gè)硬件平臺(tái)上運(yùn)行,驗(yàn)證代碼移植性。3.所用工時(shí)(按人員的不同層次分別計(jì)時(shí)。)
編碼成員工時(shí):60小時(shí)/周,共約400小時(shí);
編寫文檔成員:共約60小時(shí)。
4.所用機(jī)時(shí)
5小時(shí)/天,共約300小時(shí)的機(jī)時(shí)。
5.進(jìn)度(給出計(jì)劃進(jìn)度與實(shí)際進(jìn)度的對(duì)比。)
根據(jù)敏捷開發(fā)方法的指導(dǎo),每天查漏補(bǔ)缺,實(shí)際進(jìn)度基本和計(jì)劃進(jìn)度一致。三.評(píng)價(jià)
1.生產(chǎn)率評(píng)價(jià)(如平均每人每周源程序行數(shù)、文檔的字?jǐn)?shù)等。)
源程序:200行/周
文檔:1500字/周
2.技術(shù)方案評(píng)價(jià)
嚴(yán)格遵循開發(fā)流程,運(yùn)用科學(xué)開發(fā)方法。
3.產(chǎn)品質(zhì)量評(píng)價(jià)
按照大賽要求完成了應(yīng)有功能的基礎(chǔ)上有所添加自己小組的特色,譬如,設(shè)置相應(yīng)的出錯(cuò)處理機(jī)制,為加強(qiáng)該系統(tǒng)的安全性與穩(wěn)定性也做了相應(yīng)的措施,總體來說,我們小組開發(fā)的嵌入式實(shí)時(shí)操作系統(tǒng)功能良好,穩(wěn)定性強(qiáng)。
四.經(jīng)驗(yàn)與教訓(xùn)
經(jīng)過近兩個(gè)月的對(duì)嵌入式實(shí)時(shí)操作系統(tǒng)的開發(fā),經(jīng)驗(yàn)學(xué)到了不少,當(dāng)然也得到了很多教訓(xùn),因?yàn)樾〗M的不注意,導(dǎo)致2138開發(fā)板沒法繼續(xù)工作,有的時(shí)候會(huì)很耽誤時(shí)間,有的時(shí)候進(jìn)度報(bào)告拖后一點(diǎn)才寫,也因此導(dǎo)致過進(jìn)度不明了,不過,大多數(shù)時(shí)候,我們小組成員都認(rèn)真對(duì)待大賽,努力想把自己小組的作品做的更完美,最后終于成功交付任務(wù),完成大賽。