嵌入式實時操作系統(tǒng)簡介_第1頁
嵌入式實時操作系統(tǒng)簡介_第2頁
嵌入式實時操作系統(tǒng)簡介_第3頁
嵌入式實時操作系統(tǒng)簡介_第4頁
嵌入式實時操作系統(tǒng)簡介_第5頁
已閱讀5頁,還剩80頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

嵌入式系統(tǒng)AnIntroductiontoEmbeddedSystem第五課嵌入式實時操作系統(tǒng)(RTOS)簡介教師:蔡銘cm@助教:王廣輝embededsystem.cai@浙江大學(xué)計算機(jī)學(xué)院人工智能研究所航天科技-浙江大學(xué)基礎(chǔ)軟件研發(fā)中心1

課程大綱嵌入式實時操作系統(tǒng)概況嵌入式實時操作系統(tǒng)特點(diǎn)嵌入式實時操作系統(tǒng)功能簡介

ARM-Linux嵌入式操作系統(tǒng)內(nèi)核實驗2背景分析早期嵌入式系統(tǒng):硬件所限匯編語言基本不采用操作系統(tǒng)基礎(chǔ)條件成熟硬件的提升

——微處理器性能提高、存儲器容量增加軟件技術(shù)快速發(fā)展

——編譯器、操作系統(tǒng)、集成開發(fā)環(huán)境3嵌入式操作系統(tǒng)概述-發(fā)展階段(1/4)嵌入式操作系統(tǒng)的發(fā)展主要經(jīng)歷了以下四個階段:無操作系統(tǒng)的階段單芯片為核心具有與一些監(jiān)測、伺服、指示設(shè)備相配合的功能一般沒有明顯的操作系統(tǒng)支持通過匯編語言編程對系統(tǒng)進(jìn)行直接控制。主要特點(diǎn)系統(tǒng)結(jié)構(gòu)和功能都相對單一,針對性強(qiáng)無操作系統(tǒng)支持幾乎沒有用戶接口4嵌入式操作系統(tǒng)概述-發(fā)展階段(2/4)簡單監(jiān)控式的實時操作系統(tǒng)階段以嵌入式處理器為基礎(chǔ)以簡單監(jiān)控式的操作系統(tǒng)為核心主要特點(diǎn):處理器種類繁多,通用性比較弱;開銷小,效率高;一般配備系統(tǒng)仿真器,具有一定的兼容性和擴(kuò)展性;用戶界面不夠友好,主要用來控制系統(tǒng)負(fù)載,以及監(jiān)控應(yīng)用程序運(yùn)行。八十年代初:出現(xiàn)了以VRTX(1981)、pSOS等為代表的第一代系統(tǒng)(實時內(nèi)核),提供了實時操作系統(tǒng)基本功能。5嵌入式操作系統(tǒng)概述-發(fā)展階段(3/4)通用的嵌入式實時操作系統(tǒng)階段以通用型嵌入式操作系統(tǒng)為標(biāo)志的嵌入式系統(tǒng)主要特點(diǎn):運(yùn)行在不同的微處理器具有強(qiáng)大的通用型操作系統(tǒng)的功能文件和目錄管理多任務(wù)設(shè)備驅(qū)動支持網(wǎng)絡(luò)支持圖形窗口用戶界面具有豐富的API和嵌入式應(yīng)用軟件八十年代后期到九十年代初期,出現(xiàn)以VxWorks、RTEMS、Nucleus

PLUS、QNX、OSE為代表的第二代系統(tǒng)。6嵌入式操作系統(tǒng)概述-發(fā)展階段(4/4)二十世紀(jì)末,出現(xiàn)了以Integrity為代表的第三代系統(tǒng),進(jìn)一步在實時性、高可靠性、高可用性等方面提供了強(qiáng)有力的支持。新一代實時操作系統(tǒng)的發(fā)展方向主要包括高可信、高可靠、高可用、高安全、微型化、支持多核等。近年來,出現(xiàn)了以Internet為標(biāo)志的嵌入式系統(tǒng)嵌入式系統(tǒng)與Internet的全面結(jié)合嵌入式操作系統(tǒng)與應(yīng)用設(shè)備的無縫結(jié)合代表著嵌入式操作系統(tǒng)發(fā)展的未來新的名詞:WebOS嵌入式實時操作系統(tǒng)發(fā)展7典型的嵌入式實時操作系統(tǒng)嵌入式實時操作系統(tǒng)數(shù)量眾多,如:VxWorksWindowsCEpSOSQNXPalmOS

NucleusAndroid國產(chǎn)嵌入式實時操作系統(tǒng),如:HOPENDeltaOSSmartOSSZOSRT-LinuxSymbianuc/OSRTEMST-KernelIntegrityThreadX8嵌入式實時操作系統(tǒng)-VxWorksVxWorks操作系統(tǒng)是美國WindRiver公司于1983年設(shè)計開發(fā)的嵌入式實時操作系統(tǒng),具有高性能、穩(wěn)定的內(nèi)核以及友好的用戶開發(fā)環(huán)境,是世界第一大嵌入式操作系統(tǒng)提供商,應(yīng)用于航空航天、工業(yè)控制、網(wǎng)絡(luò)設(shè)備、汽車電子等領(lǐng)域。VxWorks所具有的顯著特點(diǎn)是:可靠性、實時性和可裁剪性。支持多種處理器,如x86、PowerPC、ARM、Sparc、MIPS、DSP等。經(jīng)典應(yīng)用:1997年NASA火星探路者、2007年鳳凰號火星探測器在火星沙丘前進(jìn)在火星上拍攝的日落全景9嵌入式實時操作系統(tǒng)-Integrity美國GreenHills公司是世界排名第二的嵌入式操作系統(tǒng)提供商,Integrity是GreenHills公司的RTOS產(chǎn)品,代表了目前最先進(jìn)的RTOS技術(shù),被NASAJPL選中用于測試在太空中的新技術(shù)。分為普通Embedded

