第八章 AutoOSEK操作系統(tǒng).ppt_第1頁
第八章 AutoOSEK操作系統(tǒng).ppt_第2頁
第八章 AutoOSEK操作系統(tǒng).ppt_第3頁
第八章 AutoOSEK操作系統(tǒng).ppt_第4頁
第八章 AutoOSEK操作系統(tǒng).ppt_第5頁
已閱讀5頁,還剩152頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、嵌入式系統(tǒng)及應(yīng)用 第八講 嵌入式實(shí)時(shí)操作系統(tǒng)設(shè)計(jì),本節(jié)提要,1,3,2,5,4,OSEK標(biāo)準(zhǔn)介紹,OSEK OS標(biāo)準(zhǔn),AutoOSEK 內(nèi)核設(shè)計(jì),OSEK COM標(biāo)準(zhǔn),OSEK OIL標(biāo)準(zhǔn),1. OSEK標(biāo)準(zhǔn)介紹,OSEK OS OSEK COM OSEK NM OSEK OIL,OSEK/VDX是應(yīng)用在模塊和靜態(tài)實(shí)時(shí)操作系統(tǒng)上的標(biāo)準(zhǔn),由主要的汽車制造商和供應(yīng)商,研究機(jī)構(gòu)以及軟件開發(fā)商發(fā)起。 OSEK,是指德國的汽車電子類開放系統(tǒng)和對應(yīng)接口標(biāo)準(zhǔn)(open systems and the corresponding interfaces for automotive electronics),而

2、VDX則是汽車分布式執(zhí)行標(biāo)準(zhǔn)(vehicle distributed executive),后者最初是由法國獨(dú)自發(fā)起的,后來加入了OSEK團(tuán)體。兩者的名字都反映出OSEK/VDX的目的是為汽車電子制定標(biāo)準(zhǔn)化接口。該標(biāo)準(zhǔn)完全獨(dú)立,對目標(biāo)系統(tǒng)只限制了少量的條件。,其中OSEK OS是針對汽車應(yīng)用特點(diǎn)而專門制定的一個(gè)小型RTOS規(guī)范,著重以下幾個(gè)方面: 可移植性,所有API都是標(biāo)準(zhǔn)化的并且在功能上都有明確的定義; 可擴(kuò)展性,OSEKOS旨在通用于任何類型的 ECU,因此一方面系統(tǒng)要高度的模塊化,另一方面又要能進(jìn)行靈活的配置; 汽車應(yīng)用的特定需求,諸如可靠性、實(shí)用性和代價(jià)敏感性等。 相應(yīng)的,OSEK

3、OS靜態(tài)配置可以通過OSEK OIL語言實(shí)現(xiàn),用戶在系統(tǒng)生成時(shí)靜態(tài)制定任務(wù)的個(gè)數(shù)、需要的資源和系統(tǒng)服務(wù)。OSEK COM為通信網(wǎng)絡(luò)中的數(shù)據(jù)交換提供了標(biāo)準(zhǔn)的接口和協(xié)議。OSEK NM為監(jiān)視網(wǎng)絡(luò)的流量提供了一組標(biāo)準(zhǔn)的功能函數(shù),以保證網(wǎng)絡(luò)的安全性和可靠性。,本節(jié)提要,1,3,2,5,4,OSEK標(biāo)準(zhǔn)介紹,OSEK OS標(biāo)準(zhǔn),AutoOSEK 內(nèi)核設(shè)計(jì),OSEK COM標(biāo)準(zhǔn),OSEK OIL標(biāo)準(zhǔn),OSEK OS標(biāo)準(zhǔn)主要包括: 操作系統(tǒng)構(gòu)架 任務(wù)管理 應(yīng)用模式 中斷處理 事件機(jī)制 資源管理 警報(bào) 消息機(jī)制 錯(cuò)誤處理,OSEK OS標(biāo)準(zhǔn),1OSEK/VDX操作系統(tǒng)的構(gòu)架,處理級Processing lev

4、els 一致類Conformance classes,處理級,OSEK操作系統(tǒng)是基于靜態(tài)優(yōu)先級的一種構(gòu)架。 每個(gè)任務(wù)可以是基本任務(wù)或擴(kuò)展任務(wù),基本任務(wù)和擴(kuò)展任務(wù)的區(qū)別在于擴(kuò)展任務(wù)支持外部異步事件。 每個(gè)任務(wù)被分配一個(gè)靜態(tài)優(yōu)先級,調(diào)度器總是從就緒隊(duì)列中選擇最高優(yōu)先級任務(wù)。ISR可以搶占運(yùn)行任務(wù)(除了運(yùn)行任務(wù)正在使用資源)。,OSEK操作系統(tǒng)提供了用戶接口,這些接口主要通過實(shí)體來使用。操作系統(tǒng)提供了兩類實(shí)體: 中斷服務(wù)例程 任務(wù) (基本任務(wù)和擴(kuò)展任務(wù)),OSEK定義了三類處理級別: 中斷級 調(diào)度邏輯級 任務(wù)級,OSEK操作系統(tǒng)處理級,優(yōu)先級規(guī)則: 中斷優(yōu)先級高于任務(wù)優(yōu)先級 中斷處理級由一個(gè)或多個(gè)中

5、斷優(yōu)先級組成 中斷服務(wù)例程具有指定的中斷優(yōu)先級 ISR的優(yōu)先級與具體的硬件相關(guān) 資源天花板優(yōu)先級與較高優(yōu)先級任務(wù)相關(guān)。 任務(wù)優(yōu)先級被用戶靜態(tài)分配,為了提供的不同應(yīng)用需求,操作系統(tǒng)提供了4種一致類選擇。一致類為在不改變應(yīng)用任務(wù)情況下,按照預(yù)先規(guī)定對功能較少的類到功能較多的一致類提供了升級途徑。 一致類主要包括下列屬性規(guī)定: 多請求任務(wù)激活(一個(gè)任務(wù)激活或多個(gè)任務(wù)激活) 任務(wù)類型(基本任務(wù)或基本任務(wù)+擴(kuò)展任務(wù)) 每個(gè)優(yōu)先級對應(yīng)的任務(wù)數(shù)(一個(gè)優(yōu)先級對應(yīng)一個(gè)任務(wù)或多個(gè)任務(wù)),一致類,下面是一致類的定義: BCC1 :每個(gè)任務(wù)只有一個(gè)激活請求,一個(gè)任務(wù)只有一個(gè)優(yōu)先級,所有任務(wù)優(yōu)先級必須保持不同 BCC2

