欧美色欧美亚洲高清在线观看,国产特黄特色a级在线视频,国产一区视频一区欧美,亚洲成a 人在线观看中文

  1. <ul id="fwlom"></ul>

    <object id="fwlom"></object>

    <span id="fwlom"></span><dfn id="fwlom"></dfn>

      <object id="fwlom"></object>

      實時操作系統(tǒng)報告

      時間:2019-05-14 02:09:26下載本文作者:會員上傳
      簡介:寫寫幫文庫小編為你整理了多篇相關(guān)的《實時操作系統(tǒng)報告》,但愿對你工作學(xué)習(xí)有幫助,當(dāng)然你在寫寫幫文庫還可以找到更多《實時操作系統(tǒng)報告》。

      第一篇:實時操作系統(tǒng)報告

      實時操作系統(tǒng)課程實驗報告

      專業(yè):通信1001 學(xué)號:3100601025 姓名:陳治州

      完成時間:2013年6月11日

      實驗 簡易電飯煲的模擬

      一.實驗?zāi)康模?/p>

      掌握在基于嵌入式實時操作系統(tǒng)μC/OS-II的應(yīng)用中,基于多任務(wù)的模式的編程方法。鍛煉綜合應(yīng)用多任務(wù)機(jī)制,任務(wù)間的通信機(jī)制,內(nèi)存管理等的能力。

      二.實驗要求:

      1.按“S”開機(jī),系統(tǒng)進(jìn)入待機(jī)狀態(tài),時間區(qū)域顯示當(dāng)前北京時間,默認(rèn)模式“煮飯”;2.按“C”選擇模式,即在“煮飯”、“煮粥”和“煮面”模式中循環(huán)選擇;

      3.按“B”開始執(zhí)行模式命令,“開始”狀態(tài)選中,時間區(qū)域開始倒計時,倒計時完成后進(jìn)入“保溫”狀態(tài),同時該狀態(tài)顯示選中,時間區(qū)域顯示保溫時間;

      4.按“Q”取消當(dāng)前工作狀態(tài),系統(tǒng)進(jìn)入待機(jī)狀態(tài),時間區(qū)域顯示北京時間,模式為當(dāng)前模式;

      5.按“X”退出系統(tǒng),時間區(qū)域不顯示。

      6.煮飯時長為30,煮粥時長為50,煮面時長為40.三.實驗設(shè)計:

      1.設(shè)計思路:

      以老師所給的五個程序為基礎(chǔ),看懂每個實驗之后,對borlandc的操作有了大概的認(rèn)識,重點(diǎn)以第五個實驗Task_EX為框架,利用其中界面顯示與按鍵掃描以及做出相應(yīng)的響應(yīng),對應(yīng)實現(xiàn)此次實驗所需要的功能。

      本次實驗分為界面顯示、按鍵查詢與響應(yīng)、切換功能、時鐘顯示與倒計時模塊,綜合在一起實驗所需功能。2.模塊劃分圖:(1)界面顯示:

      Main()Taskstart()Taskstartdispinit()在TaskStartDispInit()函數(shù)中,使用PC_DispStr()函數(shù)畫出界面。(2)按鍵查詢與響應(yīng):

      Main()Taskstart()在TaskStart()函數(shù)中,用if(PC_GetKey(&key)== TRUE)判斷是否有按鍵輸入。然后根據(jù)key的值,判斷輸入的按鍵是哪一個;在響應(yīng)中用switch語句來執(zhí)行對應(yīng)按鍵的響應(yīng)。(3)切換功能:

      l計數(shù)“C”按鍵的次數(shù)M=l%3Switch(m)M=0,1,2對應(yīng)于煮飯,煮粥,煮面,然后使用PC_DispStr()函數(shù)在選擇的選項前畫上“@”指示,同時,在其余兩項錢畫上“ ”以“擦出”之前畫下的“@”,注意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)顯示北京時間:

      (3)模式切換:

      (4)倒計時:

      (5)保溫執(zhí)行時間:

      六.總結(jié):

      本次實驗主要以老師所給的實驗事例為基礎(chǔ),并結(jié)合老師課堂講的內(nèi)容,理解編寫程序。做實驗本實驗前,先執(zhí)行了一下事例程序,以此了解borlandc的一些基本操作;然后就是看懂每個實驗的框架和主要部分;接著,將事例程序中的部分思想運(yùn)用到本次實驗中,其中以顯示界面的思想運(yùn)用的最多;除此以外,在模式切換上花了最大的精力,最終的解決方法是以變量l作為一個計數(shù)值,并運(yùn)用switch語句在選擇的模式上畫上“@”,同時還得注意在未選擇的模式上畫上空格來“擦除”之前畫上的@;在查詢按鍵上,同樣運(yùn)用switch語句......這次實驗收獲不少,不僅對之前學(xué)的C語言有了更進(jìn)一步的鞏固,而且還強(qiáng)化了ucos里面的多任務(wù)的一些認(rèn)識;同時,以前對DOS界面很陌生,但本次實驗使用的正是DOS界面,通過幾天的經(jīng)歷,對DOS中的編譯、“help”等各個方面有了更深入的認(rèn)識,不再害怕使用DOS了。

      對本課程有很大的興趣,在以后的課余時間里我會不斷學(xué)習(xí)這些知識。

      第二篇:計算機(jī)實時操作系統(tǒng)的改善措施

      《計算機(jī)實時操作系統(tǒng)的改善措施》

      摘要:

      實時系統(tǒng)在工業(yè)、商業(yè)和軍事等領(lǐng)域都有非常廣泛的用途,并且已經(jīng)有很多實際的應(yīng)用。一般來說,實時系統(tǒng)通常是比較復(fù)雜的,因為它必須處理很多并發(fā)事件的輸入數(shù)據(jù)流,這些事件的到來次序和幾率通常是不可預(yù)測的,而且還要求系統(tǒng)必須在事先設(shè)定好的時限內(nèi)做出相應(yīng)的響應(yīng)。因此,實時操作系統(tǒng)的實時性是第一要求,需要調(diào)度一切可利用的資源完成實時任務(wù)。這就要求我們設(shè)計好實時操作系統(tǒng),了解實時操作系統(tǒng)的改善措施對我們非常重要。

      關(guān)鍵字:實時操作系統(tǒng);特點(diǎn);實現(xiàn)技術(shù);改善措施。

      一、計算機(jī)實時操作系統(tǒng)的概念

      實時操作系統(tǒng)(RTOS)是指當(dāng)外界事件或數(shù)據(jù)產(chǎn)生時,能夠接受并以足夠快的速度予以處理,其處理的結(jié)果又能在規(guī)定的時間之內(nèi)來控制生產(chǎn)過程或?qū)μ幚硐到y(tǒng)作出快速響應(yīng),并控制所有實時任務(wù)協(xié)調(diào)一致運(yùn)行的操作系統(tǒng)。因而,提供及時響應(yīng)和高可靠性是其主要特點(diǎn)。實時操作系統(tǒng)有硬實時和軟實時之分,硬實時要求在規(guī)定的時間內(nèi)必須完成操作,這是在操作系統(tǒng)設(shè)計時保證的;軟實時則只要按照任務(wù)的優(yōu)先級,盡可能快地完成操作即可。我們通常使用的操作系統(tǒng)在經(jīng)過一定改變之后就可以變成實時操作系統(tǒng)。

      二、實時操作系統(tǒng)的特點(diǎn)

      1、高精度計時系統(tǒng)

      計時精度是影響實時性的一個重要因素。在實時應(yīng)用系統(tǒng)中,經(jīng)常需要精確確定實時地操作某個設(shè)備或執(zhí)行某個任務(wù),或精確的計算一個時間函數(shù)。這些不僅依賴于一些硬件提供的時鐘精度,也依賴于實時操作系統(tǒng)實現(xiàn)的高精度計時功能。

      2、多級中斷機(jī)制

      一個實時應(yīng)用系統(tǒng)通常需要處理多種外部信息或事件,但處理的緊迫程度有輕重緩急之分。有的必須立即作出反應(yīng),有的則可以延后處理。因此,需要建立多級中斷嵌套處理機(jī)制,以確保對緊迫程度較高的實時事件進(jìn)行及時響應(yīng)和處理。

      3、實時調(diào)度機(jī)制

      實時操作系統(tǒng)不僅要及時響應(yīng)實時事件中斷,同時也要及時調(diào)度運(yùn)行實時任務(wù)。但是,處理機(jī)調(diào)度并不能隨心所欲的進(jìn)行,因為涉及到兩個進(jìn)程之間的切換,只能在確?!鞍踩袚Q”的時間點(diǎn)上進(jìn)行,實時調(diào)度機(jī)制包括兩個方面,一是在調(diào)度策略和算法上保證優(yōu)先調(diào)度實時任務(wù);二是建立更多“安全切換”時間點(diǎn),保證及時調(diào)度實時任務(wù)。

      三、實時性能主要實現(xiàn)技術(shù)

      實時操作系統(tǒng)的實時性是第一要求,需要調(diào)度一切可利用的資源完成實時任務(wù)。根據(jù)響應(yīng)時間在微秒、毫秒和秒級的不同,可分為強(qiáng)實時、準(zhǔn)實時和弱實時三種。強(qiáng)實時系統(tǒng)必須是對即時的事件作出反應(yīng),絕對不能錯過事件處理時限。例如測控領(lǐng)域就是要求強(qiáng)或接近強(qiáng)實時系統(tǒng)。在機(jī)頂盒、PDA、信息家電等應(yīng)用領(lǐng)域,系統(tǒng)負(fù)荷較重的時候,允許發(fā)生錯過時限的情況而且不會造成太大的危害,準(zhǔn)和弱實時系統(tǒng)就可滿足應(yīng)用。一個強(qiáng)實時的操作系統(tǒng)通常使用以下技術(shù):

      1、占先式內(nèi)核

      當(dāng)系統(tǒng)時間響應(yīng)很重要時,要使用占先式內(nèi)核。當(dāng)前最高優(yōu)先級的任務(wù)一旦就緒,總能立即得到CPU 的控制權(quán),而CPU 的控制權(quán)是可知的。使用占先式內(nèi)核使得任務(wù)級響應(yīng)時間得以最優(yōu)化。

      2、調(diào)度策略分析

      任務(wù)調(diào)度策略是直接影響實時性能的因素。強(qiáng)實時系統(tǒng)和準(zhǔn)實時系統(tǒng)的實現(xiàn)區(qū)別主要在選擇調(diào)度算法上。選擇基于優(yōu)先級調(diào)度的算法足以滿足準(zhǔn)實時系統(tǒng)的要求,而 且可以提供高速的響應(yīng)和大的系統(tǒng)吞吐率。當(dāng)兩個或兩個以上任務(wù)有同樣優(yōu)先級,通常用時間片輪轉(zhuǎn)法進(jìn)行調(diào)度。對硬實時系統(tǒng)而言,需要使用的算法就應(yīng)該是調(diào)度 方式簡單,反應(yīng)速度快的實時調(diào)度算法了。盡管調(diào)度算法多種多樣,但大多由單一比率調(diào)度算法(RMS)和最早期限優(yōu)先算法(EDF)變化而來。前者主要用于 靜態(tài)周期任務(wù)的調(diào)度,后者主要用于動態(tài)調(diào)度,在不同的系統(tǒng)狀態(tài)下兩種算法各有優(yōu)劣。在商業(yè)產(chǎn)品中采用的實際策略常常是各種因素的折中。

      3、任務(wù)優(yōu)先級分配

      每個任務(wù)都有其優(yōu)先級。任務(wù)越重要,賦予的優(yōu)先級應(yīng)越高。應(yīng)用程序執(zhí)行過程中諸任務(wù)優(yōu)先級不變,則稱之為靜態(tài)優(yōu)先級。在靜態(tài)優(yōu)先級系統(tǒng)中,諸任務(wù)以及它們的時間約束在程序編譯時是已知的。反之,應(yīng)用程序執(zhí)行過程中,任務(wù)的優(yōu)先級是可變的,則稱之為動態(tài)優(yōu)先級。

      4、時間的可確定性

      強(qiáng)實時操作系統(tǒng)的函數(shù)調(diào)用與服務(wù)的執(zhí)行時間應(yīng)具有可確定性。系統(tǒng)服務(wù)的執(zhí)行時間不依賴于應(yīng)用程序任務(wù)的多少。系統(tǒng)完成某個確定任務(wù)的時間是可預(yù)測的。

      四、實時操作系統(tǒng)中遇到的問題

      1、優(yōu)先級反轉(zhuǎn)

      這是實時系統(tǒng)中出現(xiàn)得最多的問題。優(yōu)先級反轉(zhuǎn)是指一個任務(wù)等待比它優(yōu)先級低的任務(wù)釋放資源而被阻塞,如果這時有中等優(yōu)先級的就緒任務(wù),阻塞會進(jìn)一步惡化。它嚴(yán)重影響了實時任務(wù)的完成。

      2、任務(wù)執(zhí)行時間的抖動

      各種實時內(nèi)核都有將任務(wù)延時若干個時鐘節(jié)拍的功能。優(yōu)先級的不同、延時請求發(fā)生的時間、發(fā)出延時請求的任務(wù)自身的運(yùn)行延遲,都會造成被延時任務(wù)執(zhí)行時間不同程度的提前或滯后,稱之為任務(wù)執(zhí)行時間的抖動。

      3、任務(wù)劃分

      程序在CPU 中是以任務(wù)的方式在運(yùn)行,所以我們要將系統(tǒng)的處理框圖轉(zhuǎn)化為多任務(wù)流程圖,對處理進(jìn)行任務(wù)劃分。任務(wù)劃分存在這樣一對矛盾:如果任務(wù)太多,必然增加系統(tǒng)任 務(wù)切換的開銷;如果任務(wù)太少,系統(tǒng)的并行度就降低了,實時性就比較差。

      五、實時操作系統(tǒng)改善措施

      跟據(jù)上述討論的實時操作系統(tǒng)中遇到的問題我們提出相應(yīng)的改善措施,如下所示:

      1、對于優(yōu)先級反轉(zhuǎn)的改善措施

      為防止發(fā)生優(yōu)先級反轉(zhuǎn),一些商業(yè)內(nèi)核(如VxWorks)使用了優(yōu)先級繼承技術(shù),當(dāng)優(yōu)先級反轉(zhuǎn)發(fā)生時,優(yōu)先級較低的任務(wù)被暫時地提高它的優(yōu)先級,使得該任務(wù)能盡快執(zhí)行,釋放出優(yōu)先級較高的任務(wù)所需要的資源。但它也不能完全避免優(yōu)先級反轉(zhuǎn),只能稱其減輕了優(yōu)先級反轉(zhuǎn)的程度,減輕了優(yōu)先級反轉(zhuǎn)對實時任務(wù)完成的影響。

      優(yōu)先權(quán)極限是另一種解決方案,系統(tǒng)把每一個臨界資源與1個極限優(yōu)先權(quán)相聯(lián)系,這個極限優(yōu)先權(quán)等于系統(tǒng)此時最高優(yōu)先權(quán)加1。當(dāng)這個任務(wù)退出臨界區(qū)后,系統(tǒng)立即把它的優(yōu)先權(quán)恢復(fù)正常,從而保證系統(tǒng)不會出現(xiàn)優(yōu)先權(quán)反轉(zhuǎn)的情況。采用這種方案的另一個有利之處,是僅僅通過改變某個臨界資源的優(yōu)先級就可以使多個任務(wù)共享這個臨界資源。

      2、對于任務(wù)時間抖動的改善措施 可能的解決方案有:

      a.增加微處理器的時鐘頻和時鐘節(jié)拍的頻率; b.重新安排任務(wù)的優(yōu)先級; c.避免使用浮點(diǎn)運(yùn)算等。

      強(qiáng)實時系統(tǒng)中,我們必須綜合考慮,充分利用各種手段,盡量減少任務(wù)執(zhí)行時間的抖動。

      3、對于任務(wù)劃分的改善措施

      在任務(wù)劃分時要遵循H.Gomma 原則: a. I/O原則:不同的外設(shè)執(zhí)行不同任務(wù);

      b. 優(yōu)先級原則:不同優(yōu)先級處理不同的任務(wù); c. 大量運(yùn)算:歸為一個任務(wù); d. 功能耦合:歸為一個任務(wù); e. 偶然耦合:歸為一個任務(wù);

      f. 頻率組合:對于周期時間,不同任務(wù)處理不同的頻率。

      如果我們在具體分析一個系統(tǒng)的時候發(fā)生原則沖突的話,則要為每一個原則針對具體的系統(tǒng)設(shè)定“權(quán)重”,必要的時候可以通過計算“權(quán)重”來最終確定如何去劃分任務(wù)。

      第三篇:uc-OS實時操作系統(tǒng)的應(yīng)用和學(xué)習(xí)心得

      uc/OS實時操作系統(tǒng)的應(yīng)用和學(xué)習(xí)心得

      這是小弟我最近的研究成果,跟大家交流一下。目前正在研究嵌入式實時軟件系統(tǒng)設(shè)計方法,有興趣的高手交流一下。這里給大家簡單剖析一下uCOS吧,希望對大家能有所幫助。不足之處多多指教,有問題可以討論。一.uC/OS-II的移植

      移植uC/OS對目標(biāo)處理器有一定要求,這個可以參照<>一書中第8章的內(nèi)容.整個嵌入式系統(tǒng)分為兩大層:硬件層和軟件層.這里主要研究軟件層的架構(gòu).軟件層主要分為四個部分:實時操作系統(tǒng)內(nèi)核,與處理器相關(guān)部分,與應(yīng)用相關(guān)部分,用戶的應(yīng)用系統(tǒng).l 實時操作系統(tǒng)內(nèi)核

      實時操作系統(tǒng)對系統(tǒng)資源進(jìn)行管理。主要包括任務(wù)分配和調(diào)度、系統(tǒng)時鐘服務(wù)、內(nèi)存管理、消息機(jī)制、異常處理等等。uC/OS所有系統(tǒng)服務(wù)均由內(nèi)核提供。內(nèi)核將應(yīng)用系統(tǒng)和底層硬件結(jié)合成一個完整的實時系統(tǒng)。

      移植的時候內(nèi)核是不變的,開發(fā)者根據(jù)自己應(yīng)用系統(tǒng)的需要來選擇實時操作系統(tǒng)內(nèi)核,開發(fā)者不能對內(nèi)核隨意訪問,只能使用內(nèi)核提供的功能服務(wù)來開發(fā)自己的應(yīng)用系統(tǒng)。內(nèi)核確定,那么所提供的系統(tǒng)管理能力,系統(tǒng)服務(wù)也就得到了限定。開發(fā)者只能在規(guī)定的范圍內(nèi)對系統(tǒng)作些改動.2 與處理器相關(guān)的代碼

      這是移植中最關(guān)鍵的部分.內(nèi)核將應(yīng)用系統(tǒng)和底層硬件有機(jī)的結(jié)合成一個實時系統(tǒng),要使同一個內(nèi)核能適用于不同的硬件體系,就需要在內(nèi)核和硬件之間有一個中間層,這就是與處理器相關(guān)的代碼.處理器不同,這部分代碼也不同.我們在移植時需要自己處理這部分代碼,可以自己編寫,也可以直接使用已經(jīng)成功移植的代碼.在uC/OS中這一部分代碼分成三個文件:OS_CPU.H, OS_CPU_A.ASM, OS_CPU_C.C 1)OS_CPU.H 包括了用#define定義的與處理器相關(guān)的常量,宏和類型定義.具體來講有系統(tǒng)數(shù)據(jù)類型定義,棧增長方向定義,關(guān)中斷和開中斷定義,系統(tǒng)軟中斷的定義等等.2)OS_CPU_A.ASM 這部分需要對處理器的寄存器進(jìn)行操作,所以必須用匯編語言來編寫.包括四個子函數(shù):OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR().OSStartHighRdy()在多任務(wù)系統(tǒng)啟動函數(shù)OSStart()中調(diào)用.完成的功能是:設(shè)置系統(tǒng)運(yùn)行標(biāo)志位OSRunning = TRUE;將就緒表中最高優(yōu)先級任務(wù)的棧指針Load到SP中,并強(qiáng)制中斷返回.這樣就緒的最高優(yōu)先級任務(wù)就如同從中斷里返回到運(yùn)行態(tài)一樣,使得整個系統(tǒng)得以運(yùn)轉(zhuǎn).OSCtxSw()在任務(wù)級任務(wù)切換函數(shù)中調(diào)用的.任務(wù)級切換是通過SWI或者TRAP人為制造的中斷來實現(xiàn)的.ISR的向量地址必須指向OSCtxSw().這一中斷完成的功能:保存任務(wù)的環(huán)境變量(主要是寄存器的值,通過入棧來實現(xiàn)),將當(dāng)前SP存入任務(wù)TCB中,載入就緒最高優(yōu)先級任務(wù)的SP,恢復(fù)就緒最高優(yōu)先級任務(wù)的環(huán)境變量,中斷返回.這樣就完成了任務(wù)級的切換.OSIntCtxSw()在退出中斷服務(wù)函數(shù)OSIntExit()中調(diào)用,實現(xiàn)中斷級任務(wù)切換.由于是在中斷里調(diào)用,所以處理器的寄存器入棧工作已經(jīng)做完,就不用作這部分工作了.具體完成的任務(wù):調(diào)整棧指針(因為調(diào)用函數(shù)會使任務(wù)棧結(jié)構(gòu)與系統(tǒng)任務(wù)切換時堆棧標(biāo)準(zhǔn)結(jié)構(gòu)不一致),保存當(dāng)前任務(wù)SP,載入就緒最高優(yōu)先級任務(wù)的SP,恢復(fù)就緒最高優(yōu)先級任務(wù)的環(huán)境變量,中斷返回.這樣就完成了中斷級任務(wù)切換.OSTickISR()系統(tǒng)時鐘節(jié)拍中斷服務(wù)函數(shù),這是一個周期性中斷,為內(nèi)核提供時鐘節(jié)拍.頻率越高系統(tǒng)負(fù)荷越重.其周期的大小決定了內(nèi)核所能給應(yīng)用系統(tǒng)提供的最小時間間隔服務(wù).一般只限于ms級(跟MCU有關(guān)),對于要求更加苛刻的任務(wù)需要用戶自己建立中斷來解決.該函數(shù)具體內(nèi)容:保存寄存器(如果硬件自動完成就可以省略),調(diào)用OSIntEnter(),調(diào)用OSTimeTick(),調(diào)用OSIntExit(),恢復(fù)寄存器,中斷返回.3)OS_CPU_C.C UC/OS中共定義了6個函數(shù)在該文件中.但是最重要的是OSTaskStkInit().其他都是對系統(tǒng)內(nèi)核的擴(kuò)展時用的.OSTaskStkInit()是在用戶建立任務(wù)時系統(tǒng)內(nèi)部自己調(diào)用的,對用戶任務(wù)的堆棧進(jìn)行初始化.使建立好的進(jìn)入就緒態(tài)任務(wù)的堆棧與系統(tǒng)發(fā)生中斷并且將環(huán)境變量保存完畢時的棧結(jié)構(gòu)一致.這樣就可以用中斷返回指令使就緒的任務(wù)運(yùn)行起來.具體的入棧方式要根據(jù)不同mcu而定.需要參考用戶使用的mcu說明書.同時還要考慮mcu的棧生成方式.這需要根據(jù)具體問題來分析,在此不做過多論述.3 與應(yīng)用相關(guān)的代碼

      這一部分是用戶根據(jù)自己的應(yīng)用系統(tǒng)來定制合適的內(nèi)核服務(wù)功能.包括兩個文件:OS_CFG.H, INCLUDES.H.OS_CFG.H來配置內(nèi)核,用戶根據(jù)需要對內(nèi)核進(jìn)行定制,留下需要的部分,去掉不需要的部分,設(shè)置系統(tǒng)的基本情況.比如系統(tǒng)可提供的最大任務(wù)數(shù)量,是否定制郵箱服務(wù),是否需要系統(tǒng)提供任務(wù)掛起功能,是否提供任務(wù)優(yōu)先級動態(tài)改變功能等等.INCLUDES.H系統(tǒng)頭文件,整個實時系統(tǒng)程序所需要的文件,包括了內(nèi)核和用戶的頭文件.4 用戶應(yīng)用系統(tǒng)

      這是整個實時系統(tǒng)的最高層,用戶通過利用實時操作系統(tǒng)提供的服務(wù)來開發(fā)自己的具體程序.二.用戶應(yīng)用系統(tǒng)編寫的模式

      kernel提供給用戶一些功能函數(shù),使得用戶的系統(tǒng)建立更加方便,但是kernel內(nèi)部不會處理用戶的工作,對于整個系統(tǒng)的具體應(yīng)用工作還得需要用戶自己去考慮,如何利用好這些功能服務(wù)函數(shù)就成為一個比較重要的問題.1.main函數(shù)的結(jié)構(gòu) void main(void){ 初始化系統(tǒng)的硬件;OSInit();任務(wù)的建立,消息機(jī)制的建立;OSStart();} 這里需要的是在OSStart()執(zhí)行之前不得啟動中斷,硬件系統(tǒng)還不能工作.必須先讓軟件系統(tǒng)進(jìn)入工作狀態(tài)后才行.2.中斷的結(jié)構(gòu) ISR: { 保存處理器寄存器的值;調(diào)用OSIntEnter();執(zhí)行用戶的工作;調(diào)用OSIntExit();恢復(fù)處理器寄存器的值;RTI;} 用戶的中斷形式和以前一樣,沒有什么大的變化,僅僅是在原來用戶ISR的基礎(chǔ)上在固定的位置加了兩個函數(shù):OSIntEnter(), OSIntExit().3.各個任務(wù)的結(jié)構(gòu) void YourTask(void){ for(;;){ 用戶代碼 調(diào)用的系統(tǒng)服務(wù) } } 在任務(wù)啟動函數(shù)執(zhí)行完后,系統(tǒng)會切換到最高優(yōu)先級的任務(wù)去執(zhí)行,此時,可以將系統(tǒng)硬件部分的啟動放在該任務(wù)的最前邊,僅僅是啟動時執(zhí)行一次,主要是啟動系統(tǒng)的節(jié)拍中斷,或者一些必須在多任務(wù)系統(tǒng)調(diào)度后才能初始化的部分,使系統(tǒng)的真正開始工作,達(dá)到軟件硬件的基本同步.Void HighestPrioTask(void){ OSStartHardware();For(;;){ 用戶代碼 調(diào)用的系統(tǒng)服務(wù) } } 用戶可以按照這些格式去編寫自己的任務(wù),建立自己的應(yīng)用系統(tǒng).

      第四篇:嵌入式Linux實時操作系統(tǒng)習(xí)題總結(jié)

      第1章

      1.嵌入式系統(tǒng)是指操作系統(tǒng)和功能軟件集成于計算機(jī)硬件系統(tǒng)之中。嵌入式系統(tǒng)一般有3個主要的組成部分:硬件、實時操作系統(tǒng)以及應(yīng)用軟件。

      2.嵌入式系統(tǒng)的三要素是嵌入、專用、計算機(jī);即以應(yīng)用為中心、以計算機(jī)技術(shù)為基礎(chǔ)、軟件硬件可裁剪、適應(yīng)應(yīng)用系統(tǒng)對功能、可靠性、成本、體積、功耗嚴(yán)格要求的專用計算機(jī)系統(tǒng)。

      3.目前國際較為知名的有: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ū)動程序與硬件無關(guān);

      (3)軟件層 :主要是操作系統(tǒng),有的還包括文件系統(tǒng)、圖形用戶接口和網(wǎng)絡(luò)系統(tǒng)等。操作系統(tǒng)是一個標(biāo)準(zhǔn)的內(nèi)核,將中斷、I/O、定時器等資源都封裝起來,以方便用戶使用。(4)功能層 :由基于操作系統(tǒng)開發(fā)的應(yīng)用程序組成,用來完成對被控對象的控制功能。5.非占先式調(diào)度法也稱作合作型多任務(wù)(cooperative multitasking),各個任務(wù)彼此合作共享一個CPU。中斷服務(wù)可以使一個高優(yōu)先級的任務(wù)由掛起狀態(tài)變?yōu)榫途w狀態(tài)。但中斷服務(wù)以后控制權(quán)還是回到原來被中斷了的那個任務(wù),直到該任務(wù)主動放棄CPU的使用權(quán)時,那個高優(yōu)先級的任務(wù)才能獲得CPU的使用權(quán)。當(dāng)系統(tǒng)響應(yīng)時間很重要時,要使用占先式(preemptive)內(nèi)核。最高優(yōu)先級的任務(wù)一旦就緒,總能得到CPU的控制權(quán)。當(dāng)一個運(yùn)行著的任務(wù)使一個比它優(yōu)先級高的任務(wù)進(jìn)入了就緒態(tài),當(dāng)前任務(wù)的CPU使用權(quán)就被剝奪了。6.在實時系統(tǒng)中,如果系統(tǒng)在指定的時間內(nèi)未能實現(xiàn)某個確定的任務(wù),會導(dǎo)致系統(tǒng)的全面失敗,這樣的系統(tǒng)被稱硬實時系統(tǒng)。在弱實時系統(tǒng)中,超時卻不會發(fā)生致命的錯誤。其實時性的要求比硬實時系統(tǒng)要差一些。

      7.嵌入式系統(tǒng)的設(shè)計步驟及各部分的主要工作如下。(1)需求分析階段,羅列出用戶的需求;

      (2)體系結(jié)構(gòu)設(shè)計階段,描述系統(tǒng)的功能如何實現(xiàn);

      (3)詳細(xì)設(shè)計階段,進(jìn)行硬件系統(tǒng)與軟件系統(tǒng)的分類劃分,以決定哪些功能用硬件實現(xiàn),哪些用軟件實現(xiàn);

      (4)系統(tǒng)集成,把系統(tǒng)的軟件、硬件和執(zhí)行裝置集成在一起,進(jìn)行調(diào)試,發(fā)現(xiàn)并改進(jìn)在設(shè)計過程中的錯誤;

      (5)系統(tǒng)測試,對設(shè)計好的系統(tǒng)進(jìn)行測試,看其是否滿足給定的要求。8.Linux作為嵌入式操作系統(tǒng)的優(yōu)勢主要有以下幾點(diǎn):

      (1)可應(yīng)用于多種硬件平臺。

      (2)Linux的高度模塊化使添加部件非常容易。

      (3)Linux是一個和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請求后被阻塞;(5)系統(tǒng)分配的時間片已經(jīng)用完;

      (6)就緒隊列中的某個進(jìn)程的優(yōu)先級變得高于當(dāng)前運(yùn)行進(jìn)程的優(yōu)先級。

      第4章

      1、Linux 內(nèi)核的編譯菜單有好幾個版本,運(yùn)行:

      (1)make config:進(jìn)入命令行,可以一行一行的配置,但使用不十分方便。

      (2)make menuconfig:大多數(shù)開發(fā)人員使用的Linux 內(nèi)核編譯菜單,使用方便。

      (3)make xconfig:在2.4.X 以及以前版本中xconfig 菜單是基于TCL/TK 的圖形庫的。

      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存儲器中,地址是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存儲器中,地址是根文件系統(tǒng)分區(qū),并采用xmodem傳輸協(xié)議。

      7、這個命令的操作同時進(jìn)行了分區(qū)和格式化,0~128K存放vivi,128K~192K存放VIVI控制臺指令,192K~1216K存放kernel,1216K~4288K存放root,其余部分存放應(yīng)用程序。

      第6章

      1.使用虛擬地址尋址整個系統(tǒng)的主存和輔存的方式在現(xiàn)代操作系統(tǒng)中被稱為虛擬內(nèi)存。虛擬內(nèi)存的管理方法使系統(tǒng)既可以運(yùn)行體積比物理內(nèi)存還要大的應(yīng)用程序,也可以實現(xiàn)“按需調(diào)頁”策略,既滿足了程序的運(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)行中被動態(tài)分配的內(nèi)存段,它的大小并不固定,可動態(tài)擴(kuò)張或縮減。

      ⑤棧:棧是用戶存放程序臨時創(chuàng)建的局部變量。3.在Linux系統(tǒng)中,內(nèi)核在最高級執(zhí)行,也稱為“系統(tǒng)態(tài)”,在這一級任何操作都可以執(zhí)行。而應(yīng)用程序則執(zhí)行在最低級,即所謂的“用戶態(tài)”。在這一級處理器禁止對硬件的直接訪問和對內(nèi)存的未授權(quán)訪問。模塊是在所謂的“內(nèi)核空間”中運(yùn)行的,而應(yīng)用程序則是在“用戶空間”中運(yùn)行的。它們分別引用不同的內(nèi)存映射,也就是程序代碼使用不同的“地址空間”。4.共享內(nèi)存區(qū)域是被多個進(jìn)程共享的一部分物理內(nèi)存。如果多個進(jìn)程都把該內(nèi)存區(qū)域映射到自己的虛擬地址空間,則這些進(jìn)程就都可以直接訪問該共享內(nèi)存區(qū)域,從而可以通過該區(qū)域進(jìn)行通信。共享內(nèi)存是進(jìn)程間共享數(shù)據(jù)的一種最快的方法,一個進(jìn)程向共享內(nèi)存區(qū)域?qū)懭肓藬?shù)據(jù),共享這個內(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)一個進(jìn)程存取的內(nèi)存映射被換出時,內(nèi)存管理向文件系統(tǒng)發(fā)出請求,同時,掛起當(dāng)前正在運(yùn)行的進(jìn)程。

      第9章

      1.參考答案:

      Mutex互斥量,用于操作某個臨界資源時對該資源上鎖,以實現(xiàn)互斥地對獨(dú)占資源的使用。Semophore信號燈,信號燈內(nèi)有一計數(shù)器,可以用于對多個同類資源的分配。

      Condition條件變量,條件變量用于等待信號。當(dāng)一個線程需要等待某個信號時,就可到條件變量上等待,當(dāng)信號具備時,系統(tǒng)會喚醒該線程繼續(xù)運(yùn)行。2.參考答案:

      本地:共享內(nèi)存+信號量,適合于大量數(shù)據(jù)傳輸。Linux支持系統(tǒng)V和POSIX的共享內(nèi)存和信號量。(5分)

      遠(yuǎn)程:Socket+應(yīng)用協(xié)議。適合于跨網(wǎng)絡(luò)的(大量)數(shù)據(jù)傳輸。Linux支持BSD的socket。應(yīng)用層協(xié)議需要自行設(shè)計。(5分)

      3.答案要點(diǎn):程序是編譯后形成的可執(zhí)行代碼,是靜止的。進(jìn)程是程序的一次執(zhí)行,是活動的。線程是進(jìn)程的可執(zhí)行單元,同一進(jìn)程的不同線程共享進(jìn)程的資源和地址空間。4.兩種實現(xiàn)方法,一種是繼承Thread,另外一種是實現(xiàn)接口Runnable。

      同步的實現(xiàn)方法有兩種,分別是synchronized, wait與notify。用synchronized可以對一段代碼、一個對象及一個方法進(jìn)行加鎖。用wait與notify可以使對象處于等待及喚醒方式導(dǎo)致同步,因為每個對象都直接或間接的繼承了Object類。

      5、什么是BootLoader?主要有幾種工作模式及主要功能是什么? 答:

      Bootloader就是操作系統(tǒng)內(nèi)核運(yùn)行的一段小程序,完成進(jìn)行初始化系統(tǒng)硬件設(shè)置的任務(wù),(2分)

      分為啟動加載模式和下載模式。(1啟動加載模式

      啟動加載(Boot laoding)模式是指 Bootloader 從目標(biāo)機(jī)上的某個固態(tài)存儲設(shè)備上將操作系統(tǒng)加載到 RAM 中運(yùn)行,整個過程并沒有用戶的介入。(2分)(2)下載模式

      在下載模式下,目標(biāo)機(jī)上的 Bootloader 將先通過串口連接或網(wǎng)絡(luò)連接等通信手段從宿主機(jī)下載文件。(2分)

      6、簡述Bootloader有何作用?

      答案要點(diǎn):(1)首先,bootloader是在特定硬件平臺運(yùn)行的程序,嚴(yán)重依賴于硬件平臺,需要移植;(2)是系統(tǒng)上電之后,第一個運(yùn)行的程序,系統(tǒng)在上電或復(fù)位時通常都從地址 0x0 處開始執(zhí)行,而在這個地址處安排的通常就是系統(tǒng)的 Boot Loader 程序;(3)bootloader程序的設(shè)計目標(biāo)是啟動嵌入式操作系統(tǒng),嵌入式操作系統(tǒng)的啟動需要一定的條件,這些條件由bootloader來滿足;(4)Bootloader一般具有對存儲器和網(wǎng)絡(luò)接口操作的功能;如擦除、讀寫Flash,通過USB、串口下載文件等

      第五篇:嵌入式實時操作系統(tǒng) 項目開發(fā)總結(jié)報告

      項目開發(fā)總結(jié)報告

      分 類:軟件項目計劃 使用者:E-fanciers

      Version: 1.0

      項 目 承 擔(dān) 隊伍:煙臺大學(xué)

      計算機(jī)學(xué)院 E-fanciers小組撰 寫 人(簽名): 許超 于歌

      完 成 日 期: 2009-7-16 本文檔使用小組: E-fanciers小組

      評審負(fù)責(zé)人(簽名): 孝瑞

      評 審 日 期: 2009-7-19

      目 錄

      一、引言.............................................3

      1.1編寫目的.......................................3 1.2項目背景.......................................3 1.3定義...........................................3 1.4參考資料:.....................................3

      二、開發(fā)結(jié)果........................錯誤!未定義書簽。

      2.1產(chǎn)品..........................錯誤!未定義書簽。2.2主要功能......................錯誤!未定義書簽。2.3所用工時.......................................4 2.3所用機(jī)時.......................................4 2.3進(jìn)度...........................................4

      三、評價............................................4

      3.1生產(chǎn)率評價.....................................4 3.2技術(shù)方案評價...................................4 3.3產(chǎn)品質(zhì)量評價...................................4

      四、經(jīng)驗與教訓(xùn).......................................4

      一.引言

      1.編寫目的(闡明編寫總結(jié)報告的目的,指明讀者對象。)

      詳細(xì)陳述項目開發(fā)過程,對項目開發(fā)做最后的總結(jié)完善,說明項目開發(fā)過程中遇到的難題及解決方案。

      2.項目背景(說明項目的來源、委托單位、開發(fā)單位及主管部門。)

      隨著微電子技術(shù)、計算機(jī)技術(shù)和網(wǎng)絡(luò)通信技術(shù)的發(fā)展,嵌入式系統(tǒng)已廣泛應(yīng)用在各個領(lǐng)域,包括消費(fèi)電子、汽車電子、網(wǎng)絡(luò)通信、工業(yè)設(shè)備、航空航天和國防軍事等。隨著嵌入式技術(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)百家爭鳴的狀態(tài)。據(jù)最近的調(diào)查數(shù)據(jù)顯示,嵌入式操作系統(tǒng)有數(shù)十種之多的。這種多樣性存在是必然的,是由嵌入式系統(tǒng)的定制性所決定的,是針對各個領(lǐng)域和行業(yè)的不同需求的應(yīng)對。也就是說,各個嵌入式操作系統(tǒng)都有自己的應(yīng)用領(lǐng)域,針對不同的應(yīng)用沒有絕對的優(yōu)劣之分,不會出現(xiàn)一種操作系統(tǒng)壟斷的局面。自主開發(fā)嵌入式操作系統(tǒng)絕對不是多余的,也是是對這種多樣性的自然順應(yīng),應(yīng)該可擁有自己的用武之地。有些國內(nèi)嵌入式廠商將希望寄托在Linux之上,以為它可以幫助解決所面臨的版稅和安全等問題。但事實并非完全如此,至少在嵌入式系統(tǒng)領(lǐng)域。首先,Linux還是泊來貨,國人并未掌握其核心技術(shù)和進(jìn)程,也并未解決對外依賴的問題。其次,Linux是為桌面系統(tǒng)而設(shè)計的,并不能很好地滿足嵌入式系統(tǒng)高效性和靈活性的要求;再次,Linux的一統(tǒng)也違背了嵌入式系統(tǒng)應(yīng)用靈活定制的本質(zhì)特性。

      3.定義(列出報告中用到的專門術(shù)語定義和縮寫詞的原意。)

      int taskInit(void);

      /*創(chuàng)建一個任務(wù), 返回: 返回任務(wù)編號tid, >0: 成功, 其他: 失敗.*/ /*name: 任務(wù)名稱, entryPtr : 任務(wù)函數(shù)入口, stack_size: 任務(wù)棧大小, priority: 任務(wù)優(yōu)先級*/ int taskCreate(char *name, void *entryPtr, int stack_size, int priority);/*啟動一個任務(wù), 讓taskCreat創(chuàng)建的任務(wù)參加調(diào)度*/ int taskStart(unsigned char tid);/*tid: 任務(wù)編號, 由taskCreate返回*/ int taskPriorityGet(unsigned char tid);int taskPrioritySet(unsigned char tid, int newPriority);/*獲取和設(shè)置任務(wù)優(yōu)先級, 用于動態(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);/*互斥信號量創(chuàng)建, 返回信號量標(biāo)識sid, <0: 失敗*/ int semTake(int sid);int semGive(int sid);/*互斥信號量獲取和釋放*/ int taskSleep(int ticks);/*任務(wù)睡眠(非忙等), 由任務(wù)自己調(diào)用, 主動阻塞一段時間.時間單位為tick, 即10ms*/ 4.參考資料(列出這些資料的作者、標(biāo)題、編號、發(fā)表日期、出版單位或資料來源,可包括:(1)項目開發(fā)計劃;(2)需求規(guī)格說明書;(3)概要設(shè)計說明書;(4)詳細(xì)設(shè)計說明書;(5)用戶操作手冊;(6)測試計劃;(7)測試分析報告(8)本報告引用的其他資料、采用的開發(fā)標(biāo)準(zhǔn)或開發(fā)規(guī)范。)(1)軟件項目計劃(2)需求規(guī)格說明(3)軟件編寫向?qū)?/p>

      (4)國家軟件開發(fā)文檔標(biāo)準(zhǔn)模板

      二.開發(fā)結(jié)果

      1.產(chǎn)品(可包括:(1)列出各部分的程序名稱、源程序行數(shù)(包括注釋行)或目標(biāo)程序字節(jié)數(shù)及程序總計數(shù)量、存儲形式;產(chǎn)品文檔名稱等。)

      2.主要功能及性能 基本功能

      1.基于參考硬件平臺,建立硬件抽象層,完成基本硬件初始化,建立時鐘中斷; 2.在硬件抽象層基礎(chǔ)上,建立多任務(wù)操作系統(tǒng)環(huán)境; 3.任務(wù)調(diào)度采用同級時間片輪詢機(jī)制;

      4.實現(xiàn)任務(wù)間基本通訊機(jī)制:互斥信號量(共享內(nèi)存); 5.實現(xiàn)基本的時鐘管理機(jī)制:任務(wù)睡眠阻塞;

      6.實現(xiàn)一個RS232串口驅(qū)動?;诖隍?qū)動實現(xiàn)一個命令行Shell(用一個獨(dú)立的任務(wù)實現(xiàn)),可在超級終端顯示信息和執(zhí)行命令。

      擴(kuò)展功能

      7.任務(wù)區(qū)分優(yōu)先級,在同級輪詢調(diào)度基礎(chǔ)上添加優(yōu)先級調(diào)度機(jī)制; 8.不同優(yōu)先級任務(wù)之間實現(xiàn)搶占調(diào)度;

      9.在搶占調(diào)度的基礎(chǔ)上實現(xiàn)優(yōu)先級逆轉(zhuǎn)保護(hù),避免邏輯死鎖問題; 10.將代碼移植到另一個硬件平臺上運(yùn)行,驗證代碼移植性。3.所用工時(按人員的不同層次分別計時。)

      編碼成員工時:60小時/周,共約400小時;

      編寫文檔成員:共約60小時。

      4.所用機(jī)時

      5小時/天,共約300小時的機(jī)時。

      5.進(jìn)度(給出計劃進(jìn)度與實際進(jìn)度的對比。)

      根據(jù)敏捷開發(fā)方法的指導(dǎo),每天查漏補(bǔ)缺,實際進(jìn)度基本和計劃進(jìn)度一致。三.評價

      1.生產(chǎn)率評價(如平均每人每周源程序行數(shù)、文檔的字?jǐn)?shù)等。)

      源程序:200行/周

      文檔:1500字/周

      2.技術(shù)方案評價

      嚴(yán)格遵循開發(fā)流程,運(yùn)用科學(xué)開發(fā)方法。

      3.產(chǎn)品質(zhì)量評價

      按照大賽要求完成了應(yīng)有功能的基礎(chǔ)上有所添加自己小組的特色,譬如,設(shè)置相應(yīng)的出錯處理機(jī)制,為加強(qiáng)該系統(tǒng)的安全性與穩(wěn)定性也做了相應(yīng)的措施,總體來說,我們小組開發(fā)的嵌入式實時操作系統(tǒng)功能良好,穩(wěn)定性強(qiáng)。

      四.經(jīng)驗與教訓(xùn)

      經(jīng)過近兩個月的對嵌入式實時操作系統(tǒng)的開發(fā),經(jīng)驗學(xué)到了不少,當(dāng)然也得到了很多教訓(xùn),因為小組的不注意,導(dǎo)致2138開發(fā)板沒法繼續(xù)工作,有的時候會很耽誤時間,有的時候進(jìn)度報告拖后一點(diǎn)才寫,也因此導(dǎo)致過進(jìn)度不明了,不過,大多數(shù)時候,我們小組成員都認(rèn)真對待大賽,努力想把自己小組的作品做的更完美,最后終于成功交付任務(wù),完成大賽。

      下載實時操作系統(tǒng)報告word格式文檔
      下載實時操作系統(tǒng)報告.doc
      將本文檔下載到自己電腦,方便修改和收藏,請勿使用迅雷等下載。
      點(diǎn)此處下載文檔

      文檔為doc格式


      聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻(xiàn)自行上傳,本網(wǎng)站不擁有所有權(quán),未作人工編輯處理,也不承擔(dān)相關(guān)法律責(zé)任。如果您發(fā)現(xiàn)有涉嫌版權(quán)的內(nèi)容,歡迎發(fā)送郵件至:645879355@qq.com 進(jìn)行舉報,并提供相關(guān)證據(jù),工作人員會在5個工作日內(nèi)聯(lián)系你,一經(jīng)查實,本站將立刻刪除涉嫌侵權(quán)內(nèi)容。

      相關(guān)范文推薦

        嵌入式實時操作系統(tǒng)(dynaLinux),及其開發(fā)平臺(精)

        嵌入式實時操作系統(tǒng)(dynaLinux),及其開發(fā)平臺 公司簡介: 注冊時間:2003年3月24日 經(jīng)濟(jì)性質(zhì):合資 從事領(lǐng)域:電子信息 資產(chǎn)狀況:注冊資金100萬人民幣 人員狀況:12人 股本結(jié)構(gòu): 中方:方......

        操作系統(tǒng)課程設(shè)計報告

        課程設(shè)計報告 題 目: 模擬請求頁式管理 課程名稱: 計算機(jī)操作系統(tǒng) 學(xué) 院: 信息工程學(xué)院專 業(yè): 計算機(jī)科學(xué)與技術(shù)班 級: 14計本(1) 學(xué)生姓名: * * * 學(xué) 號: 201403031** 指導(dǎo)教......

        操作系統(tǒng)課程設(shè)計報告(★)

        操 作 系 統(tǒng) 課 程 設(shè) 計 實 驗 報 告 學(xué)院:計算機(jī)科學(xué)與技術(shù)學(xué)院 班級:計112 學(xué)號:1113022032 姓名: 一、 實驗名稱: 用C++實現(xiàn)驅(qū)動調(diào)度算法、頁面替換算法、銀行家算法、處理......

        操作系統(tǒng)課程設(shè)計報告

        操作系統(tǒng)課程設(shè)計報告 專 業(yè):計算機(jī)科學(xué)與技術(shù) 學(xué) 號: 姓 名: 提交日期: 操作系統(tǒng)課程設(shè)計報告 【設(shè)計目的】 (1)本實驗的目的是通過一個簡單多用戶文件系統(tǒng)的設(shè)計,加深理解文件系......

        操作系統(tǒng)調(diào)研報告

        操作系統(tǒng)調(diào)研報告隨著日常生活的數(shù)字化發(fā)展,計算機(jī)作成為了工作、學(xué)習(xí)、娛樂所不可或缺的一部分,而操作系統(tǒng)通過組織和管理軟硬件資源,使之協(xié)調(diào)一致并高效地完成各種用戶的工作......

        計算機(jī)操作系統(tǒng) 課程設(shè)計報告(推薦)

        操作系統(tǒng)課程設(shè)計報告 時間:2010-12-20~2010-12-31 地點(diǎn):信息技術(shù)實驗中心 計算機(jī)科學(xué)與技術(shù)專業(yè) 2008級2班15號 楊 燁2010-12-31 信息工程學(xué)院計算機(jī)科學(xué)與技術(shù)082班 目錄 一......

        嵌入式操作系統(tǒng)課程報告

        華北水利水電大學(xué)North China University of Water Resources and Electric Power嵌入式操作系統(tǒng)課程報告題目 嵌入式系統(tǒng)課程綜和論述......

        Linux操作系統(tǒng)實習(xí)報告

        沈陽航空航天大學(xué) Linux系統(tǒng)操作實習(xí)報告 院(系):計算機(jī)學(xué)院 專業(yè):計算機(jī)科學(xué)與技術(shù) 班級:84010103 學(xué)號:2008040101061 姓名:李雪城 指導(dǎo)教師:王越 完成日期:2011年7月22日 7月18日......