RTOS和關(guān)鍵應(yīng)用中使用的DO-178B實時操作系統(tǒng)兩類。系統(tǒng)技術(shù)優(yōu)勢突出內(nèi)核服務(wù)優(yōu)化,系統(tǒng)調(diào)用的開銷降至最小。復(fù)雜的系統(tǒng)調(diào)用可以被搶占。系統(tǒng)的調(diào)度器是一個真正的實時調(diào)度器。具有快速中斷處理能力,內(nèi)核從不阻塞某些中斷。具有一流的集成開發(fā)環(huán)境MULTI?支持。10嵌入式實時操作系統(tǒng)-WindowsEmbeddedMicrosoft公司針對針對PDA、PocketPC、移動電話、小型終端設(shè)備提供的操作系統(tǒng)。用戶開發(fā)環(huán)境、接口API、系統(tǒng)界面等與Windows相似,因而具有較多的應(yīng)用。1996-卡西歐蛤殼式PDA(WinCE1.0)2006年1996年2003年11開源的嵌入式實時操作系統(tǒng)-嵌入式Linux嵌入式系統(tǒng)追求數(shù)字化、網(wǎng)絡(luò)化和智能化,要求系統(tǒng)必須是開放的、提供標(biāo)準(zhǔn)的API,并能夠方便地與眾多第三方軟硬件溝通。尤其是處于核心地位的操作系統(tǒng)。Linux是開放源碼的,不存在黑箱技術(shù),遍布全球的眾多Linux愛好者是其開發(fā)的強(qiáng)大技術(shù)后盾。對Linux進(jìn)行實時性改造與裁剪,形成:μClinux

Embedix

RTLinux

RTAIMontaVistaLinux