6、 :在BCC1的基礎(chǔ)上,每個(gè)任務(wù)可以有多個(gè)激活請求和一個(gè)優(yōu)先級可以對應(yīng)多個(gè)任務(wù)。 ECC1 :在BCC1基礎(chǔ)上,增加了擴(kuò)展任務(wù),即支持事件機(jī)制。 ECC2 :在ECC1基礎(chǔ)上,每個(gè)任務(wù)可以有多個(gè)激活請求和一個(gè)優(yōu)先級可以對應(yīng)多個(gè)任務(wù)。,一致類Conformance classes,棧分開與分類 BCC1:在無中斷情況下發(fā)生上下文切換僅有兩種情況 被高優(yōu)先級任務(wù)搶占 自己結(jié)束,當(dāng)前任務(wù),高優(yōu)先級任務(wù)1,高優(yōu)先級任務(wù)2,被高優(yōu)先級任務(wù)搶占,被高優(yōu)先級任務(wù)搶占,自己結(jié)束,自己結(jié)束,結(jié)論:BCC1下,任務(wù)、中斷的棧的使用可以為同一個(gè),不會(huì)相互干擾,即不需要每個(gè)任務(wù)使用獨(dú)立的棧空間,ECC1:多了等待狀態(tài)

7、,每個(gè)就必須使用獨(dú)立的??臻g,而且為了提高任務(wù)棧大小的可估算性和使用率,將中斷統(tǒng)一使用系統(tǒng)棧。,棧,2任務(wù)管理,在OSEK OS中,任務(wù)提供了并發(fā)/異步執(zhí)行功能。調(diào)度器負(fù)責(zé)根據(jù)定義的調(diào)度算法調(diào)度任務(wù)。 OSEK OS 提供兩種任務(wù):基本任務(wù)和擴(kuò)展任務(wù)。它們不同之處在于,擴(kuò)展任務(wù)允許調(diào)用WaitEvent(),即允許擴(kuò)展任務(wù)在等待異步事件時(shí),不終止當(dāng)前例程釋放CPU。,每個(gè)任務(wù)分配了一個(gè)固定的優(yōu)先級(0被分配給最低優(yōu)先級任務(wù)),可以是搶占式或非搶占式。如果是搶占式,該任務(wù)可以在任何時(shí)候被搶占,否則必須等到任務(wù)結(jié)束時(shí)才產(chǎn)生調(diào)度。一個(gè)搶占式任務(wù)可以變?yōu)榉菗屨既蝿?wù)通過使用加鎖資源RES_SCHEDUL

8、ER。,OSEK標(biāo)準(zhǔn)定義了4個(gè)任務(wù)狀態(tài): 就緒 等待 掛起 運(yùn)行 基本任務(wù)沒有等待狀態(tài):基本任務(wù)只有在任務(wù)的開始和結(jié)束才是同步點(diǎn)。,基本任務(wù),基本任務(wù)在下列三種情況下釋放CPU 自己結(jié)束 被高優(yōu)先級任務(wù)搶占 中斷產(chǎn)生,基本任務(wù)常常用來完成那些激活后就必須完整執(zhí)行的工作,基本任務(wù)狀態(tài)轉(zhuǎn)換,擴(kuò)展任務(wù),擴(kuò)展任務(wù)和基本任務(wù)的主要區(qū)別在于:允許調(diào)用系統(tǒng)服務(wù)WaitEvent(),該系統(tǒng)調(diào)用使任務(wù)進(jìn)入等待狀態(tài)。等待狀態(tài)允許任務(wù)在不結(jié)束任務(wù)的情況下釋放CPU調(diào)用優(yōu)先級更低的任務(wù)運(yùn)行。,擴(kuò)展任務(wù)的狀態(tài)轉(zhuǎn)換,任務(wù)比較,基本任務(wù)沒有等待狀態(tài),因而同步點(diǎn)在任務(wù)開始和結(jié)束的地方,所以其需要的資源少?;救蝿?wù)需求的資源

9、必須獨(dú)享直至整個(gè)任務(wù)結(jié)束。任務(wù)實(shí)時(shí)性較差。 擴(kuò)展任務(wù)的優(yōu)點(diǎn)是可以在單個(gè)任務(wù)中處理連貫的工作而不管同步請求是否有效。當(dāng)需求事件未產(chǎn)生時(shí)就進(jìn)入等待狀態(tài),直到事件產(chǎn)生??梢栽谌魏吸c(diǎn)進(jìn)行同步。,激活一個(gè)任務(wù),操作系統(tǒng)通過系統(tǒng)調(diào)用ActivateTask或 ChainTask 激活一個(gè)任務(wù)。任務(wù)被激活后從最開始狀態(tài)開始運(yùn)行。 任務(wù)的多請求激活 根據(jù)一致類的定義,一個(gè)基本任務(wù)能被激活一次或多次。任務(wù)激活的多請求意味著操作系統(tǒng)必須接收和記錄已經(jīng)激活的任務(wù)激活次數(shù)。 任務(wù)激活請求次數(shù)在基本任務(wù)的屬性配置時(shí)進(jìn)行設(shè)置。如果最大的請求次數(shù)沒達(dá)到,請求被排隊(duì)。每個(gè)優(yōu)先級的基本任務(wù)的請求按激活順序排隊(duì)。,任務(wù)切換機(jī)制,

10、操作系統(tǒng)中用于決定哪個(gè)任務(wù)應(yīng)該被啟動(dòng)的實(shí)體稱為調(diào)度器。無論任務(wù)什么時(shí)候按照調(diào)度策略進(jìn)行切換時(shí)都會(huì)調(diào)用調(diào)度器。調(diào)度器可以作為一個(gè)任務(wù)資源被任務(wù)獨(dú)享和釋放。因此一個(gè)任務(wù)可以獨(dú)占調(diào)度器直到任務(wù)完成來避免被切換。,任務(wù)優(yōu)先級,調(diào)度器按照任務(wù)優(yōu)先級來決定下一個(gè)將要運(yùn)行的任務(wù)。 0被設(shè)計(jì)為最低優(yōu)先級,一般留給空閑任務(wù)。優(yōu)先級高低和優(yōu)先級的數(shù)字相對應(yīng),數(shù)字越大,優(yōu)先級越高。 動(dòng)態(tài)優(yōu)先級在OSEK中不支持,除了在使用資源時(shí),根據(jù)天花板協(xié)議,任務(wù)優(yōu)先級可動(dòng)態(tài)變?yōu)橘Y源優(yōu)先級。 一個(gè)被搶占的任務(wù)優(yōu)先級被認(rèn)為是最先進(jìn)入就緒隊(duì)列的任務(wù),一個(gè)等待任務(wù)進(jìn)入就緒態(tài)被認(rèn)為是最后進(jìn)入就緒隊(duì)列的任務(wù)。,調(diào)度器: 就緒任務(wù)的執(zhí)行順序

