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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

Embedix

RTLinux

RTAIMontaVistaLinux

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

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

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

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

Thread_Control*the_thread,

booleanforce){

ISR_Levellevel;

States_Control

current_state;

_ISR_Disable(level);

---從該行代碼開(kāi)始關(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);

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

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

ARM-Linux嵌入式操作系統(tǒng)內(nèi)核實(shí)驗(yàn)47嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核基本功能嵌入式實(shí)時(shí)操作系統(tǒng)內(nèi)核的基本功能實(shí)時(shí)多任務(wù)管理中斷與異常管理共享資源互斥管理多任務(wù)同步與互斥內(nèi)存管理時(shí)鐘定時(shí)器管理電源管理481970年,美國(guó)UIUC大學(xué)的C.Liu、Jane教授建立了RTSL(realtimesystemlab)實(shí)驗(yàn)室。1973年,C.Liu、Layland在ACM雜志上,提出并分析了單調(diào)速率調(diào)度算法(RateMonotonic,RM)和時(shí)限調(diào)度算法(Deadline),開(kāi)辟了實(shí)時(shí)系統(tǒng)搶占式任務(wù)調(diào)度算法、可調(diào)度性分析領(lǐng)域的先河。實(shí)時(shí)內(nèi)核基本功能-任務(wù)調(diào)度49在實(shí)時(shí)任務(wù)搶占式調(diào)度算法中,根據(jù)任務(wù)的優(yōu)先級(jí)確定時(shí)機(jī),實(shí)時(shí)任務(wù)調(diào)度算法可分為靜態(tài)調(diào)度和動(dòng)態(tài)調(diào)度兩類(lèi)。實(shí)時(shí)內(nèi)核基本功能-實(shí)時(shí)任務(wù)調(diào)度算法分類(lèi)實(shí)時(shí)任務(wù)調(diào)度算法靜態(tài)調(diào)度算法動(dòng)態(tài)調(diào)度算法執(zhí)行時(shí)間相關(guān)任務(wù)周期相關(guān)任務(wù)CPU使用率任務(wù)緊急程度截止時(shí)間優(yōu)先(EDF)最小松弛度優(yōu)先(LLF)50單調(diào)速率調(diào)度算法(C.Liu、Layland;ACM,1973)現(xiàn)代實(shí)時(shí)系統(tǒng)任務(wù)調(diào)度的理論基礎(chǔ)最佳的靜態(tài)調(diào)度算法算法建立在下述假設(shè)基礎(chǔ)上所有任務(wù)都是周期任務(wù)每個(gè)任務(wù)執(zhí)行截止期等于該任務(wù)的周期每個(gè)任務(wù)在周期中,執(zhí)行時(shí)間固定,保持常量任務(wù)之間不通信,也不同步任務(wù)可以在任何位置被搶占,不存在臨界區(qū)不可調(diào)度:指某一個(gè)任務(wù)在周期內(nèi)無(wú)法完成任務(wù),即:任務(wù)的執(zhí)行結(jié)束時(shí)間>任務(wù)的截止期實(shí)時(shí)內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例51不可調(diào)度情況舉例假設(shè)系統(tǒng)存在任務(wù)、執(zhí)行時(shí)間及運(yùn)行周期如下實(shí)時(shí)內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例任務(wù)執(zhí)行時(shí)間周期優(yōu)先級(jí)T1121T2142T33830246810121416T1T2T3超周期52RM算法規(guī)定:任務(wù)的優(yōu)先級(jí)與任務(wù)的周期表現(xiàn)為單調(diào)函數(shù),任務(wù)周期越短,優(yōu)先級(jí)越高。對(duì)RM算法研究的貢獻(xiàn)在于提出了臨界時(shí)間概念,用于判定調(diào)度過(guò)程中的最壞情況;證明了RM算法是靜態(tài)調(diào)度算法中的最優(yōu)性;提出了一個(gè)RM算法中任務(wù)可調(diào)度性分析的充分條件。臨界時(shí)間:一個(gè)任務(wù)響應(yīng)所需的最大時(shí)間稱(chēng)為臨界時(shí)間。如果所有任務(wù)的臨界時(shí)間均小于任務(wù)周期,則任務(wù)可調(diào)度。一個(gè)任務(wù)什么時(shí)候到達(dá)其臨界時(shí)間?定理:任何任務(wù)在與比其優(yōu)先級(jí)高的所有任務(wù)同時(shí)被觸發(fā)時(shí),將達(dá)到其臨界時(shí)間。實(shí)時(shí)內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例53定理:如果一個(gè)任務(wù)集能夠被其他靜態(tài)算法調(diào)度,那么RM算法就一定能調(diào)度這個(gè)任務(wù)集,即RM調(diào)度是最優(yōu)的靜態(tài)調(diào)度算法。證明:采用交換法思路假設(shè)一個(gè)任務(wù)集S采用其他靜態(tài)優(yōu)先級(jí)算法可以調(diào)度,設(shè)ti和tj是其中兩個(gè)優(yōu)先級(jí)相鄰的任務(wù),Ti>Tj,而Pi<Pj,將ti和tj的優(yōu)先級(jí)互換,可以證明這時(shí)S仍然可以調(diào)度:交換這兩個(gè)任務(wù)優(yōu)先級(jí),不會(huì)影響其它任務(wù)的完成時(shí)間;Tj執(zhí)行時(shí)間提前,因而必定不會(huì)超過(guò)截止時(shí)間;Ti的執(zhí)行時(shí)間=高優(yōu)先級(jí)任務(wù)的執(zhí)行時(shí)間+tj執(zhí)行時(shí)間+ti執(zhí)行時(shí)間<Tj<Ti,因而,Ti執(zhí)行也不會(huì)超過(guò)截止時(shí)間。按照上述交換方法,任何靜態(tài)優(yōu)先級(jí)調(diào)度最終都可以轉(zhuǎn)換成RM調(diào)度。實(shí)時(shí)內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例54RM算法中任務(wù)可調(diào)度性分析的一個(gè)充分條件:其中,C為任務(wù)執(zhí)行時(shí)間,T為任務(wù)周期實(shí)時(shí)內(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)度!實(shí)時(shí)內(nèi)核基本功能-任務(wù)調(diào)度經(jīng)典算法舉例任務(wù)執(zhí)行時(shí)間周期優(yōu)先級(jí)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ù)開(kāi)/關(guān)中斷實(shí)時(shí)內(nèi)核基本功能-中斷管理57中斷服務(wù)程序設(shè)計(jì)中需特別注意中斷沖突問(wèn)題:當(dāng)ISR、ISR之間,或ISR、任務(wù)之間共享變量,或調(diào)用含有共享變量的函數(shù)時(shí),需防止共享變量沖突;當(dāng)ISR、ISR之間,或ISR、任務(wù)之間共享寄存器,或調(diào)用含有共享寄存器的函數(shù)時(shí),需防止寄存器沖突。ISR不允許執(zhí)行I/O操作,或調(diào)用含有I/O操作的函數(shù)。ISR不允許申請(qǐng)信號(hào)量(但可以釋放信號(hào)量?。蛘{(diào)用含有申請(qǐng)信號(hào)量操作的函數(shù)(如malloc)。實(shí)時(shí)內(nèi)核基本功能-中斷管理58實(shí)時(shí)內(nèi)核基本功能-共享資源互斥實(shí)現(xiàn)共享資源互斥的方法很多,不同之處在于互斥的影響范圍和程度不同,常用的方法包括:關(guān)中斷:互斥力度最強(qiáng),但可能降低系統(tǒng)實(shí)時(shí)性測(cè)試并置位指令:利用某個(gè)全局變量判斷資源互斥禁止任務(wù)搶占:對(duì)任務(wù)調(diào)度上鎖,但不禁止中斷使用信號(hào)量:對(duì)共享資源上鎖,比關(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實(shí)時(shí)內(nèi)核基本功能-共享資源互斥方法比較共享資源互斥的設(shè)計(jì)原則:當(dāng)任務(wù)之間互斥,可使用所有方法,測(cè)試/置位、信號(hào)量方法,對(duì)其他任務(wù)運(yùn)行的干擾??;當(dāng)ISR之間互斥,只能使用關(guān)中斷法;當(dāng)ISR與任務(wù)之間互斥,只能使用關(guān)中斷法。60同步與通訊的需求任務(wù)~任務(wù)之間:?jiǎn)蜗颉㈦p向ISR~任務(wù)之間:?jiǎn)蜗虺S玫耐?、通訊機(jī)制:共享內(nèi)存信號(hào)量消息:郵箱、消息隊(duì)列事件信號(hào)管道實(shí)時(shí)內(nèi)核基本功能-同步與通訊61共享數(shù)據(jù)結(jié)構(gòu)最直接的任務(wù)間通信方式全局變量、線性緩沖區(qū)、循環(huán)緩沖區(qū)、鏈表,可以被不同上下文環(huán)境中運(yùn)行的代碼直接訪問(wèn)需采用互斥方法進(jìn)行保護(hù)實(shí)時(shí)內(nèi)核基本功能-通訊62信號(hào)量:解決任務(wù)間同步與互斥的主要手段。常用信號(hào)量分類(lèi)二元信號(hào)量(binary):快速、通用,對(duì)互斥與同步做了優(yōu)化。互斥信號(hào)量(mutex):針對(duì)互斥問(wèn)題進(jìn)行優(yōu)化的二元信號(hào)量。遞歸資源訪問(wèn):如遞歸調(diào)用包含獲取信號(hào)量的函數(shù)體安全刪除問(wèn)題:已獲取信號(hào)量的任務(wù)不被意外刪除計(jì)數(shù)信號(hào)量(counting):控制共享資源的多個(gè)實(shí)例。被信號(hào)量阻塞的任務(wù)排隊(duì)策略FIFO優(yōu)先級(jí)排序?qū)崟r(shí)內(nèi)核基本功能-同步、互斥63消息是內(nèi)存空間中一段長(zhǎng)度可變的緩沖區(qū)。是一種在任務(wù)之間、ISR~任務(wù)之間的通訊機(jī)制,注意:ISR只可以寫(xiě)消息,但不能讀消息!常用消息分類(lèi):郵箱(mailbox):傳遞簡(jiǎn)單消息消息隊(duì)列(messagequeue):傳遞可變長(zhǎng)的復(fù)雜消息消息進(jìn)入隊(duì)列的策略FIFO優(yōu)先級(jí)排序?qū)崟r(shí)內(nèi)核基本功能-通訊64管道管道是一個(gè)虛設(shè)備,提供了通過(guò)I/O設(shè)備接口訪問(wèn)消息隊(duì)列的一個(gè)界面。任務(wù)可以使用標(biāo)準(zhǔn)的I/O接口open、read、write,以及ioctl調(diào)用。事件用于實(shí)現(xiàn)任務(wù)之間、ISR~任務(wù)之間多對(duì)一、多對(duì)多的同步操作,通訊數(shù)據(jù)量小,主要?jiǎng)幼鞣譃榻邮帐录l(fā)送事件。信號(hào)用于實(shí)現(xiàn)任務(wù)之間、ISR~任務(wù)之間的異步操作。實(shí)時(shí)內(nèi)核基本功能-同步與通訊65在不更改內(nèi)核代碼的情況下,在內(nèi)核調(diào)用點(diǎn)擴(kuò)展用戶(hù)功能。內(nèi)核可提供的擴(kuò)展點(diǎn)包括:任務(wù)創(chuàng)建、任務(wù)啟動(dòng)、任務(wù)刪除、任務(wù)上下文切換、任務(wù)退出例如:在任務(wù)上下文切換時(shí)擴(kuò)展增加功能實(shí)時(shí)內(nèi)核基本功能-用戶(hù)擴(kuò)展管理taskSwitchTable函數(shù)指針4函數(shù)指針3函數(shù)指針2函數(shù)指針1switchTasks:

。。。

cmpl $0,_taskSwitchTable

jne

doSwitchHooksdoSwitchHooks

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

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

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

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

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

在arch/arm/kernel/call.S

中添加新的系統(tǒng)調(diào)用,新的系統(tǒng)調(diào)用號(hà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一個(gè)測(cè)試程序來(lái)使用新的系統(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庫(kù)函數(shù),因?yàn)閼?yīng)用程序使用的是新添加的系統(tǒng)調(diào)用,而libc中并沒(méi)有,所以只能直接用匯編。76然后執(zhí)行啟動(dòng)開(kāi)發(fā)板,將應(yīng)用程序test通過(guò)zmodem協(xié)議下載到開(kāi)發(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)而,實(shí)現(xiàn)一個(gè)帶參數(shù)的系統(tǒng)調(diào)用必做二創(chuàng)建帶一個(gè)參數(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)用實(shí)驗(yàn)代碼如下: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)格說(shuō)明-

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

SWAP(x,y);else

溫馨提示

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

評(píng)論

0/150

提交評(píng)論