12開源的嵌入式實時操作系統(tǒng)-C/OSIIμC/OSII是一種基于優(yōu)先級搶占式、可移植、可裁剪的多任務(wù)實時操作系統(tǒng)。絕大部分源碼是用ANSIC寫的,與硬件相關(guān)的那部分匯編代碼被壓縮至最低限度,使得系統(tǒng)移植性強(qiáng)。μC/OSII誕生于90年代初,最初名稱是μC/OS,由JeanJ.Labrosse開發(fā),并在網(wǎng)絡(luò)上開源,其特點(diǎn)為短小、精悍。μC/OSII經(jīng)裁剪最小可達(dá)2KB,最小數(shù)據(jù)RAM需求10KB。μC/OSII可以在8位~64位,超過40種不同架構(gòu)的微處理器上運(yùn)行,在世界范圍內(nèi)得到廣泛應(yīng)用,包括:手機(jī)、路由器、集線器、不間斷電源、飛行器、醫(yī)療設(shè)備及工業(yè)控制上。13開源的嵌入式實時操作系統(tǒng)-ThreadXThreadX是一款強(qiáng)實時操作系統(tǒng),以內(nèi)核?。ㄗ钚?nèi)核為2K,最小RAM500byte)、實時性強(qiáng)、高可靠性、源代碼開放,免收產(chǎn)品版權(quán)費(fèi)而聞名。由美國ExpressLogic提供解決方案,適于深度嵌入的系統(tǒng),有功能強(qiáng)大的開發(fā)調(diào)試環(huán)境MULTI?支持。典型應(yīng)用:2005年7月4日,美國NASA實施"深度撞擊"號宇宙飛船對坦普爾1號彗星的準(zhǔn)確撞擊,關(guān)鍵任務(wù)由ThreadX完成。14開源的嵌入式實時操作系統(tǒng)-T-Kernel由日本東京大學(xué)的坂村健教授主持開發(fā),具有執(zhí)行效率高、實時性好等特點(diǎn)。1984年提出計算機(jī)操作系統(tǒng)規(guī)范TRON(TheReal-timeOperatingsystemNucleus)構(gòu)想,先后推出了ITRON、JTRON、BTRON、CTRON等規(guī)范。其應(yīng)用從汽車、移動電話、傳真機(jī)到電視機(jī)、家電等領(lǐng)域,主要用戶包括:豐田、松下、日立、富士通、東芝、索尼、佳能、理光、NEC等,裝機(jī)量超過30億。IBM、Microsoft、ARM、MIPS、Sun、Oracle等企業(yè)相繼加入其開放式系統(tǒng)架構(gòu)。15手機(jī)嵌入式操作系統(tǒng)-IPhoneOSiPhoneOS或OSXiPhone是由蘋果公司為iPhone開發(fā)的操作系統(tǒng)iPhone、iPodtouch以及iPad以Darwin為基礎(chǔ)的系統(tǒng)架構(gòu)分為四個層次內(nèi)核操作系統(tǒng)層(theCoreOSlayer)內(nèi)核服務(wù)層(theCoreServiceslayer)媒體層(theMedialayer)可輕觸層(theCocoaTouchlayer)系統(tǒng)操作占用大概240MB的內(nèi)存空間源碼模式:封閉源碼+開放源碼組件最新版本4.3.32011-5-516手機(jī)嵌入式操作系統(tǒng)-Windowsphone2010年2月,微軟公司正式發(fā)布WindowsPhone7智能手機(jī)操作系統(tǒng),WindowsMobile系列徹底退出了手機(jī)操作系統(tǒng)市場。2011年2月,諾基亞在英國倫敦宣布與微軟達(dá)成戰(zhàn)略合作關(guān)系。諾基亞手機(jī)將采用WindowsPhone系統(tǒng),并且將參與系統(tǒng)開發(fā)。Windowsphone把網(wǎng)絡(luò)、個人電腦和手機(jī)的優(yōu)勢集于一身,提供良好的用戶體驗:儀表盤主屏桌面定制圖標(biāo)拖拽滑動控制將于2011年5月發(fā)布WindowPhoneMango(windowsphone7.5)17手機(jī)嵌入式操作系統(tǒng)-AndroidAndroid是Google開發(fā)的基于Linux平臺的開源手機(jī)嵌入式操作系統(tǒng)。形成了具有30多家技術(shù)和無線應(yīng)用的領(lǐng)軍企業(yè)組成的開放手機(jī)聯(lián)盟,包括:中國移動、摩托羅拉、高通、宏達(dá)和T-Mobile等。Android的優(yōu)點(diǎn)融入全部的Web應(yīng)用,包括:Gmail、GoogleMaps、YouTube、Google日歷、GoogleTalkAndroid操作系統(tǒng)免費(fèi)向開發(fā)人員提供18嵌入式實時操作系統(tǒng)-SymbianSymbian(EPOC系統(tǒng))由Nokia、Motorola、Siemens等手機(jī)廠商聯(lián)合注資成立的公司,專注于手機(jī)的嵌入式智能操作系統(tǒng),支持c++、Java語言,通訊、多媒體處理功能強(qiáng),目前占有60%的智能手機(jī)市場。Symbian具有功能:協(xié)議標(biāo)準(zhǔn):IPv4、IPv6、藍(lán)牙、WAP、SyncML、USB通訊能力:支持2G、2.5G、3G系統(tǒng)應(yīng)用開發(fā),GSM、GPRS、CDMA(IS-95)以及2000技術(shù)支持多媒體支持:圖片、音樂、視頻瀏覽信息定制:SMS、EMS、MMS、EMAIL和FAX支持安全穩(wěn)定:支持?jǐn)?shù)據(jù)完整性、可靠高效的電池管理、數(shù)據(jù)同步、數(shù)據(jù)加密、證書管理、軟件安裝管理等19手機(jī)嵌入式操作系統(tǒng)-PalmOS3Com公司的Palm專用于掌上電腦,在PDA市場上占有很大的市場份額,它具有開放的操作系統(tǒng)應(yīng)用程序接口,開發(fā)商可以根據(jù)需要自行開發(fā)所需要的應(yīng)用程序。Palm操作系統(tǒng)是最早的PDA操作系統(tǒng)(1996),因而具有最多的應(yīng)用軟件支持。PalmOS的最大優(yōu)點(diǎn)簡單易用占用系統(tǒng)資源少1996-PalmPilot10002002-handera3302009-PalmPre20新一代嵌入式操作系統(tǒng)簡介-WebOS(1/2)WebOS-互聯(lián)網(wǎng)操作系統(tǒng)WebOS概念最早由Syracuse大學(xué)(雪城大學(xué))的G.C.Fox于1995年提出,當(dāng)時稱之為WebWindowsWebOS是運(yùn)行在瀏覽器中的虛擬操作系統(tǒng)能夠在WebOS中打開應(yīng)用程序(執(zhí)行Web服務(wù))提供了WebOSAPI,能夠根據(jù)WebOSAPI進(jìn)行編程WebOS的功能通過瀏覽器,在WebOS上運(yùn)用基于Web的各種在線應(yīng)用,實現(xiàn)操作系統(tǒng)上的各種操作,包括:文檔的存儲、編輯、媒體播放、地圖應(yīng)用、即時通訊等等。21新一代嵌入式操作系統(tǒng)簡介-WebOS(2/2)現(xiàn)有WebOS情況Google(Android)、Palm(WebOS)是典型的WebOS已有多于30個的WebOS系統(tǒng),大都處于Alpha或者beta狀態(tài)I-CubeEyeOSDesktoptwoYouOSCraythurG.ho.stTomOSWebOSGoowyGlideOrcaPurefectSSOE22I-Cube提供1G的在線存儲和文件共享,多媒體支持和一些常用辦公工具。同時擁有一個email客戶端和編程開發(fā)工具。23EyeOS開源軟件,可以下載使用,也可以在其服務(wù)器上在線使用。擁有豐富的網(wǎng)絡(luò)程序,以及辦公套件。24Desktoptwo基于Flash的WebOS提供了搜索、時鐘、MP3播放器、RSS閱讀器、即時通訊工具、OpenOffice、HTML編輯器,以及筆記本等工具。25YouOS提供了很多有用的應(yīng)用程序聊天客戶端、IM軟件、文件瀏覽器、RSS閱讀器等等。程序執(zhí)行的響應(yīng)速度比較快。26Craythur/G.ho.st類似于Windows的操作界面CraythurG.ho.st27國產(chǎn)WebOSTomOS(千腦)epokos28

課程大綱嵌入式實時操作系統(tǒng)概況嵌入式實時操作系統(tǒng)特點(diǎn)嵌入式實時操作系統(tǒng)功能簡介

ARM-Linux嵌入式操作系統(tǒng)內(nèi)核實驗29嵌入式實時操作系統(tǒng)內(nèi)核重要特性嵌入式實時操作系統(tǒng)內(nèi)核的重要特性實時性可裁剪、可配置性可靠性支持應(yīng)用編程接口支持可移植性30嵌入式實時操作系統(tǒng)內(nèi)核實時性能指標(biāo)嵌入式實時操作系統(tǒng)內(nèi)核的實時性能定量指標(biāo)包括任務(wù)上下文切換時間中斷延遲時間中斷響應(yīng)時間中斷恢復(fù)時間任務(wù)響應(yīng)時間