11、,依據(jù)以下的準(zhǔn)則決定下一個(gè)被執(zhí)行的任務(wù): 調(diào)度器在“就緒態(tài)”隊(duì)列中搜索所有的任務(wù)。 調(diào)度器在處于“就緒態(tài)” 的任務(wù)集中,選出優(yōu)先級最高的任務(wù)集。 調(diào)度器在上一個(gè)步驟中選出同一個(gè)優(yōu)先級的任務(wù)中找出最先進(jìn)入就緒態(tài)的任務(wù)。,調(diào)度器按照任務(wù)優(yōu)先級決定下一個(gè)就緒任務(wù)進(jìn)入運(yùn)行狀態(tài)。具有相同優(yōu)先級的任務(wù)按照它們的激活順序啟動(dòng)。 OSEK標(biāo)準(zhǔn)提供4種靜態(tài)優(yōu)先級調(diào)度,如下所述: 全搶占調(diào)度: 運(yùn)行任務(wù)可以被高優(yōu)先級任務(wù)搶占。 非搶占調(diào)度: 任務(wù)的切換只有通過明確的系統(tǒng)調(diào)度來實(shí)現(xiàn)。如任務(wù)結(jié)束Termination ,事件觸發(fā)POSTEvent等。,調(diào)度策略,調(diào)度方式,全搶占式調(diào)度,在全搶占式調(diào)度下,用戶應(yīng)該總是期

12、望“運(yùn)行態(tài)”任務(wù)的搶占。但是,如果希望一個(gè)任務(wù)片段不會(huì)被搶占,那么可以通過系統(tǒng)服務(wù)GetResource臨時(shí)阻塞調(diào)度器。 在以下情況會(huì)出現(xiàn)重新調(diào)度: 任務(wù)的成功終結(jié)TerminateTask 。 任務(wù)的成功終結(jié),并且成功地激活接下來要執(zhí)行的任務(wù)(ChainTask)。 在任務(wù)層次激活一個(gè)任務(wù)(例如:系統(tǒng)服務(wù)ActivateTask)。 如果出現(xiàn)了任務(wù)轉(zhuǎn)換為“等待態(tài)”的情況, WaitEvent會(huì)被調(diào)用。 在任務(wù)層次為一個(gè)“等待態(tài)”的任務(wù)設(shè)置一個(gè)事件(例如:系統(tǒng)服務(wù)SetEvent)。 在任務(wù)層次釋放資源(系統(tǒng)服務(wù)ReleaseResource) 從中斷返回到任務(wù)層次。,非搶占式調(diào)度,非搶占式策

13、略,就是就有通過精確定義的系統(tǒng)服務(wù)的選擇才會(huì)導(dǎo)致任務(wù)切換。 非搶占式調(diào)度對任務(wù)可能的時(shí)序請求有著特別要求。特別地,正在運(yùn)行的低優(yōu)先級任務(wù)的不 非搶占(比如,任務(wù)有一些不可分割的代碼段,或者有些不可分割的操作)會(huì)延遲一個(gè)高優(yōu)先級任務(wù)的調(diào)度,只能等到下一個(gè)調(diào)度時(shí)刻。,非搶占調(diào)度,在非搶占式任務(wù)的情況下,在以下的情況定會(huì)導(dǎo)致重新調(diào)度的出現(xiàn): 任務(wù)順利的終止(系統(tǒng)服務(wù)TerminateTask) 任務(wù)的成功終止,并且準(zhǔn)確激活接下來要執(zhí)行的任務(wù)(ChainTask) 調(diào)度器的外部調(diào)用(系統(tǒng)服務(wù)Schedule)。 到“等待態(tài)”轉(zhuǎn)變的發(fā)生(系統(tǒng)服務(wù)WaitEvent)。,混合調(diào)度: 由于搶占權(quán)是任務(wù)的屬性

14、,搶占式任務(wù)和非搶占式任務(wù)在系統(tǒng)中混合使用時(shí),運(yùn)行任務(wù)的調(diào)度受到實(shí)際使用的調(diào)度策略影響。 任務(wù)使用內(nèi)部資源: 這種調(diào)度策略非常類似于搶占閾值技術(shù), 采用天花板和內(nèi)部資源的在任務(wù)啟動(dòng)加鎖與和結(jié)束解鎖來實(shí)現(xiàn)閾值。,如果在同一個(gè)系統(tǒng)上混合使用搶占式和非搶占式任務(wù),那么這個(gè)策略就叫做“混合搶占式” 調(diào)度。在這種情況下,調(diào)度策略取決于運(yùn)行的任務(wù)的“搶占式屬性”。如果,正在運(yùn)行的任務(wù)是非搶占式的,那么就采取非搶占式調(diào)度;如果正在運(yùn)行的任務(wù)是搶占式的,那么就采取搶占式調(diào)度。,選擇調(diào)度策略,軟件開發(fā)者或者系統(tǒng)集成人員通過設(shè)置任務(wù)的優(yōu)先級和安排任務(wù)的搶占屬性,決定任務(wù)的執(zhí)行序列。 一個(gè)任務(wù)的類型(基礎(chǔ)類型或者擴(kuò)

15、展類型)和任務(wù)的調(diào)度類型(搶占式或者是非搶占式)是獨(dú)立的。 一個(gè)純搶占式系統(tǒng)可能包含有基本任務(wù),而一個(gè)非搶占式系統(tǒng)可以包含擴(kuò)展任務(wù)。如果一個(gè)操作系統(tǒng)服務(wù)正在運(yùn)行,任務(wù)的搶占和任務(wù)切換都有可能延遲。,很多應(yīng)用程序是由極少的執(zhí)行時(shí)間較長的任務(wù)和許多定義了執(zhí)行時(shí)間的短任務(wù)組成對于長時(shí)間的任務(wù)而言,純搶占式操作系統(tǒng)較為合適;對時(shí)間較短的任務(wù)而言,采用非搶占式調(diào)度則更有效率。因此,混合式搶占式調(diào)度策略可以看作是一個(gè)折衷。,在以下情況,在一個(gè)搶占式操作系統(tǒng)中定義非搶占式任務(wù)是有意義的: 如果一個(gè)任務(wù)的執(zhí)行時(shí)間和該任務(wù)的切換時(shí)間是在同一個(gè)數(shù)量級上的時(shí)候; 或者,RAM的使用十分經(jīng)濟(jì),為了保存任務(wù)的上下文環(huán)境

