已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、嵌入式系統(tǒng)的定義和三要素:嵌入式系統(tǒng)是以應(yīng)用為中心,以計算機技術(shù)為基礎(chǔ),軟硬件可裁剪,應(yīng)用系統(tǒng)對功能,可靠性,成本,體積和功耗等嚴格要求的專用計算機系統(tǒng)。(1) 系統(tǒng)級,(2) 板級, (3) 芯片級。2、實時操作系統(tǒng)的定義,硬實時與軟實時的區(qū)分,各自的特點是?1) 實時系統(tǒng)的定義:一般地說,實時系統(tǒng)是指系統(tǒng)在限定的時間內(nèi)能夠提供所需要的服務(wù)水平的系統(tǒng)。實時系統(tǒng)根據(jù)對于實時性要求的不同,可以分為軟實時和硬實時兩種類型。軟實時系統(tǒng)要求各個任務(wù)運行得越快越好,但并不苛求任務(wù)運行的時限。如果系統(tǒng)特定的時序得不到滿足,只會引起性能的嚴重下降,并不產(chǎn)生嚴重后果。硬實時系統(tǒng)不僅要求各個任務(wù)執(zhí)行無誤,而且要求執(zhí)行準時,如果特定的時序得不到滿足,將會引起災(zāi)難性的后果。3、嵌入式操作系統(tǒng)伴隨著嵌入式系統(tǒng)的發(fā)展經(jīng)歷了四個比較明顯的階段。第一階段:無操作系統(tǒng)的嵌入算法階段,通過匯編語言編程對系統(tǒng)進行直接控制,運行結(jié)束后清除內(nèi)存。系統(tǒng)結(jié)構(gòu)和功能都相對單一,處理效率較低,存儲容量較小,幾乎沒有用戶接口,比較適合于各類專用領(lǐng)域。第二階段:以嵌入式CPU為基礎(chǔ)、簡單操作系統(tǒng)為核心的嵌入式系統(tǒng)。CPU 種類繁多,通用性比較差;系統(tǒng)開銷小,效率高;一般配備系統(tǒng)仿真器,操作系統(tǒng)具有一定的兼容性和擴展性;應(yīng)用軟件較專業(yè),用戶界面不夠友好;操作系統(tǒng)主要用來控制系統(tǒng)負載以及監(jiān)控應(yīng)用程序運行。第三階段:通用的嵌入式實時操作系統(tǒng)階段。以嵌入式操作系統(tǒng)為核心的嵌入式系統(tǒng)能運行于各種類型的微處理器上,兼容性好;內(nèi)核精小、效率高,具有高度的模塊化和擴展性;具備文件和目錄管理、設(shè)備支持、多任務(wù)、網(wǎng)絡(luò)支持、圖形窗口以及用戶界面等功能;具有大量的應(yīng)用程序接口;嵌入式應(yīng)用軟件豐富。第四階段:以Internet為標志的嵌入式實時操作系統(tǒng)開始向網(wǎng)絡(luò)操作系統(tǒng)方向發(fā)展,這是一個正在迅速發(fā)展的階段。4、通用操作系統(tǒng)與實時操作系統(tǒng)區(qū)別。 (1)設(shè)計目標不同。(2) 調(diào)度原則不同。(3) 內(nèi)存管理機制不同。(4) 穩(wěn)定性及交互性不同。(5) 實時性不同。5、嵌入式操作系統(tǒng)主要構(gòu)成部分,核心是,其定義、功能通常嵌入式操作系統(tǒng)由內(nèi)核(Kernel)、文件系統(tǒng)、存儲器管理系統(tǒng)、I/O管理系統(tǒng)、設(shè)備驅(qū)動程序、網(wǎng)絡(luò)協(xié)議棧和標準化瀏覽器等部分組成,。內(nèi)核是多任務(wù)系統(tǒng)中的核心部分,提供多任務(wù),為多任務(wù)分配CPU時間,提供任務(wù)管理與調(diào)度、時間管理、任務(wù)間通信和同步、內(nèi)存管理等重要服務(wù),并作為系統(tǒng)調(diào)用提供給任務(wù)的使用者。內(nèi)核的基本任務(wù)是任務(wù)調(diào)度和任務(wù)間通信。實時內(nèi)核主要有可剝奪型內(nèi)核和不可剝奪型內(nèi)核兩種。內(nèi)核允許將系統(tǒng)分成多個獨立的任務(wù),每個任務(wù)處理程序的一部分,從而簡化系統(tǒng)的設(shè)計過程。一個好的實時內(nèi)核需要具備以下功能和特點: 任務(wù)管理; 任務(wù)間可以進行同步和通信; 實時時鐘服務(wù); 中斷管理服務(wù); 操作系統(tǒng)的行為是可知的和可預測的。1、什么是前后臺系統(tǒng)前后臺系統(tǒng)一般由前臺(Foreground)和后臺(Background)兩部分程序組成。后臺是一個無限循環(huán)的應(yīng)用程序,循環(huán)中調(diào)用相應(yīng)的任務(wù)函數(shù)完成相應(yīng)的操作,各個任務(wù)依次運行,沒有調(diào)度,運行的次序不能改變。前臺是中斷服務(wù)程序,處理異步事件。后臺一般也叫任務(wù)級,前臺也叫中斷級。2、基本的調(diào)度算法和什么是臨界區(qū)先來先服務(wù),最短周期優(yōu)先,優(yōu)先級法,輪轉(zhuǎn)法。用于訪問臨界資源的代碼段稱為臨界區(qū)。3、什么是任務(wù)切換?定義?任務(wù)有幾個狀態(tài)?所謂任務(wù)切換(Context Switch或者Task Switch),實際上是模擬一次中斷過程,從而實現(xiàn)CPU使用權(quán)的轉(zhuǎn)移。每個任務(wù)都有自己獨立的堆棧,稱之為任務(wù)棧,用于保存任務(wù)的當前狀態(tài)和所有寄存器內(nèi)容。當內(nèi)核決定運行另一個任務(wù)時,首先入棧,將當前任務(wù)用到的所有寄存器內(nèi)容以及當前狀態(tài)保存到自己的任務(wù)棧中去,然后像中斷返回一樣,將下一個將要運行的任務(wù)的所有寄存器內(nèi)容和狀態(tài)從該任務(wù)的任務(wù)棧中彈出,重新裝入CPU的寄存器,任務(wù)即恢復到掛起前的狀態(tài),并開始執(zhí)行。這個過程就是任務(wù)切換。休眠態(tài)、就緒態(tài)、運行態(tài)、掛起態(tài))和被中斷態(tài)五種狀態(tài)。4、什么是死鎖?產(chǎn)生的根本原因?產(chǎn)生死鎖的4個必要條件?預防的基本思想?死鎖又稱抱死,是指兩個或者更多的任務(wù)相互等待對方占有的資源而無限期地僵持下去的局面。產(chǎn)生死鎖的根本原因在于:系統(tǒng)資源不足,任務(wù)運行推進的順序不合理,資源分配不恰當?shù)取K梨i產(chǎn)生有四個必要的條件: 互斥條件,系統(tǒng)中某些資源只能獨占使用; 非搶占條件,系統(tǒng)中某些資源僅能被它的占有者所釋放,而不能被別的任務(wù)強行搶占; 占有并等待條件,系統(tǒng)中的某些任務(wù)已占有了分給它的資源,但仍然等待其它資源; 循環(huán)等待條件,系統(tǒng)中由若干任務(wù)形成的環(huán)形請求鏈,每個任務(wù)均占有若干種資源中的某一種,同時還要求(鏈上)下一個任務(wù)所占有的資源。必要的條件具備后,當任務(wù)推進順序不合理時,死鎖就發(fā)生了。死鎖預防的基本思想:打破產(chǎn)生死鎖的四個必要條件中的一個或幾個。預防死鎖的策略:資源預先分配策略、資源有序分配策略。 (1) 資源預先分配策略: (2) 資源有序分配策略:5、內(nèi)核的定義和基本任務(wù)和分類?內(nèi)核是多任務(wù)系統(tǒng)中的核心部分,提供多任務(wù)分配cpu時間,提供任務(wù)管理與調(diào)度,時間管理通信與同步,內(nèi)存管理等重要服務(wù),并作為系統(tǒng)供給任務(wù)的使用者。內(nèi)核的基本任務(wù)是任務(wù)調(diào)度與任務(wù)間的通信。不可剝奪型內(nèi)核(Non-Preemptive Kernel)的特點是運行的任務(wù)占有CPU的絕對使用權(quán),若不自我放棄,準備就緒的高優(yōu)先級任務(wù)不能搶占CPU的使用權(quán)。使用可剝奪型內(nèi)核,準備就緒的最高優(yōu)先級任務(wù)總能得到CPU的使用權(quán)。6、什么是互斥?本質(zhì)?滿足互斥最一般的方法有?任務(wù)間通信的最簡單方法就是使用共享數(shù)據(jù)結(jié)構(gòu)或者共享變量,為了防止任務(wù)在使用共享資源時破壞數(shù)據(jù),資源必須獨占使用。這種獨占使用資源的方法稱為互斥,互斥的本質(zhì)是為了有序地利用資源。滿足互斥最一般的方法有:禁止中斷、禁止搶占、利用信號量和測試并置位等。7、通信?常用的通信方法?同步?同步的方式?常用的同步方法?任務(wù)與任務(wù)之間或者任務(wù)與中斷服務(wù)之間的信息傳遞稱為任務(wù)間的通信。任務(wù)間的通信機制是多任務(wù)之間相互同步和協(xié)調(diào)各活動的主要手段。任務(wù)間信息的傳遞有兩個途徑:通過全程變量或發(fā)消息給另一個任務(wù)。常用的通信方法主要有全局變量、信號量、消息郵箱、消息隊列、事件標志組和內(nèi)存塊。在實時系統(tǒng)中,一個工作的完成往往需要多個任務(wù)或者多個任務(wù)與多個任務(wù)中斷共同完成,它們之間必須互相配合,協(xié)調(diào)動作,甚至交換信息,就要用到同步技術(shù)。同步可以是任務(wù)與任務(wù)之間的同步,也可以是任務(wù)與中斷之間的同步。同步的方式有單向同步和雙向同步。同步的方法有信號量,事件標志組,消息郵箱,消息隊列。1、什么是任務(wù)控制塊?有何功能?任務(wù)控制塊(Task Control Blocks,OS_TCB)是一個用來保存任務(wù)各種狀態(tài)信息的數(shù)據(jù)結(jié)構(gòu),它可以實現(xiàn)如下功能: 一旦任務(wù)建立,任務(wù)控制塊OS_TCB就會被賦值; 當任務(wù)的CPU使用權(quán)被剝奪時,任務(wù)控制塊用來保存該任務(wù)的狀態(tài); 當任務(wù)重新得到CPU使用權(quán)時,任務(wù)控制塊能確保任務(wù)從當時被中斷的那一點絲毫不差地繼續(xù)執(zhí)行。OS_ TCB全部駐留在RAM中。2、任務(wù)調(diào)度的功能有哪些方式?任務(wù)的調(diào)度機制是內(nèi)核的核心。C/OS-的調(diào)度器主要有兩個功能:一是確定進入就緒態(tài)的任務(wù)中哪個優(yōu)先級最高;二是進行任務(wù)切換。調(diào)度有兩種方式:任務(wù)級的調(diào)度是由OSSched()函數(shù)完成的;中斷級的調(diào)度是由OSIntExt()函數(shù)完成的。1、中斷定義,異步事件?中斷詳細處理過程?中斷定義為CPU對系統(tǒng)內(nèi)外發(fā)生的異步事件的響應(yīng)。異步事件是指沒有一定時序關(guān)系的、隨機發(fā)生的事件。當中斷產(chǎn)生時,由硬件向CPU 發(fā)送一個異步事件請求,CPU接收到請求后,中止當前工作,保存當前運行環(huán)境,轉(zhuǎn)去處理相應(yīng)的異步事件任務(wù),這個過程稱為中斷。事件處理完畢后,在前后臺系統(tǒng)中,程序回到后臺程序;在不可剝奪型內(nèi)核中,程序回到被中斷了的任務(wù);在可剝奪型內(nèi)核中,讓進入就緒態(tài)的優(yōu)先級最高的任務(wù)開始運行,若沒有高優(yōu)先級任務(wù)準備就緒,則回到被中斷了的任務(wù)。2、中斷延遲在前后臺系統(tǒng)中: 在不可剝奪型和可剝奪內(nèi)核中:3、中斷響應(yīng)在前后臺系統(tǒng)和不可剝奪型內(nèi)核中,保存寄存器以后立即執(zhí)行用戶代碼,中斷響應(yīng)由下式給出:中斷響應(yīng)=中斷延遲+保存CPU內(nèi)部寄存器的時間在可剝奪型內(nèi)核中,則要先調(diào)用一個特定的函數(shù),通知內(nèi)核即將進行中斷服務(wù),使得內(nèi)核可以跟蹤中斷的嵌套。對C/OS-說來,這個函數(shù)是OSIntEnter(),可剝奪型內(nèi)核的中斷響應(yīng)由下式給出:中斷響應(yīng)=中斷延遲+保存CPU內(nèi)部寄存器的時間+內(nèi)核進入中斷服務(wù)函數(shù)的執(zhí)行時間4、延時函數(shù)?程序清單4.6 OSTimeDly()函數(shù)的源代碼void OSTimeDly (INT16U ticks) if (ticks 0) /*如果加入指定一個0值,則表示不想對任務(wù)延時,函數(shù)立即返回調(diào)用者*/OS_ENTER_CRITICAL(); /*關(guān)中斷*/if (OSRdyTblOSTCBCur-OSTCBY &= OSTCBCur-OSTCBBitX) = 0) /*從就緒表中移出當前任務(wù)*/OSRdyGrp &= OSTCBCur-OSTCBBitY;OSTCBCur-OSTCBDly = ticks;/*保存節(jié)拍數(shù),每隔一個時鐘節(jié)拍,這個成員變量數(shù)減1*/OS_EXIT_CRITICAL(); /*關(guān)中斷*/OSSched();/*當前任務(wù)已經(jīng)掛起,任務(wù)調(diào)度程序執(zhí)行下一個優(yōu)先級最高的就緒任務(wù)*/5、中斷程序流程圖1、移植的概念這里所謂的移植,就是使一個實時內(nèi)核能運行在另一種微處理器或者微控制器上。2、移植對開發(fā)工具的要求,微處理器的要求(了解)1. 移植對微處理器的要求要使C/OS-能夠正常運行,處理器和編譯器必須滿足以下五項要求:(1) 處理器的C編譯器能產(chǎn)生可重入代碼;(2) 用C語言就可以實現(xiàn)開關(guān)中斷;(3) 處理器至少能支持定時中斷,中斷頻率一般在10100 Hz之間;(4) 處理器能夠支持硬件堆棧,容量可達幾KB;(5) 處理器有堆棧指針和讀/寫CPU其它寄存器、堆棧內(nèi)容或內(nèi)存的指令。2. 對移植開發(fā)工具的要求移植C/OS-,需要一個針對用戶用的CPU的C編譯器,它必須滿足如下要求:(1) C編譯器必須支持匯編語言程序。(2) C編譯器必須能支持可重入代碼,因為C/OS-是一個可剝奪型內(nèi)核。(3) C編譯器必須包括匯編器、連接器和定位器。連接器用來將經(jīng)編譯和匯編后產(chǎn)生的不同的模塊連接成目標文件。定位器用于將代碼和數(shù)據(jù)放置在目標處理器的指定內(nèi)存映射空間中。(4) C編譯器必須支持從C中打開和關(guān)閉中斷。(5) C編譯器最好支持用戶在C語言程序中嵌入?yún)R編語言,這有利于用匯編語言來直接開關(guān)中斷。3、移植的主要工作(1) 聲明11個數(shù)據(jù)類型(OS_CPU.H);(2) 用#define聲明4個宏(OS_CPU.H);(3) 用C語言編寫10個簡單的函數(shù)(OS_CPU_C.C);(4) 編寫4個匯編語言函數(shù)(OS_CPU_A.ASM)。4、移植代碼的測試。目的?如何進行?方法?測試的主要順序?在代碼修改移植結(jié)束后,緊接著要進行的工作就是測試。測試的目的就是驗證所移植的代碼是否能正常地工作,這也可能是移植過程中最復雜的工作,但必不可少。測試的主要方法如下:(1) 在沒有應(yīng)用程序的情況下進行,讓內(nèi)核自己測試自己,以確保自身運行狀況沒有錯誤。這樣做有兩個好處:第一,避免使本來就復雜的事情變得更加復雜;第二,如果出現(xiàn)問題,可以知道問題出在內(nèi)核代碼上而不是應(yīng)用程序。(2) 簡單的測試代碼如程序清單10.7所示。當多任務(wù)調(diào)度運行成功后,再逐步添加應(yīng)用程序。#include includes.hvoid main()OSInit();OSStart()測試的主要順序如下:(1) 確保C編譯器、匯編編譯器及連接器正常工作;(2) 驗證OSTaskStkInit()和OSStartHighRdy()函數(shù);(3) 驗證OSCtxSw()函數(shù);(4) 驗證OSIntCtxSw()函數(shù)。這些測試可以用少量的任務(wù)和中斷來實現(xiàn)。5、MC51移植程序(不知道考什么)程序清單10.8 OS_CPU.H頭文件在MCS-51單片機上的移植代碼/*與編譯器有關(guān)的數(shù)據(jù)類型*/typedef unsigned char BOOLEAN; /*不能使用bit定義,因為在結(jié)構(gòu)體里無法使用*/typedef unsigned char INT8U; /*無符號8位數(shù)*/typedef signed char INT8S; /*有符號8位數(shù)*/typedef unsigned int INT16U; /*無符號16位數(shù)*/typedef signed int INT16S; /*有符號16位數(shù)*/typedef unsigned long INT32U; /*無符號32位數(shù)*/typedef signed long INT32S; /*有符號32位數(shù)*/typedef float FP32; /*單精度浮點數(shù)*/typedef double FP64; /*雙精度浮點數(shù)*/typedef unsigned char OS_STK; /*定義堆棧入口寬度為8位*/typedef unsigned char OS_CPU_SR; /*定義CPU狀態(tài)字的寬度為8位*/*與處理器有關(guān)的代碼*/#if OS_CRITICAL_METHOD = 1#define OS_ENTER_CRITICAL() EA=0 /*直接禁止中斷*/#define OS_EXIT_CRITICAL() EA=1 /*直接允許中斷*/#endif#if OS_CRITICAL_METHOD = 2#define OS_ENTER_CRITICAL() /*未用*/#define OS_EXIT_CRITICAL() /*未用*/#endif#if OS_CRITICAL_METHOD = 3#define OS_ENTER_CRITICAL() cpu_sr = IE & 0x80;IE &= 0x7F /*禁止中斷*/#define OS_EXIT_CRITICAL() IE |= cpu_sr /*允許中斷*/#endif#define OS_STK_GROWTH 0 /*MCU-51堆棧從下往上增長 1=向下,0=向上*/#define OS_TASK_SW() OSCtxSw()6、MC51移植代碼重要函數(shù)OSTaskStkInit()函數(shù)功能程序清單10.9 MCS-51的OSTaskStkInit()函數(shù)移植實例void *OSTaskStkInit (void (*task)(void *pd), void *ppdata, void *ptos, INT16U opt) reentrant OS_STK *stk; ppdata = ppdata; opt = opt; /*opt沒被用到,保留此語句防止告警產(chǎn)生*/ stk = (OS_STK *)ptos; /*任務(wù)堆棧最低有效地址*/*stk+ = 15; /*任務(wù)堆棧長度*/ *stk+ = (INT16U)task & 0xFF; /*任務(wù)代碼地址低8位*/ *stk+ = (INT16U)task 8; /*任務(wù)代碼地址高8位*/ *stk+ = 0x00; /*PSW*/ *stk+ = 0x0A; /*ACC*/*stk+ = 0x0B; /*B*/ *stk+ = 0x00; /*DPL*/ *stk+ = 0x00; /*DPH*/ *stk+ = 0x00; /*R0*/ *stk+ = 0x01; /*R1*/*stk+ = 0x02; /*R2*/ *stk+ = 0x03; /*R3*/ *stk+ = 0x04; /*R4*/ *stk+ = 0x05; /*R5*/ *stk+ = 0x06; /*R6*/*stk+ = 0x07; /*R7*/ /*不用保存SP,任務(wù)切換時根據(jù)用戶堆棧長度計算得出*/ *stk+ = (INT16U) (ptos+MaxStkSize) 8;/*?C_XBP仿真堆棧指針高8位(見程序清單10.10) */ *stk+ = (INT16U) (ptos+MaxStkSize) & 0xFF;/*?C_XBP 仿真
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣東理工學院《博弈論基礎(chǔ)》2023-2024學年第一學期期末試卷
- 廣東科技學院《建筑工程識圖與構(gòu)造》2023-2024學年第一學期期末試卷
- 廣東江門幼兒師范高等??茖W校《Prote軟件技術(shù)》2023-2024學年第一學期期末試卷
- 廣東機電職業(yè)技術(shù)學院《工程流體力學》2023-2024學年第一學期期末試卷
- 廣東行政職業(yè)學院《擒拿防衛(wèi)術(shù)》2023-2024學年第一學期期末試卷
- 廣東工業(yè)大學《美術(shù)技法(一)》2023-2024學年第一學期期末試卷
- 廣東財經(jīng)大學《醫(yī)藥人力資源管理》2023-2024學年第一學期期末試卷
- 交通安全課件
- 《疾病預防與控制》課件
- 廣東財經(jīng)大學《工程地震與結(jié)構(gòu)抗震》2023-2024學年第一學期期末試卷
- 2018年海南公務(wù)員考試申論真題
- GB/T 28799.2-2020冷熱水用耐熱聚乙烯(PE-RT)管道系統(tǒng)第2部分:管材
- 《毛澤東思想概論》題庫
- 勞務(wù)派遣人員考核方案
- 意志力講解學習課件
- 生產(chǎn)作業(yè)員質(zhì)量意識培訓課件
- 固定資產(chǎn)報廢管理辦法
- 《路由與交換》課程標準
- 工程開工令模板
- 福建省漳州市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名明細及行政區(qū)劃代碼
- 員工投訴表格樣板
評論
0/150
提交評論