31嵌入式實時操作系統(tǒng)內(nèi)核實時性能關(guān)鍵指標(biāo)最大中斷禁止時間反映內(nèi)核對外界停止中斷響應(yīng)的最長時間任務(wù)上下文切換時間系統(tǒng)中最頻繁發(fā)生的動作,影響整個系統(tǒng)性能包括:保存當(dāng)前任務(wù)上下文、選擇新任務(wù),及恢復(fù)新任務(wù)上下文三個階段32提高內(nèi)核實時性的方法-任務(wù)調(diào)度算法嵌入式實時操作系統(tǒng)-搶占式調(diào)度提高對關(guān)鍵性任務(wù)響應(yīng)關(guān)注最壞執(zhí)行時間函數(shù)的可重入性設(shè)計通用操作系統(tǒng)-非搶占式調(diào)度公平和最小化任務(wù)平均響應(yīng)時間提高系統(tǒng)吞吐率33提高內(nèi)核實時性的方法-可搶占內(nèi)核嵌入式實時操作系統(tǒng)-可搶占內(nèi)核內(nèi)核服務(wù)可響應(yīng)中斷中斷退出后可進(jìn)行調(diào)度通用操作系統(tǒng)-不可搶占內(nèi)核內(nèi)核服務(wù)不能被中斷內(nèi)核服務(wù)可中斷,但不調(diào)度低優(yōu)先級內(nèi)核服務(wù)ISR高優(yōu)先級低優(yōu)先級內(nèi)核服務(wù)ISR高優(yōu)先級34提高內(nèi)核實時性的方法-內(nèi)核關(guān)中斷時間嵌入式實時操作系統(tǒng)小內(nèi)核、微內(nèi)核內(nèi)核搶占點(diǎn)等技術(shù)通用操作系統(tǒng)內(nèi)核規(guī)模大中斷禁止時間長RTEMS的內(nèi)核程序示例void_Thread_Resume(

Thread_Control*the_thread,

booleanforce){

ISR_Levellevel;

States_Control

current_state;

_ISR_Disable(level);

---從該行代碼開始關(guān)中斷,進(jìn)行內(nèi)核互斥操作

if(force==TRUE)

the_thread->suspend_count=0;else

the_thread->suspend_count--;if(the_thread->suspend_count>0){_ISR_Enable(level);

return;}

current_state=the_thread->current_state;if(current_state&STATES_SUSPENDED){

current_state=

the_thread->current_state=_States_Clear(STATES_SUSPENDED,current_state);if(_States_Is_ready(current_state)){_Priority_Add_to_bit_map(&the_thread->Priority_map);_Chain_Append_unprotected(the_thread->ready,&the_thread->Object.Node);_ISR_Flash(level);---該行代碼為內(nèi)核搶占點(diǎn)

if(the_thread->current_priority<_Thread_Heir->current_priority){_Thread_Heir=the_thread;if(_Thread_Executing->is_preemptible||

the_thread->current_priority==0)_Context_Switch_necessary=TRUE;}}}

_ISR_Enable(level);

---從該行代碼開始開中斷,結(jié)束內(nèi)核互斥操作}35提高內(nèi)核實時性的方法-系統(tǒng)運(yùn)行狀態(tài)許多嵌入式操作系統(tǒng)不劃分“系統(tǒng)空間”和“用戶空間”,如VxWorks、RTEMS等,操作系統(tǒng)內(nèi)核與外圍應(yīng)用程序之間不再有物理的邊界,系統(tǒng)中“進(jìn)程”實際上都是內(nèi)核線程。操作系統(tǒng)、應(yīng)用程序均運(yùn)行在特權(quán)級別的優(yōu)缺點(diǎn):優(yōu)點(diǎn):減少由于空間切換導(dǎo)致的執(zhí)行開銷,提高實時性。缺陷:應(yīng)用程序可破壞操作系統(tǒng)內(nèi)核,導(dǎo)致系統(tǒng)崩潰。操作系統(tǒng)內(nèi)核應(yīng)用程序系統(tǒng)Ring0:特權(quán)級Ring1Ring2Ring3:用戶級操作系統(tǒng)、應(yīng)用程序通用系統(tǒng)運(yùn)行狀態(tài)實時系統(tǒng)運(yùn)行狀態(tài)系統(tǒng)調(diào)用陷入內(nèi)核36不支持虛擬存儲:如果采用虛存技術(shù),一個實時任務(wù)執(zhí)行的最壞情況是每次訪存都需要調(diào)頁,如此累計起來的該任務(wù)在最壞情況下的運(yùn)行時間是不可預(yù)測的,因此實時性無法得到保證。許多嵌入式操作系統(tǒng)不直接支持虛擬存儲管理技術(shù)。不支持動態(tài)內(nèi)存分配:由于動態(tài)內(nèi)存分配具有時間及分配結(jié)果的不確定性,因而在強(qiáng)實時型系統(tǒng)(OSEK)中采用靜態(tài)內(nèi)存分配方法,即在系統(tǒng)初始化時,為每個實時任務(wù)劃分固定的內(nèi)存區(qū)域,系統(tǒng)運(yùn)行只使用內(nèi)存,而不再分配內(nèi)存和釋放內(nèi)存。提高內(nèi)核實時性的方法-存儲管理機(jī)制37資源有限等待:任務(wù)沒能獲得需要的資源會被阻塞。如果資源不是任務(wù)繼續(xù)運(yùn)行必備的,任務(wù)可選擇有限等待該資源。提高內(nèi)核實時性的方法-任務(wù)互斥、同步優(yōu)先級逆轉(zhuǎn)問題解決—搶占式任務(wù)調(diào)度中的資源競爭:1997年7月4日,火星探路者在火星表面成功著陸并進(jìn)行觀測,發(fā)回了各種火星表面全景圖,被大肆宣稱為“完美”。但是在著陸后的第10天,也就是開始采集氣象資料后不久,探路者開始犯傻,反復(fù)無規(guī)律地重啟,每次重啟都造成了數(shù)據(jù)丟失,在每天的記者招待會上這都是記者們不會放過的最熱門的話題。JPL(美國國家航空航天局噴氣推進(jìn)實驗室)的工程師們花了相當(dāng)多的時間在實驗室仿真,希望能夠再現(xiàn)引起重啟的情況。幾天過去了,一個清晨,幾乎所有的工程師都走了,只剩下最后一位Mr.So-So的時候,火星上那臺探路者兄弟身上發(fā)生的重啟情況終于被再現(xiàn)了。經(jīng)過數(shù)據(jù)分析,得出了原因——優(yōu)先級逆轉(zhuǎn)。38提高內(nèi)核實時性的方法——優(yōu)先級逆轉(zhuǎn)問題嵌入式實時操作系統(tǒng)——優(yōu)先級逆轉(zhuǎn)現(xiàn)象采用優(yōu)先級繼承協(xié)議消除39中斷嵌套處理:確保高優(yōu)先級的中斷能及時處理。中斷服務(wù)層次化:對中斷的處理,不需要完全由中斷服務(wù)程序(ISR)進(jìn)行處理,采用ISR與任務(wù)相結(jié)合的方法處理,如eCos系統(tǒng),分為兩個層次進(jìn)行:ISR、中斷滯后服務(wù)程序DSR。ISR在響應(yīng)中斷時立即調(diào)用,DSR由ISR發(fā)出請求后調(diào)用。提高內(nèi)核實時性的方法-中斷處理任務(wù)執(zhí)行ISRDSR1、ISR促使DSR就緒2、ISR退出DSR參與調(diào)度中斷請求40可裁剪性:用以滿足不同復(fù)雜程度的應(yīng)用需求。嵌入式環(huán)境資源配置及需求情況各異,一般只要求嵌入式操作系統(tǒng)的功能子集,因而需要裁剪掉部分功能,并保證功能的相對完整性。內(nèi)核的可裁剪程度取決與模塊之間的耦合程度。裁剪方法:模塊級裁剪、函數(shù)級裁剪、代碼級裁剪一個最小的多任務(wù)嵌入式軟件包括:Bootloader具有任務(wù)管理及定時功能的基本內(nèi)核一個初始化任務(wù)可配置性:可根據(jù)應(yīng)用需求,配置系統(tǒng)任務(wù)數(shù)目、調(diào)度算法、任務(wù)堆棧等。嵌入式實時操作系統(tǒng)內(nèi)核的可裁剪、可配置性41裁剪目標(biāo):內(nèi)核<30K,現(xiàn)有內(nèi)核>100K模塊級裁剪:通過條件編譯,裁剪不需要的模塊,內(nèi)核約35K函數(shù)級裁剪:裁剪未被引用的函數(shù)代碼級裁剪:修改代碼,如合并功能相似函數(shù)優(yōu)化算法實現(xiàn)方法降低模塊耦合度,裁剪模塊未被引用函數(shù)嵌入式實時操作系統(tǒng)內(nèi)核裁剪舉例-VxWorks內(nèi)部引用函數(shù)外部引用函數(shù)42代碼級裁剪:降低模塊耦合度,裁剪模塊嵌入式實時操作系統(tǒng)內(nèi)核裁剪舉例-VxWorks內(nèi)核模塊耦合性分析43可靠性對于實時系統(tǒng)比非實時應(yīng)用系統(tǒng)更為重要。嵌入式實時操作系統(tǒng)內(nèi)核提供諸多機(jī)制進(jìn)行保障:異步信號、定時器、異常處理、用戶擴(kuò)展、內(nèi)存保護(hù)等。典型內(nèi)核可靠性增強(qiáng)技術(shù):內(nèi)存釋放清理冗余內(nèi)存分配內(nèi)存冗余編碼內(nèi)存保護(hù)增強(qiáng)看門狗支持增強(qiáng)嵌入式實時操作系統(tǒng)內(nèi)核的可靠性44每一個嵌入式操作系統(tǒng)提供的應(yīng)用編程接口(系統(tǒng)調(diào)用)的功能和種類都不相同,種類越多、功能越強(qiáng)越好。應(yīng)用編程接口的標(biāo)準(zhǔn)化:POSIX(aPortableOperatingSystemInterfacebasedonUnix)實時系統(tǒng)標(biāo)準(zhǔn),POSIX1003.1c、1003.1d汽車電子標(biāo)準(zhǔn):OSEK航空電子標(biāo)準(zhǔn):ARINC653(APEX接口)電氣電子標(biāo)準(zhǔn):IEC61508信息家電規(guī)范:T-Kernel嵌入式實時操作系統(tǒng)內(nèi)核的應(yīng)用編程接口45EAL/CC:CC安全評估是1999年起效的一項國際安全標(biāo)準(zhǔn),共分為7級安全評估。VxWorks、Integrity均通過了EAL6+認(rèn)證。DO-178B/ED-12B:美國航空無線電技術(shù)委員會(RTCA)提出,被美國聯(lián)邦航空局/歐洲航空管理部門接受的機(jī)載軟件適航認(rèn)證。VxWorks、Integrity、μC/OSII均得到LevelA認(rèn)證。OSEK/VDX:歐共體汽車產(chǎn)業(yè)聯(lián)盟規(guī)定的汽車電子嵌入式系統(tǒng)標(biāo)準(zhǔn)。風(fēng)河的MotoWorks、微軟的WindowsAutomotive、NucleusOSEK、OSEKturbo均得到認(rèn)證。嵌入式實時操作系統(tǒng)的安全性認(rèn)證46