16、; 或者,該任務(wù)不應(yīng)該被搶占。,結(jié)束任務(wù),在OSEK中,任務(wù)只能自己結(jié)束自己。 操作系統(tǒng)提供ChainTask函數(shù)來實(shí)現(xiàn)指定的任務(wù)在結(jié)束自己后激活運(yùn)行。 ChainTask使得最新被激活的任務(wù)加入優(yōu)先級隊(duì)列的最后。 每個(gè)任務(wù)必須在代碼結(jié)尾通過調(diào)用TerminateTask 或 ChainTask結(jié)束自己。,3操作系統(tǒng)應(yīng)用模式,OSEK操作系統(tǒng)提供應(yīng)用模式的支持。在實(shí)際的應(yīng)用中,一個(gè)操作系統(tǒng)可能執(zhí)行幾種互斥的應(yīng)用(比如,正常模式,廠家測試模式等)。這些應(yīng)用模式為不同運(yùn)行條件而構(gòu)建不同的軟件運(yùn)行構(gòu)架提供了的一種手段。一旦操作系統(tǒng)啟動(dòng)就不允許改變系統(tǒng)的應(yīng)用模式。每種應(yīng)用模式使用自己定義的任務(wù)、中斷、

17、報(bào)警和定時(shí)條件和一些不同模式共享的部分。,系統(tǒng)啟動(dòng),正常操作時(shí)有可能產(chǎn)生復(fù)位的情況,因此啟動(dòng)性能是在嵌入式系統(tǒng)在汽車應(yīng)用中是另一個(gè)安全指標(biāo)。例如,一個(gè)傳動(dòng)系應(yīng)用應(yīng)該能在幾微秒內(nèi)重啟整個(gè)系統(tǒng),因?yàn)橄到y(tǒng)必須安全控制發(fā)動(dòng)機(jī)氣缸中電火花。在正常情況下,應(yīng)避免長時(shí)間復(fù)雜的啟動(dòng)過程。,4中斷處理,標(biāo)準(zhǔn)規(guī)定操作系統(tǒng)應(yīng)該適用于不同的處理器,因此,操作系統(tǒng)的中斷處理提供一種通用處理方法,而與硬件無關(guān)。,因此,在OSEK中,標(biāo)準(zhǔn)提供了兩種中斷處理: 1類中斷處理 此類ISR不調(diào)用操作系統(tǒng)的系統(tǒng)服務(wù)。在中斷服務(wù)例程完成后,將繼續(xù)處理中斷發(fā)生的地方的指令,例如:中斷不會(huì)影響任務(wù)的管理。此類的ISR所需要的花費(fèi)最少。

18、中斷服務(wù)程序不用操作系統(tǒng)服務(wù)。 實(shí)際上,操作系統(tǒng)不處理這類中斷,設(shè)計(jì)者可以自由編寫這類中斷處理代碼,只是不能調(diào)用系統(tǒng)服務(wù)代碼。通常這類中斷是最高優(yōu)先級中斷。 2類中斷處理 中斷被操作系統(tǒng)處理,因此操作系統(tǒng)服務(wù)能被中斷處理程序調(diào)用。,中斷管理 一類中斷服務(wù)程序 二類中斷服務(wù)程序,快速開啟/禁止API(應(yīng)用程序接口)功能 OSEK提供了快速禁止所有中斷(EnableAllInterrupts,DisableAllInterrupts,ResumeAllInterrupts,SuspendAllInterrupts)和禁止所有第二類中斷(ResumeOSInterrupts,SuspendOSInt

19、errupts)的功能。典型的用法是保護(hù)短暫的臨界區(qū)域。在受保護(hù)的臨界區(qū)域內(nèi)不允許中斷返回,例如:“suspend/disable”與“resume/enable”必須配對使用。,中斷服務(wù)程序(ISR)可以通過以下方式和任務(wù)進(jìn)行通信:,ISR 激活一個(gè)任務(wù); ISR 發(fā)送/接收一個(gè)非隊(duì)列消息; ISR 觸發(fā)一個(gè)計(jì)數(shù)器; ISR 獲取 Task ID; ISR 獲取任務(wù)狀態(tài); ISR 設(shè)置一個(gè)事件; ISR 獲取任務(wù)事件的屏蔽碼; ISR 使用報(bào)警。,在2類中斷中可以使用的系統(tǒng)函數(shù),注意:非屏蔽中斷(NMI)不能被分配到2類中斷。這類中斷操作系統(tǒng)不能保護(hù)其臨界區(qū)。,ISR Stack,ISR堆棧

20、的目的是為了節(jié)省空間。當(dāng)中斷產(chǎn)生時(shí),每個(gè)任務(wù)必須設(shè)置一個(gè)足夠大的堆棧來保護(hù)任務(wù)和中斷的變量。為了避免堆棧空間的重復(fù), OSEKTurbo將ISR中的堆棧獨(dú)立出來。這類堆棧在2類中斷中使用。在BCC1中,ISR使用共用一個(gè)堆棧。在一些編譯器中通過關(guān)鍵字來產(chǎn)生堆棧構(gòu)架,如“interrupt”。,5事件機(jī)制,事件機(jī)制 實(shí)現(xiàn)同步的方法 只支持?jǐn)U展任務(wù) 可以初始化任務(wù)的轉(zhuǎn)換狀態(tài),以便轉(zhuǎn)換至等待態(tài),或者以便從等待態(tài)轉(zhuǎn)換,事件機(jī)制僅在擴(kuò)展一致類中才支持。用來實(shí)現(xiàn)任務(wù)的同步和通信,可以通過2類中斷或任務(wù)來觸發(fā)。 擴(kuò)展任務(wù)的典型行為是等待異步事件調(diào)用WaitEvent。在事件產(chǎn)生后,認(rèn)為可以重新調(diào)用WaitE

21、vent來等待其它事件。 事件只有當(dāng)任務(wù)處于非掛起狀態(tài)時(shí)設(shè)置。即擴(kuò)展任務(wù)不能處于掛起狀態(tài)。,有多個(gè)可選項(xiàng)用于操控事件,這取決于該任務(wù)是否是該事件的擁有者,或者另外的任務(wù)是否是一個(gè)擴(kuò)展任務(wù)。所有的任務(wù)都可以為非掛起的任務(wù)設(shè)置事件。只有事件的擁有者才可以清除它自己的事件,并且等待自己的事件的設(shè)置。 在任何情況之下,事件的接受者都是擴(kuò)展任務(wù)。因此,中斷服務(wù)例程和基本任務(wù)是不可能等待一個(gè)事件的。 如果擴(kuò)展任務(wù)等待的事件發(fā)生了,那么該擴(kuò)展任務(wù)將會(huì)從等待態(tài)切換為就緒態(tài)。如果一個(gè)運(yùn)行態(tài)的任務(wù)在等待某事件的發(fā)生,并且該事件已經(jīng)發(fā)生了,那么該任務(wù)仍會(huì)在運(yùn)行態(tài)。,搶占式擴(kuò)展任務(wù)的同步,非搶占式擴(kuò)展任務(wù)的同步,事件

22、相關(guān)的函數(shù),6.資源管理,資源管理用于調(diào)整不同優(yōu)先級的任務(wù)對共享的資源的訪問,例如:管理實(shí)體(調(diào)度器)、程序片段、內(nèi)存或者硬件區(qū)域。 對于所有的一致性類而言,資源管理是強(qiáng)制要求的。資源管理可以選擇性地?cái)U(kuò)展,用于協(xié)調(diào)任務(wù)和中斷服務(wù)例程的并發(fā)訪問。 資源管理需要確保: 兩個(gè)任務(wù)不能同時(shí)占用同一資源 不能夠發(fā)生優(yōu)先權(quán)倒置 在使用這些資源時(shí),不允許死鎖的發(fā)生 訪問資源不允許導(dǎo)致等待態(tài),如果在中斷的層次擴(kuò)展資源管理,還必須確保兩個(gè)任務(wù)或者中斷例程不能同時(shí)占用同一資源 在以下的情況中,資源管理的功能是非常有用的: 搶占式任務(wù) 在非搶占式任務(wù)的環(huán)境中,如果用戶計(jì)劃在其它的調(diào)度策略下,執(zhí)行應(yīng)用程序代碼 在任務(wù)

23、或者中斷服務(wù)例程之間實(shí)現(xiàn)資源共享 在中斷服務(wù)例程中實(shí)現(xiàn)資源共享,該標(biāo)準(zhǔn)提供能用于臨界區(qū)的二進(jìn)制資源。優(yōu)先級反轉(zhuǎn)和死鎖通過稱之為OSEK優(yōu)先級天花板協(xié)議來避免。 該協(xié)議在實(shí)際上采用的靜態(tài)優(yōu)先級: 每個(gè)資源被分配一個(gè)天花板,它是使用該資源的所有任務(wù)(包括ISR)中最高優(yōu)先級任務(wù)的優(yōu)先級。 當(dāng)一個(gè)任務(wù)請求一個(gè)資源時(shí),他的當(dāng)前優(yōu)先級升為資源的天花板。 當(dāng)任務(wù)釋放一個(gè)資源,該任務(wù)的優(yōu)先級被重新設(shè)置為資源請求以前的優(yōu)先級。,采用該協(xié)議,優(yōu)先級反轉(zhuǎn)、鏈路阻塞、死鎖被避免。而且,由于一個(gè)任務(wù)只有所有的資源被釋放時(shí)才能被調(diào)度,因此不需要等待隊(duì)列。 資源僅被任務(wù)使用。在OSEK標(biāo)準(zhǔn)中,資源可以被任務(wù)或2類中斷服務(wù)

24、例程使用。當(dāng)一個(gè)中斷使用資源時(shí)被視為是最高優(yōu)先級任務(wù):它的執(zhí)行能被延遲當(dāng)更低優(yōu)先級中斷服務(wù)例程或任務(wù)采用天花板的高于或等于該中斷例程優(yōu)先級訪問該資源時(shí)。,資源使用時(shí)的限制,當(dāng)資源被占用時(shí), TerminateTask, ChainTask, Schedule, WaitEvent 不能調(diào)用。使用被占用的資源的中斷服務(wù)程序?qū)⒉荒芡瓿伞?當(dāng)一個(gè)任務(wù)占用多個(gè)資源時(shí),應(yīng)按后進(jìn)先出(LIFO)的原則釋放資源。,調(diào)度器作為資源,標(biāo)準(zhǔn)還提供特殊的資源,調(diào)度器成為RES_SCHEDULER ,它能使搶占不能產(chǎn)生。當(dāng)搶占式任務(wù)在處理某段程序時(shí)要求連續(xù)運(yùn)行,可以通過獲取資源RES_SCHEDULER鎖住調(diào)度器。實(shí)

25、際上,該資源的天花板等于系統(tǒng)最高優(yōu)先級。一個(gè)非搶占任務(wù)可以認(rèn)為是使用了RES_SCHEDULER 資源的任務(wù)。 此時(shí),中斷同樣會(huì)被響應(yīng)和處理,但不會(huì)產(chǎn)生調(diào)度。,同步機(jī)制產(chǎn)生的問題,優(yōu)先級反轉(zhuǎn),死鎖,外部資源:需要通過顯示調(diào)用API進(jìn)行占有,優(yōu)先級置頂,搶占式任務(wù)和中斷服務(wù)程序之間的資源分配,在中斷服務(wù)程序之間的資源分配,內(nèi)部資源,一個(gè)內(nèi)部資源是一個(gè)簡單的資源,當(dāng)一個(gè)任務(wù)啟動(dòng)時(shí),它被加鎖,當(dāng)這個(gè)任務(wù)結(jié)束時(shí)才被解鎖。內(nèi)部資源的天花板可被視為任務(wù)的優(yōu)先權(quán)。,內(nèi)部資源:任務(wù)一運(yùn)行就占有,報(bào)警(Alarm) 兩級報(bào)警,報(bào)警動(dòng)作 激活任務(wù) 設(shè)置事件 調(diào)用回調(diào)函數(shù) 根據(jù)配置,當(dāng)該報(bào)警有效時(shí),回調(diào)例程被調(diào)用或

26、任務(wù)被激活,或者一個(gè)事件被設(shè)置。在報(bào)警回調(diào)函數(shù)運(yùn)行時(shí),2類中斷被禁止。,7報(bào)警,計(jì)數(shù)器,一個(gè)計(jì)數(shù)器通過硬件提供的節(jié)拍來實(shí)現(xiàn)計(jì)數(shù)。 OSEK不支持標(biāo)準(zhǔn)API直接操作計(jì)數(shù)器。 操作系統(tǒng)關(guān)心的是怎樣管理報(bào)警。 OSEK操作系統(tǒng)提供至少一個(gè)計(jì)數(shù)器(硬件或者軟件定時(shí)器)。,報(bào)警管理,操作系統(tǒng)在報(bào)警產(chǎn)生時(shí)提供任務(wù)激活、設(shè)置事件或調(diào)用一個(gè)報(bào)警回調(diào)例程。報(bào)警回調(diào)例程是由應(yīng)用程序提供一個(gè)簡短的函數(shù)。 當(dāng)與報(bào)警關(guān)聯(lián)的計(jì)數(shù)器計(jì)數(shù)達(dá)到設(shè)定值時(shí),產(chǎn)生報(bào)警。可以通過相對值或絕對值來設(shè)置報(bào)警關(guān)聯(lián)的計(jì)數(shù)器。 報(bào)警可以定義為單次報(bào)警或周期報(bào)警。 操作系統(tǒng)還提供取消報(bào)警和獲取報(bào)警值函數(shù)。,報(bào)警管理的分層模型,報(bào)警回調(diào)例程,一個(gè)報(bào)