課程大綱嵌入式實時操作系統(tǒng)概況嵌入式實時操作系統(tǒng)特點(diǎn)嵌入式實時操作系統(tǒng)功能簡介

ARM-Linux嵌入式操作系統(tǒng)內(nèi)核實驗47嵌入式實時操作系統(tǒng)內(nèi)核基本功能嵌入式實時操作系統(tǒng)內(nèi)核的基本功能實時多任務(wù)管理中斷與異常管理共享資源互斥管理多任務(wù)同步與互斥內(nèi)存管理時鐘定時器管理電源管理481970年,美國UIUC大學(xué)的C.Liu、Jane教授建立了RTSL(realtimesystemlab)實驗室。1973年,C.Liu、Layland在ACM雜志上,提出并分析了單調(diào)速率調(diào)度算法(RateMonotonic,RM)和時限調(diào)度算法(Deadline),開辟了實時系統(tǒng)搶占式任務(wù)調(diào)度算法、可調(diào)度性分析領(lǐng)域的先河。實時內(nèi)核基本功能-任務(wù)調(diào)度49在實時任務(wù)搶占式調(diào)度算法中,根據(jù)任務(wù)的優(yōu)先級確定時機(jī),實時任務(wù)調(diào)度算法可分為靜態(tài)調(diào)度和動態(tài)調(diào)度兩類。實時內(nèi)核基本功能-實時任務(wù)調(diào)度算法分類實時任務(wù)調(diào)度算法靜態(tài)調(diào)度算法動態(tài)調(diào)度算法執(zhí)行時間相關(guān)任務(wù)周期相關(guān)任務(wù)CPU使用率任務(wù)緊急程度截止時間優(yōu)先(EDF)最小松弛度優(yōu)先(LLF)50單調(diào)速率調(diào)度算法(C.Liu、Layland;ACM,1973)現(xiàn)代實時系統(tǒng)任務(wù)調(diào)度的理論基礎(chǔ)最佳的靜態(tài)調(diào)度算法算法建立在下述假設(shè)基礎(chǔ)上所有任務(wù)都是周期任務(wù)每個任務(wù)執(zhí)行截止期等于該任務(wù)的周期每個任務(wù)在周期中,執(zhí)行時間固定,保持常量任務(wù)之間不通信,也不同步任務(wù)可以在任何位置被搶占,不存在臨界區(qū)不可調(diào)度:指某一個任務(wù)在周期內(nèi)無法完成任務(wù),即:任務(wù)的執(zhí)行結(jié)束時間>任務(wù)的截止期實時內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例51不可調(diào)度情況舉例假設(shè)系統(tǒng)存在任務(wù)、執(zhí)行時間及運(yùn)行周期如下實時內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例任務(wù)執(zhí)行時間周期優(yōu)先級T1121T2142T33830246810121416T1T2T3超周期52RM算法規(guī)定:任務(wù)的優(yōu)先級與任務(wù)的周期表現(xiàn)為單調(diào)函數(shù),任務(wù)周期越短,優(yōu)先級越高。對RM算法研究的貢獻(xiàn)在于提出了臨界時間概念,用于判定調(diào)度過程中的最壞情況;證明了RM算法是靜態(tài)調(diào)度算法中的最優(yōu)性;提出了一個RM算法中任務(wù)可調(diào)度性分析的充分條件。臨界時間:一個任務(wù)響應(yīng)所需的最大時間稱為臨界時間。如果所有任務(wù)的臨界時間均小于任務(wù)周期,則任務(wù)可調(diào)度。一個任務(wù)什么時候到達(dá)其臨界時間?定理:任何任務(wù)在與比其優(yōu)先級高的所有任務(wù)同時被觸發(fā)時,將達(dá)到其臨界時間。實時內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例53定理:如果一個任務(wù)集能夠被其他靜態(tài)算法調(diào)度,那么RM算法就一定能調(diào)度這個任務(wù)集,即RM調(diào)度是最優(yōu)的靜態(tài)調(diào)度算法。證明:采用交換法思路假設(shè)一個任務(wù)集S采用其他靜態(tài)優(yōu)先級算法可以調(diào)度,設(shè)ti和tj是其中兩個優(yōu)先級相鄰的任務(wù),Ti>Tj,而Pi<Pj,將ti和tj的優(yōu)先級互換,可以證明這時S仍然可以調(diào)度:交換這兩個任務(wù)優(yōu)先級,不會影響其它任務(wù)的完成時間;Tj執(zhí)行時間提前,因而必定不會超過截止時間;Ti的執(zhí)行時間=高優(yōu)先級任務(wù)的執(zhí)行時間+tj執(zhí)行時間+ti執(zhí)行時間<Tj<Ti,因而,Ti執(zhí)行也不會超過截止時間。按照上述交換方法,任何靜態(tài)優(yōu)先級調(diào)度最終都可以轉(zhuǎn)換成RM調(diào)度。實時內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例54RM算法中任務(wù)可調(diào)度性分析的一個充分條件:其中,C為任務(wù)執(zhí)行時間,T為任務(wù)周期實時內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例任務(wù)數(shù)量可調(diào)度的CPU使用率任務(wù)數(shù)量可調(diào)度的CPU使用率1150.74320.82860.73530.780…………40.757∞ln2≈0.6931CPU使用率上界55調(diào)度可判定性物理意義:可調(diào)度性判定舉例:

1/2+1/4+3/8=1.125>1>0.780,不可調(diào)度!實時內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例任務(wù)執(zhí)行時間周期優(yōu)先級T1121T2142T33830CPU使用率上界1可調(diào)度不可判定不可調(diào)度56中斷是一種異步機(jī)制,中斷服務(wù)程序(ISR)不需要內(nèi)核的調(diào)度就可以執(zhí)行。但I(xiàn)SR要和其他應(yīng)用任務(wù)之間協(xié)作,以快速、合理響應(yīng)外部事件。內(nèi)核提供與中斷相關(guān)的功能:掛接ISR:中斷向量與處理函數(shù)關(guān)聯(lián)獲取ISR入口地址獲取中斷嵌套層數(shù)開/關(guān)中斷實時內(nèi)核基本功能-中斷管理57中斷服務(wù)程序設(shè)計中需特別注意中斷沖突問題:當(dāng)ISR、ISR之間,或ISR、任務(wù)之間共享變量,或調(diào)用含有共享變量的函數(shù)時,需防止共享變量沖突;當(dāng)ISR、ISR之間,或ISR、任務(wù)之間共享寄存器,或調(diào)用含有共享寄存器的函數(shù)時,需防止寄存器沖突。ISR不允許執(zhí)行I/O操作,或調(diào)用含有I/O操作的函數(shù)。ISR不允許申請信號量(但可以釋放信號量?。?,或調(diào)用含有申請信號量操作的函數(shù)(如malloc)。實時內(nèi)核基本功能-中斷管理58實時內(nèi)核基本功能-共享資源互斥實現(xiàn)共享資源互斥的方法很多,不同之處在于互斥的影響范圍和程度不同,常用的方法包括:關(guān)中斷:互斥力度最強(qiáng),但可能降低系統(tǒng)實時性測試并置位指令:利用某個全局變量判斷資源互斥禁止任務(wù)搶占:對任務(wù)調(diào)度上鎖,但不禁止中斷使用信號量:對共享資源上鎖,比關(guān)中斷、禁止任務(wù)搶占粒度更精細(xì)lock=0;key=1;do{_asm(“xchg(&lock,&key)”);}while(key);進(jìn)入臨界區(qū)代碼;checkTaskSwitch:

cmpl $0,WIND_TCB_LOCK_CNT(%edx)

jne

checkTaskReady59實時內(nèi)核基本功能-共享資源互斥方法比較共享資源互斥的設(shè)計原則:當(dāng)任務(wù)之間互斥,可使用所有方法,測試/置位、信號量方法,對其他任務(wù)運(yùn)行的干擾?。划?dāng)ISR之間互斥,只能使用關(guān)中斷法;當(dāng)ISR與任務(wù)之間互斥,只能使用關(guān)中斷法。60同步與通訊的需求任務(wù)~任務(wù)之間:單向、雙向ISR~任務(wù)之間:單向常用的同步、通訊機(jī)制:共享內(nèi)存信號量消息:郵箱、消息隊列事件信號管道實時內(nèi)核基本功能-同步與通訊61共享數(shù)據(jù)結(jié)構(gòu)最直接的任務(wù)間通信方式全局變量、線性緩沖區(qū)、循環(huán)緩沖區(qū)、鏈表,可以被不同上下文環(huán)境中運(yùn)行的代碼直接訪問需采用互斥方法進(jìn)行保護(hù)實時內(nèi)核基本功能-通訊62信號量:解決任務(wù)間同步與互斥的主要手段。常用信號量分類二元信號量(binary):快速、通用,對互斥與同步做了優(yōu)化?;コ庑盘柫浚╩utex):針對互斥問題進(jìn)行優(yōu)化的二元信號量。遞歸資源訪問:如遞歸調(diào)用包含獲取信號量的函數(shù)體安全刪除問題:已獲取信號量的任務(wù)不被意外刪除計數(shù)信號量(counting):控制共享資源的多個實例。被信號量阻塞的任務(wù)排隊策略FIFO優(yōu)先級排序?qū)崟r內(nèi)核基本功能-同步、互斥63消息是內(nèi)存空間中一段長度可變的緩沖區(qū)。是一種在任務(wù)之間、ISR~任務(wù)之間的通訊機(jī)制,注意:ISR只可以寫消息,但不能讀消息!常用消息分類:郵箱(mailbox):傳遞簡單消息消息隊列(messagequeue):傳遞可變長的復(fù)雜消息消息進(jìn)入隊列的策略FIFO優(yōu)先級排序?qū)崟r內(nèi)核基本功能-通訊64管道管道是一個虛設(shè)備,提供了通過I/O設(shè)備接口訪問消息隊列的一個界面。任務(wù)可以使用標(biāo)準(zhǔn)的I/O接口open、read、write,以及ioctl調(diào)用。事件用于實現(xiàn)任務(wù)之間、ISR~任務(wù)之間多對一、多對多的同步操作,通訊數(shù)據(jù)量小,主要動作分為接收事件、發(fā)送事件。信號用于實現(xiàn)任務(wù)之間、ISR~任務(wù)之間的異步操作。實時內(nèi)核基本功能-同步與通訊65在不更改內(nèi)核代碼的情況下,在內(nèi)核調(diào)用點(diǎn)擴(kuò)展用戶功能。內(nèi)核可提供的擴(kuò)展點(diǎn)包括:任務(wù)創(chuàng)建、任務(wù)啟動、任務(wù)刪除、任務(wù)上下文切換、任務(wù)退出例如:在任務(wù)上下文切換時擴(kuò)展增加功能實時內(nèi)核基本功能-用戶擴(kuò)展管理taskSwitchTable函數(shù)指針4函數(shù)指針3函數(shù)指針2函數(shù)指針1switchTasks:

。。。

cmpl $0,_taskSwitchTable

jne

doSwitchHooksdoSwitchHooks

遍歷taskSwitchTable,執(zhí)行動作函數(shù)執(zhí)行動作1執(zhí)行動作2執(zhí)行動作3執(zhí)行動作466

課程大綱嵌入式實時操作系統(tǒng)概況嵌入式實時操作系統(tǒng)特點(diǎn)嵌入式實時操作系統(tǒng)功能簡介

ARM-Linux嵌入式操作系統(tǒng)內(nèi)核實驗67兩個問題-問題1問題1:嵌入式軟件系統(tǒng)如何獲取操作系統(tǒng)內(nèi)核提供的各類功能服務(wù)?什么方法?答案:系統(tǒng)調(diào)用68庫函數(shù)與系統(tǒng)調(diào)用的關(guān)系庫函數(shù)是C語言的一部分,系統(tǒng)調(diào)用是操作系統(tǒng)的一部分。庫函數(shù)與操作系統(tǒng)內(nèi)核提供的系統(tǒng)調(diào)用關(guān)系,可分為如下三類:1:0,如:strcpy、strcmp、strstr等;1:1,如:printf、fopen、fread等1:nprintf()…write()…應(yīng)用軟件sys_write()C運(yùn)行庫操作系統(tǒng)內(nèi)核用戶級別特權(quán)級別69ARM-LINUX系統(tǒng)調(diào)用原理printf()…write()…應(yīng)用軟件sys_writeC運(yùn)行庫操作系統(tǒng)內(nèi)核用戶級別特權(quán)級別軟中斷指令swi系統(tǒng)調(diào)用號系統(tǒng)調(diào)用參數(shù)系統(tǒng)調(diào)用映射表call.S70兩個問題-問題2問題2:從應(yīng)用程序訪問系統(tǒng)調(diào)用方法有哪些?答案:

1、由庫函數(shù)訪問系統(tǒng)調(diào)用

2、通過匯編訪問系統(tǒng)調(diào)用71實驗?zāi)康氖煜は到y(tǒng)調(diào)用原理熟悉ARM-Linux系統(tǒng)調(diào)用擴(kuò)展方法熟悉操作系統(tǒng)內(nèi)核編譯方法熟悉通過匯編訪問系統(tǒng)調(diào)用方法72實驗三內(nèi)容清單創(chuàng)建和使用不帶參數(shù)的系統(tǒng)調(diào)用(必做)創(chuàng)建和使用帶1個參數(shù)的系統(tǒng)調(diào)用(必做)創(chuàng)建和使用帶5個參數(shù)的系統(tǒng)調(diào)用(必做)創(chuàng)建和使用帶6個參數(shù)的系統(tǒng)調(diào)用(選做)73必做一創(chuàng)建不帶參數(shù)的系統(tǒng)調(diào)用(1/4)在arch/arm/kernel/目錄下創(chuàng)建一個新的文件mysyscall.c

在arch/arm/kernel/call.S

中添加新的系統(tǒng)調(diào)用,新的系統(tǒng)調(diào)用號0x900000+226voidhello(void)

{

printk(“helloworld\n”);}

.longSYMBOL_NAME(sys_gettid).longSYMBOL_NAME(sys_readahead).longSYMBOL_NAME(hello) __syscall_end:.rept

NR_syscalls-(__syscall_end-__syscall_start)/4.longSYMBOL_NAME(sys_ni_syscall).endr74修改arch/arm/kernel/目錄下的Makefile文件,在obj-y后面添加mysyscall.o

編譯內(nèi)核obj-y:=arch.o

compat.o

dma.o$(ENTRY_OBJ)entry-common.o

irq.o\

process.o

ptrace.o

semaphore.o

setup.o

signal.o

sys_arm.o\

time.o

traps.o$(O_OBJS_$(MACHINE))mysyscall.o必做一創(chuàng)建不帶參數(shù)的系統(tǒng)調(diào)用(2/4)75一個測試程序來使用新的系統(tǒng)調(diào)用:test.h:#define sys_hello() do{__asm____volatile__("swi0x900000+226\n\t");}while(0)test.c:#include<stdio.h>#include“test.h”int

main(void){

printf("starthello\n");

sys_hello();

printf("endhello\n");}必做一創(chuàng)建不帶參數(shù)的系統(tǒng)調(diào)用(3/4)注意:上面的例子是直接用匯編使用系統(tǒng)調(diào)用的,而不是使用libc庫函數(shù),因為應(yīng)用程序使用的是新添加的系統(tǒng)調(diào)用,而libc中并沒有,所以只能直接用匯編。76然后執(zhí)行啟動開發(fā)板,將應(yīng)用程序test通過zmodem協(xié)議下載到開發(fā)板的文件系統(tǒng)目錄下,在板子上運(yùn)行test程序所得結(jié)果如下:

#arm-linux-gcc

test.c-otest#./teststarthellohelloworldendhello必做一創(chuàng)建不帶參數(shù)的系統(tǒng)調(diào)用(4/4)77進(jìn)而,實現(xiàn)一個帶參數(shù)的系統(tǒng)調(diào)用必做二創(chuàng)建帶一個參數(shù)的系統(tǒng)調(diào)用test.c:#include<stdio.h>#include“test.h”int

main(void){char*str=“helloworld\n”;

printf("starthello\n");

sys_hello(str);

printf("endhello\n");}78創(chuàng)建和使用不帶參數(shù)的系統(tǒng)調(diào)用實驗代碼如下:test.h:#define sys_hello() do{__asm____volatile__("swi0x900000+226\n\t");}while(0)test.c:#include<stdio.h>#include“test.h”int

main(void){

printf("starthello\n");

sys_hello();

printf("endhello\n");}操作系統(tǒng)內(nèi)核編程風(fēng)格說明-

#define中的do{}while(0)作用(1/2)79在宏定義中的do{}while(0)結(jié)構(gòu)將宏定義中的多條執(zhí)行語句進(jìn)行了保護(hù),可以確保語句的模塊化:#defineSWAP(a,b)do{a=a+b;b=a-b;a=a-b;}while(0)if(x>y)

SWAP(x,y);else

溫馨提示

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

評論

0/150

提交評論