27、警回調(diào)例程可以無參數(shù)或返回值。 回調(diào)例程應(yīng)按下面格式定義:ALARMCALLBACK(AlarmCallbackRoutineName); 例如: ALARMCALLBACK(BrakePedalStroke) /* do application processing */ ,8消息,消息主要用于處理器內(nèi)部和處理器之間進(jìn)行通信。 OSEK COM對消息進(jìn)行了詳細(xì)說明。,本節(jié)提要,1,3,2,5,4,OSEK標(biāo)準(zhǔn)介紹,OSEK OS標(biāo)準(zhǔn),AutoOSEK 內(nèi)核設(shè)計(jì),OSEK COM標(biāo)準(zhǔn),OSEK OIL標(biāo)準(zhǔn),OSEK COM,OSEK標(biāo)準(zhǔn)也包含了車輛內(nèi)部通信的接口和協(xié)議的規(guī)定,稱為OSEK CO

28、M。通信條款規(guī)定了整個(gè)車輛中兩個(gè)結(jié)點(diǎn)之間的通信和一個(gè)結(jié)點(diǎn)的內(nèi)部的通信。基本思想是為應(yīng)用層提供一個(gè)易于實(shí)現(xiàn)不同硬件之間通信的獨(dú)立于具體通信介質(zhì)的標(biāo)準(zhǔn)的通信接口。 COM規(guī)范給內(nèi)部通信和外部通信定義了公共的軟件通信接口和服務(wù),這些接口和服務(wù)獨(dú)立于所采用的通信協(xié)議。通過這些,就增加了應(yīng)用程序軟件模塊的可移植性。,OSEK COM 提供了在任務(wù)間、ISR間以及任務(wù)和ISR之間傳輸數(shù)據(jù)的服務(wù)。這些任務(wù)可以在一個(gè)ECU里面也可以在不同的ECU里面。只能通過指定的API函數(shù)訪問OSEK COM服務(wù)。這些API函數(shù)隱藏了內(nèi)部通信和外部通信的不同之處,同時(shí)也隱藏了不同的通信協(xié)議、總線系統(tǒng)和網(wǎng)絡(luò)類型。,COM的概

29、念模型,OSEK COM包括: 一個(gè)交互層:為消息的傳輸提供通信服務(wù) 一個(gè)網(wǎng)絡(luò)層:為不同的消息和分段傳輸提供服務(wù)。 一個(gè)數(shù)據(jù)鏈路層接口:為上層不同數(shù)據(jù)包的網(wǎng)絡(luò)傳輸提供服務(wù)。 OSEK COM 提供豐富的通信工具集,但許多應(yīng)用只會(huì)用到其中的一個(gè)子集。正因?yàn)榇耍摌?biāo)準(zhǔn)定義了一個(gè)一致類集合,使OSEK COM能夠按照不同的要求進(jìn)行集成,為不同的汽車供應(yīng)商提供不同集成軟件需求。,OSEK COM 按照通信一致類(CCCsCommunication Conformance Classes)定義這些分層。一致類的主要目的是根據(jù)不同應(yīng)用需要和CPU特征定義不同功能的通信組成。OSEK COM 定義了4個(gè)通信

30、一致類來為ECU的內(nèi)部通信到外部通信提供支持。,通信一致類,CCCA: CCCA 定義最少的特征用于支持內(nèi)部通信。非隊(duì)列消息被支持。 CCCB: CCCB定義的特征用于支持內(nèi)部通信。 除了CCCA支持以外,還包括消息狀態(tài)信息和隊(duì)列消息。 CCC0: CCC0 定義最少的特征支持內(nèi)部通信和外部通信,所有的CCCA和2類通知,字節(jié)順序轉(zhuǎn)換,直接傳輸模式。 CCC1: 支持所用OSEK COM定義的特征。,消息傳送和接收模型,外部接收模型,外部傳送模型,外部消息的傳送模式,直接傳送 消息根據(jù)應(yīng)用層調(diào)用直接發(fā)送。 周期傳送 IPDU中的消息按照設(shè)置的周期進(jìn)行傳送。 混合傳送 消息采用直接和周期混合模式

31、進(jìn)行發(fā)送。,OSEK COM只支持靜態(tài)長度消息,一個(gè)消息被定義成固定長度,或者定義一個(gè)消息可以變化的最大長度。 OSEK COM提供超時(shí)監(jiān)測(死限)機(jī)制。 OSEK COM提供過濾機(jī)制。 在發(fā)送方,采用過濾算法,如果不滿足要求,IPDU數(shù)據(jù)不會(huì)被更新。 在發(fā)送方,內(nèi)部消息不需要過濾。 在接收方,內(nèi)部消息和外部消息都可以采用過濾。,直接傳輸,周期傳輸,混合傳輸,網(wǎng)絡(luò)字節(jié)順序轉(zhuǎn)換,小端模式,大端模式,消息配置,配置主要包括: 消息傳送屬性的配置,IPDU傳輸模式的配置。 消息的打包。 Packing of the messages to I-PDUs (see section 2.4 for de

32、tails). 接收是否采用隊(duì)列及隊(duì)列的大小,內(nèi)部通信基于消息對象的進(jìn)程通信 符合OSEK COM標(biāo)準(zhǔn)的CCCA、CCCB一致類 發(fā)送消息對象 接受消息對象 隊(duì)列接受 非隊(duì)列接受,消息通知機(jī)制 消息通知機(jī)制提供四種通知 接收通知 發(fā)送通知 接收錯(cuò)誤通知 發(fā)送錯(cuò)誤通知 接受到消息,觸發(fā)通知機(jī)制 激活任務(wù) 設(shè)置事件 設(shè)置標(biāo)志 調(diào)用回調(diào)函數(shù),通知機(jī)制,消息過濾,過濾主要用于判斷消息是否符合設(shè)定的發(fā)送或接收條件,如果不滿足就不發(fā)送或接收。 提供非負(fù)整數(shù)的13種過濾算法,例如 根據(jù)接收到的消息數(shù)據(jù)值進(jìn)行過濾 根據(jù)消息數(shù)據(jù)變化趨勢進(jìn)行過濾 根據(jù)消息傳輸次數(shù)進(jìn)行過濾 零長度和動(dòng)態(tài)長度消息,沒有過濾發(fā)生,死限

33、監(jiān)測,接收死限監(jiān)測 必須在規(guī)定的時(shí)間間隔內(nèi)接收數(shù)據(jù),否則丟棄數(shù)據(jù)。 接收死限監(jiān)測僅限于外部通信。 發(fā)送死限監(jiān)測 是否采用發(fā)送死限,每個(gè)消息可以根據(jù)自己要求進(jìn)行配置。,本節(jié)提要,1,3,2,5,4,OSEK標(biāo)準(zhǔn)介紹,OSEK OS標(biāo)準(zhǔn),AutoOSEK內(nèi)核設(shè)計(jì),OSEK COM標(biāo)準(zhǔn),OSEK OIL標(biāo)準(zhǔn),OSEK OIL標(biāo)準(zhǔn),OS Definition Task Definition ISR Definition Resource Definition Event Definition Counter Definition Alarm Definition Message Definition

34、Application Modes Definition COM Definition NM Definition OSEKturbo Performance Dependency,配置步驟,1.設(shè)計(jì)應(yīng)用程序配置情況 設(shè)計(jì)好用戶程序中需要的任務(wù)數(shù)量,任務(wù)屬性,堆棧大小,事件數(shù)量,告警數(shù)量,告警相關(guān)任務(wù),消息數(shù)量,消息相關(guān)任務(wù)和事件情況 2.利用OSEKBuilder生成oil文件和gen文件夾中的c語言配置文件 用OSEKBulider根據(jù)自己應(yīng)用程序情況配置相關(guān)的OIL文件。OIL文件里任務(wù)等定義順序是配置時(shí)的創(chuàng)建順序。,配置步驟,1.設(shè)計(jì)應(yīng)用程序配置情況 設(shè)計(jì)好用戶程序中需要的任務(wù)數(shù)量,任

35、務(wù)屬性,堆棧大小,事件數(shù)量,告警數(shù)量,告警相關(guān)任務(wù),消息數(shù)量,消息相關(guān)任務(wù)和事件情況等配置需求。 2.利用OSEKBuilder生成oil文件和gen文件夾中的c語言配置文件 用OSEKBulider根據(jù)自己應(yīng)用程序情況配置相關(guān)的OIL文件。OIL文件里任務(wù)等定義順序是配置時(shí)的創(chuàng)建順序。,設(shè)計(jì)應(yīng)用程序配置情況,設(shè)計(jì)好用戶程序中需要的任務(wù)數(shù)量,任務(wù)屬性,堆棧大小,事件數(shù)量,告警數(shù)量,告警相關(guān)任務(wù),消息數(shù)量,消息相關(guān)任務(wù)和事件情況,舉例: 8個(gè)任務(wù),名字是TASK1TASK8, 1個(gè)事件,名字是event1 3個(gè)消息,名字是mess1mess3 2個(gè)告警,名字是alarm1和alarm2 , 1個(gè)

36、資源,名字是res1 任務(wù)8用到告警1、事件1和任務(wù)6實(shí)現(xiàn)一個(gè)自我延時(shí),利用消息3實(shí)現(xiàn)對任務(wù)4的激活,任務(wù)4和任務(wù)5都要用到互斥訪問的資源1。,希望達(dá)到的效果是系統(tǒng)啟動(dòng)后任務(wù)8自動(dòng)就緒,在設(shè)置了一個(gè)告警,自我延時(shí)一段時(shí)間后激活任務(wù)4,并發(fā)送消息3給任務(wù)4。任務(wù)4運(yùn)行時(shí)能使用互斥資源res1,之后任務(wù)5被激活并也使用資源res1,兩者之間能互斥訪問資源不會(huì)發(fā)生優(yōu)先級翻轉(zhuǎn)現(xiàn)象。最后回到任務(wù)8,重復(fù)上述流程循環(huán)。,設(shè)計(jì)應(yīng)用程序配置情況,TASK8,TASK6,TASK4,TASK5,event1,mess3,alarm1,res1,OIL文件結(jié)構(gòu),單CPU配置的oil文件基本模式必須遵循以下結(jié)構(gòu)。

37、OIL_VERSION = ;oil版本 IMPLEMENTATION / Implementation definition .list of implementation specific object attributes. ; . ;執(zhí)行模式標(biāo)準(zhǔn),即配置對象的模式定義 CPU / Definition of the application on CPU / System object definition = ; = ; . list of object attributes and references . ; . list of objects . ;具體配置對象的配置描述列表,配

38、置對象的語法結(jié)構(gòu),所有的對象都用同樣的語法結(jié)構(gòu).如下所示: ;,OS Definition,OS對象描述一個(gè)操作系統(tǒng)的配置。 該類對象類型用關(guān)鍵字OS來定義,一個(gè)配置應(yīng)用中只能有一個(gè)OS對象。 OS對象的語法結(jié)構(gòu)如下所示: OS ;,OS定義全局屬性,STATUS = ; OS的調(diào)式狀態(tài) CC = ; OSEK的一致類定義 DEBUG_LEVEL = ; OS中對ORTI的支持情況 BuildNumber = ; 編譯ASCII型Number是否編進(jìn)OS的二進(jìn)制鏡像文件(ROM代碼) MessageCopyAllocation = ; 由SG默認(rèn)指定或由用戶指定的消息拷貝 ResourceSc

39、heduler = ; 是否將調(diào)度器作為資源,OS對象屬性,OS ENUM STANDARD, EXTENDED STATUS; BOOLEAN STARTUPHOOK; BOOLEAN ERRORHOOK; BOOLEAN SHUTDOWNHOOK; BOOLEAN PRETASKHOOK; BOOLEAN POSTTASKHOOK; BOOLEAN USEGETSERVICEID; BOOLEAN USEPARAMETERACCESS; BOOLEAN USERESSCHEDULER = TRUE; ;,OSEKBuilder中名字為OS的OS對象標(biāo)志為 點(diǎn)擊 或在OIL Object窗口

40、右鍵添加OS對象 雙擊屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderOS,Task Definition,OIL中一個(gè)任務(wù)對象描述一個(gè)任務(wù)的配置定義 通過屬性參數(shù)的配置實(shí)現(xiàn)任務(wù)對象和系統(tǒng)的其他對象之間的間接連接。 該類對象類型用關(guān)鍵字TASK 來定義 TASK對象的語法結(jié)構(gòu)如下所示: TASK PRIORITY = ; SCHEDULE = ; AUTOSTART = APPMODE = ; ; ACTIVATION = ; STACKSIZE = ; RESOURCE = ; EVENT = ; ACCESSOR = MESSAGE = ;

41、WITHOUTCOPY = ; ACCESSNAME = ; ; ;,Task對象屬性,TASK BOOLEAN TRUE APPMODE_TYPE APPMODE; , FALSE AUTOSTART; UINT32 PRIORITY; UINT32 ACTIVATION; ENUM NON, FULL SCHEDULE; EVENT_TYPE EVENT; RESOURCE_TYPE RESOURCE; MESSAGE_TYPE MESSAGE; ;,Task對象屬性,OSEKBuilder中名字為TASK8的TASK對象標(biāo)志為 點(diǎn)擊 或在OIL Object窗口右鍵添加TASK對象 雙擊

42、屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderTASK,ISR Definition,該類對象類型用關(guān)鍵字ISR來定義,對應(yīng)同名的中斷程序配置。 ISR 對象的語法結(jié)構(gòu)如下所示: ISR CATEGORY = ; PRIORITY = 0; RESOURCE = ; ACCESSOR = MESSAGE = ; ACCESSNAME = ; ; ;,ISR對象屬性,ISR UINT32 1, 2 CATEGORY; RESOURCE_TYPE RESOURCE ; MESSAGE_TYPE MESSAGE ; ;,ISR對象默認(rèn)屬性標(biāo)準(zhǔn),OSE

43、KBuilder中名字為isr1的ISR對象標(biāo)志為 點(diǎn)擊 或在OIL Object窗口右鍵添加ISR對象 雙擊屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderISR,Resource Definition,該類對象類型用關(guān)鍵字RESOURCE來定義。天花板協(xié)議根據(jù)相關(guān)資源的任務(wù)優(yōu)先級信息配置時(shí)自動(dòng)被執(zhí)行。 RESOURCE對象的語法結(jié)構(gòu)如下所示: RESOURCE RESOURCEPROPERTY = LINKEDRESOURCE = ; ;,Resource對象默認(rèn)屬性標(biāo)準(zhǔn),RESOURCE sci_res RESOURCEPROPERTY =

44、 STANDARD; ;,OSEKBuilder中名字為res1的RESOURCE對象標(biāo)志為 點(diǎn)擊 或在OIL Object窗口右鍵添加RESOURCE對象 雙擊屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderResource,Event Definition,該類對象類型用關(guān)鍵字EVENT來定義。事件對象沒有參數(shù)。 事件對象的語法結(jié)構(gòu)如下所示: EVENT MASK = ; ;,Event對象默認(rèn)屬性標(biāo)準(zhǔn),EVENT delay_expire MASK = AUTO; ;,OSEKBuilder中名字為event1的EVENT對象標(biāo)志為 點(diǎn)擊

45、或在OIL Object窗口右鍵添加Event對象 雙擊屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderEvent,Counter Definition,COUNTER對象描述OSEK系統(tǒng)的時(shí)鐘配置。沒有參數(shù)的該類對象被其他的對象引用。 該類對象類型用關(guān)鍵字COUNTER來定義。時(shí)鐘對象的語法結(jié)構(gòu)如下所示: COUNTER MINCYCLE = ; MAXALLOWEDVALUE = ; TICKSPERBASE = ; ,Counter對象屬性,COUNTER UINT32 MINCYCLE; UINT32 MAXALLOWEDVALUE; U

46、INT32 TICKSPERBASE; ;,Counter對象屬性,OSEKBuilder中名字為counter1的COUNTER對象標(biāo)志為 點(diǎn)擊 或在OIL Object窗口右鍵添加COUNTER對象 雙擊屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderCounter,Alarm Definition,該對象描述告警的配置,通過屬性參數(shù)的配置實(shí)現(xiàn)告警對象和系統(tǒng)的其他對象之間的間接連接。 告警對象引用的任務(wù)和時(shí)鐘必須已經(jīng)定義過。 該類對象類型用關(guān)鍵字ALARM 來定義 告警對象的語法結(jié)構(gòu)如下所示: ALARM COUNTER = ; ACTION

47、 = TASK = ; EVENT = ; ALARMCALLBACKNAME = ; ; AUTOSTART = ALARMTIME = ; CYCLETIME = ; APPMODE = ; ;,ALARM對象屬性,ALARM COUNTER_TYPE COUNTER; ENUM ACTIVATETASK TASK_TYPE TASK; , SETEVENT TASK_TYPE TASK; EVENT_TYPE EVENT; ALARMCALLBACK STRING ALARMCALLBACKNAME; ACTION; BOOLEAN TRUE UINT32 ALARMTIME; UINT

48、32 CYCLETIME; APPMODE_TYPE APPMODE; , FALSE AUTOSTART; ;,ALARM對象屬性,OSEKBuilder中名字為alarm1的ALARM對象標(biāo)志為 點(diǎn)擊 或在OIL Object窗口右鍵添加ALARM對象 雙擊屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderAlarm,Message Definition,該對象描述消息的配置,通過屬性參數(shù)的配置實(shí)現(xiàn)告警對象和系統(tǒng)的其他對象之間的間接連接。 消息對象的隊(duì)列和非隊(duì)列屬性互斥,不能同時(shí)具備隊(duì)列和非隊(duì)列兩種屬性。 該類對象類型用關(guān)鍵字MESSAGE來定

49、義 資源對象的語法結(jié)構(gòu)如下所示: MESSAGE TYPE = ; QUEUEDEPTH = ;CDATATYPE = ; ACTION = TASK = ;EVENT = ; CALLBACKNAME = ; FLAGNAME = ; ;,Message對象屬性,Message對象屬性,MESSAGE mess_w TYPE = UNQUEUED; CDATATYPE = Wheel_w; ACTION = SETEVENT TASK = Lg; EVENT = tras_w; ; ;,OSEKBuilder中名字為mess1的MESSAGE對象標(biāo)志為 點(diǎn)擊 或在OIL Object窗口右鍵添加MESSAGE對象 雙擊屬性關(guān)鍵字,在彈出的Edit Value窗口中輸入該屬性的參數(shù)值或?qū)傩灾?OSEKBuilderMessage,Application Modes Definition,一個(gè)CPU可包含幾種不同的應(yīng)用模式并用不同的模式的名稱來定義。 一個(gè)模式對象描述一種系統(tǒng)應(yīng)用模式中自動(dòng)就緒任務(wù)和告警的設(shè)置。 規(guī)范中模式對象沒有定義標(biāo)準(zhǔn)屬性,只要一個(gè)CPU中至少包含一個(gè)模式對象即可。 該類對象類型用關(guān)鍵字APPMODE來定義 時(shí)鐘對象的語法結(jié)構(gòu)如下所示: APPMODE ; OSEKturbo OS支持8種不同的應(yīng)用模式.,OSEKB

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論