




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、1嵌入式系統及應用嵌入式系統及應用第八講第八講 嵌入式實時操作系統設計嵌入式實時操作系統設計 2本節提要本節提要OSEK標準介紹標準介紹OSEK OS標準標準AutoOSEK 內核設計內核設計OSEK COM標準標準OSEK OIL標準標準31. OSEK標準介紹標準介紹u OSEK OSl OSEK COMl OSEK NMl OSEK OIL4lOSEK/VDXOSEK/VDX是應用在模塊和靜態實時操作系統上的標準,由主是應用在模塊和靜態實時操作系統上的標準,由主要的汽車制造商和供應商,研究機構以及軟件開發商發起。要的汽車制造商和供應商,研究機構以及軟件開發商發起。lOSEKOSEK,是指
2、德國的汽車電子類開放系統和對應接口標準,是指德國的汽車電子類開放系統和對應接口標準(open systems and the corresponding interfaces for open systems and the corresponding interfaces for automotive electronicsautomotive electronics),而),而VDXVDX則是汽車分布式執行標則是汽車分布式執行標準(準(vehicle distributed executivevehicle distributed executive),后者最初是由法),后者最初是由法國獨
3、自發起的,后來加入了國獨自發起的,后來加入了OSEKOSEK團體。兩者的名字都反映出團體。兩者的名字都反映出OSEK/VDXOSEK/VDX的目的是為汽車電子制定標準化接口。該標準完全的目的是為汽車電子制定標準化接口。該標準完全獨立,對目標系統只限制了少量的條件。獨立,對目標系統只限制了少量的條件。 5其中其中OSEK OSOSEK OS是針對汽車應用特點而專門制定的一個小型是針對汽車應用特點而專門制定的一個小型RTOSRTOS規范,著重以下幾個方面:規范,著重以下幾個方面:可移植性可移植性,所有,所有APIAPI都是標準化的并且在功能上都有明確都是標準化的并且在功能上都有明確的定義;的定義;
4、可擴展性可擴展性,OSEKOSOSEKOS旨在通用于任何類型的旨在通用于任何類型的 ECUECU,因此一方,因此一方面系統要高度的模塊化,另一方面又要能進行靈活的配置;面系統要高度的模塊化,另一方面又要能進行靈活的配置;汽車應用的特定需求汽車應用的特定需求,諸如可靠性、實用性和代價敏感性,諸如可靠性、實用性和代價敏感性等。等。 相應的,相應的,OSEK OSOSEK OS靜態配置可以通過靜態配置可以通過OSEK OILOSEK OIL語言實現,語言實現,用戶在系統生成時靜態制定任務的個數、需要的資源和系統用戶在系統生成時靜態制定任務的個數、需要的資源和系統服務。服務。OSEK COMOSEK
5、COM為通信網絡中的數據交換提供了標準的接口為通信網絡中的數據交換提供了標準的接口和協議。和協議。OSEK NMOSEK NM為監視網絡的流量提供了一組標準的功能為監視網絡的流量提供了一組標準的功能函數,以保證網絡的安全性和可靠性。函數,以保證網絡的安全性和可靠性。 67本節提要本節提要OSEK標準介紹標準介紹OSEK OS標準標準AutoOSEK 內核設計內核設計OSEK COM標準標準OSEK OIL標準標準8OSEK OS標準主要包括:標準主要包括:l操作系統構架操作系統構架l任務管理任務管理l應用模式應用模式l中斷處理中斷處理l事件機制事件機制l資源管理資源管理l警報警報l消息機制消息
6、機制l錯誤處理錯誤處理OSEK OS標準標準91OSEK/VDX操作系統的構架操作系統的構架l處理級處理級Processing levelsl一致類一致類Conformance classes10處理級處理級lOSEKOSEK操作系統是基于靜態優先級的一種構架。操作系統是基于靜態優先級的一種構架。l每個任務可以是基本任務或擴展任務,基本任務每個任務可以是基本任務或擴展任務,基本任務和擴展任務的區別在于擴展任務支持外部異步事和擴展任務的區別在于擴展任務支持外部異步事件。件。l每個任務被分配一個靜態優先級,調度器總是從每個任務被分配一個靜態優先級,調度器總是從就緒隊列中選擇最高優先級任務。就緒隊列
7、中選擇最高優先級任務。ISRISR可以搶占運可以搶占運行任務(除了運行任務正在使用資源)。行任務(除了運行任務正在使用資源)。11OSEKOSEK操作系統提供了用戶接口,這些接口主要通操作系統提供了用戶接口,這些接口主要通過實體來使用。操作系統提供了兩類實體:過實體來使用。操作系統提供了兩類實體:l中斷服務例程中斷服務例程l任務任務 ( (基本任務和擴展任務)基本任務和擴展任務)OSEKOSEK定義了三類處理級別:定義了三類處理級別: l中斷級中斷級l調度邏輯級調度邏輯級l任務級任務級12OSEK操作系統處理級操作系統處理級13l優先級規則:優先級規則:l中斷優先級高于任務優先級中斷優先級高于
8、任務優先級l中斷處理級由一個或多個中斷優先級組成中斷處理級由一個或多個中斷優先級組成l中斷服務例程具有指定的中斷優先級中斷服務例程具有指定的中斷優先級lISRISR的優先級與具體的硬件相關的優先級與具體的硬件相關l資源天花板優先級與較高優先級任務相關。資源天花板優先級與較高優先級任務相關。l任務優先級被用戶靜態分配任務優先級被用戶靜態分配14l為了提供的不同應用需求,操作系統提供了為了提供的不同應用需求,操作系統提供了4 4種一種一致類選擇。一致類為在不改變應用任務情況下,按致類選擇。一致類為在不改變應用任務情況下,按照預先規定對功能較少的類到功能較多的一致類提照預先規定對功能較少的類到功能較
9、多的一致類提供了升級途徑。供了升級途徑。l一致類主要包括下列屬性規定:一致類主要包括下列屬性規定:l多請求任務激活(一個任務激活或多個任務激活)多請求任務激活(一個任務激活或多個任務激活)l任務類型(基本任務或基本任務任務類型(基本任務或基本任務+ +擴展任務)擴展任務) l每個優先級對應的任務數(一個優先級對應一個任務或多每個優先級對應的任務數(一個優先級對應一個任務或多個任務)個任務) 一致類一致類15l下面是一致類的定義:下面是一致類的定義: lBCC1 BCC1 :每個任務只有一個激活請求,一個任務只有一:每個任務只有一個激活請求,一個任務只有一個優先級,所有任務優先級必須保持不同個優
10、先級,所有任務優先級必須保持不同lBCC2 BCC2 :在:在BCC1BCC1的基礎上,每個任務可以有多個激活請的基礎上,每個任務可以有多個激活請求和一個優先級可以對應多個任務。求和一個優先級可以對應多個任務。lECC1 ECC1 :在:在BCC1BCC1基礎上,增加了擴展任務,即支持事件基礎上,增加了擴展任務,即支持事件機制。機制。lECC2 ECC2 :在:在ECC1ECC1基礎上,每個任務可以有多個激活請求基礎上,每個任務可以有多個激活請求和一個優先級可以對應多個任務。和一個優先級可以對應多個任務。16一致類一致類Conformance classes1718l棧分開與分類棧分開與分類l
11、BCC1:在無中斷情況下發生上下文切:在無中斷情況下發生上下文切換僅有兩種情況換僅有兩種情況l被高優先級任務搶占被高優先級任務搶占l自己結束自己結束當前任務當前任務高優先級任務高優先級任務1高優先級任務高優先級任務2被高優先級被高優先級任務搶占任務搶占被高優先級被高優先級任務搶占任務搶占自己結束自己結束自己結束自己結束結論:結論:BCC1下,下,任務、中斷的棧的任務、中斷的棧的使用可以為同一個,使用可以為同一個,不會相互干擾,即不會相互干擾,即不需要每個任務使不需要每個任務使用獨立的??臻g用獨立的棧空間lECC1:多了等待狀態,每個就必須使用獨立的:多了等待狀態,每個就必須使用獨立的??臻g,而
12、且為了提高任務棧大小的可估算性和??臻g,而且為了提高任務棧大小的可估算性和使用率,將中斷統一使用系統棧。使用率,將中斷統一使用系統棧。棧棧192任務管理任務管理 l在在OSEK OSOSEK OS中,任務提供了并發中,任務提供了并發/ /異步執行功能。調異步執行功能。調度器負責根據定義的調度算法調度任務。度器負責根據定義的調度算法調度任務。 lOSEK OS OSEK OS 提供兩種任務:基本任務和擴展任務。它提供兩種任務:基本任務和擴展任務。它們不同之處在于,擴展任務允許調用們不同之處在于,擴展任務允許調用WaitEvent()WaitEvent(),即允許擴展任務在等待異步事件時,不終止當
13、前例即允許擴展任務在等待異步事件時,不終止當前例程釋放程釋放CPUCPU。 20l每個任務分配了一個固定的優先級(每個任務分配了一個固定的優先級(0 0被分配給最低被分配給最低優先級任務),可以是搶占式或非搶占式。如果是搶優先級任務),可以是搶占式或非搶占式。如果是搶占式,該任務可以在任何時候被搶占,否則必須等到占式,該任務可以在任何時候被搶占,否則必須等到任務結束時才產生調度。一個搶占式任務可以變為非任務結束時才產生調度。一個搶占式任務可以變為非搶占任務通過使用加鎖資源搶占任務通過使用加鎖資源RES_SCHEDULERRES_SCHEDULER。21lOSEK標準定義了標準定義了4個任務狀態
14、:個任務狀態:l就緒就緒l等待等待l掛起掛起l運行運行 l基本任務沒有等待狀態:基本任務只有在任務的基本任務沒有等待狀態:基本任務只有在任務的開始和結束才是同步點。開始和結束才是同步點。 22基本任務基本任務l基本任務在下列三種情況下釋放基本任務在下列三種情況下釋放CPUCPUl自己結束自己結束l被高優先級任務搶占被高優先級任務搶占l中斷產生中斷產生23基本任務狀態轉換基本任務狀態轉換24擴展任務擴展任務 擴展任務和基本任務的主要區別在于:允許調用系擴展任務和基本任務的主要區別在于:允許調用系統服務統服務WaitEventWaitEvent(),該系統調用使任務進入等待狀(),該系統調用使任務
15、進入等待狀態。等待狀態允許任務在不結束任務的情況下釋放態。等待狀態允許任務在不結束任務的情況下釋放CPUCPU調用優先級更低的任務運行調用優先級更低的任務運行。25擴展任務的狀態轉換擴展任務的狀態轉換26任務比較任務比較l基本任務沒有等待狀態,因而同步點在任務開始基本任務沒有等待狀態,因而同步點在任務開始和結束的地方,所以其需要的資源少?;救蝿蘸徒Y束的地方,所以其需要的資源少。基本任務需求的資源必須獨享直至整個任務結束。任務實需求的資源必須獨享直至整個任務結束。任務實時性較差。時性較差。l擴展任務的優點是可以在單個任務中處理連貫的擴展任務的優點是可以在單個任務中處理連貫的工作而不管同步請求是
16、否有效。當需求事件未產工作而不管同步請求是否有效。當需求事件未產生時就進入等待狀態,直到事件產生??梢栽谌紊鷷r就進入等待狀態,直到事件產生。可以在任何點進行同步。何點進行同步。27激活一個任務激活一個任務l操作系統通過系統調用操作系統通過系統調用ActivateTaskActivateTask或或 ChainTaskChainTask 激活一個任務。任務被激活后從最開激活一個任務。任務被激活后從最開始狀態開始運行。始狀態開始運行。l任務的多請求激活任務的多請求激活l根據一致類的定義,一個基本任務能被激活一次或多次。根據一致類的定義,一個基本任務能被激活一次或多次。任務激活的多請求意味著操作系統
17、必須接收和記錄已經任務激活的多請求意味著操作系統必須接收和記錄已經激活的任務激活次數。激活的任務激活次數。l任務激活請求次數在基本任務的屬性配置時進行設置。任務激活請求次數在基本任務的屬性配置時進行設置。如果最大的請求次數沒達到,請求被排隊。每個優先級如果最大的請求次數沒達到,請求被排隊。每個優先級的基本任務的請求按激活順序排隊。的基本任務的請求按激活順序排隊。28任務切換機制任務切換機制操作系統中用于決定哪個任務應該被啟動的實操作系統中用于決定哪個任務應該被啟動的實體稱為調度器。無論任務什么時候按照調度策略進體稱為調度器。無論任務什么時候按照調度策略進行切換時都會調用調度器。調度器可以作為一
18、個任行切換時都會調用調度器。調度器可以作為一個任務資源被任務獨享和釋放。因此一個任務可以獨占務資源被任務獨享和釋放。因此一個任務可以獨占調度器直到任務完成來避免被切換。調度器直到任務完成來避免被切換。29任務優先級任務優先級l調度器按照任務優先級來決定下一個將要運行的任務。調度器按照任務優先級來決定下一個將要運行的任務。l0 0被設計為最低優先級,一般留給空閑任務。優先級高低和優被設計為最低優先級,一般留給空閑任務。優先級高低和優先級的數字相對應,數字越大,優先級越高。先級的數字相對應,數字越大,優先級越高。l動態優先級在動態優先級在OSEKOSEK中不支持,除了在使用資源時,根據天花板中不支
19、持,除了在使用資源時,根據天花板協議,任務優先級可動態變為資源優先級。協議,任務優先級可動態變為資源優先級。l一個被搶占的任務優先級被認為是最先進入就緒隊列的任務,一個被搶占的任務優先級被認為是最先進入就緒隊列的任務,一個等待任務進入就緒態被認為是最后進入就緒隊列的任務。一個等待任務進入就緒態被認為是最后進入就緒隊列的任務。30調度器調度器: 就緒任務的執行順序就緒任務的執行順序31依據以下的準則決定下一個被執行的任務:依據以下的準則決定下一個被執行的任務:調度器在調度器在“就緒態就緒態”隊列中搜索所有的任務。隊列中搜索所有的任務。調度器在處于調度器在處于“就緒態就緒態” 的任務集中,選出優先
20、的任務集中,選出優先級最高的任務集。級最高的任務集。調度器在上一個步驟中選出同一個優先級的任務調度器在上一個步驟中選出同一個優先級的任務中找出最先進入就緒態的任務。中找出最先進入就緒態的任務。32l調度器按照任務優先級決定下一個就緒任務進入調度器按照任務優先級決定下一個就緒任務進入運行狀態。具有相同優先級的任務按照它們的激運行狀態。具有相同優先級的任務按照它們的激活順序啟動?;铐樞騿?。 lOSEKOSEK標準提供標準提供4 4種靜態優先級調度,如下所述:種靜態優先級調度,如下所述: l全搶占調度:全搶占調度: l運行任務可以被高優先級任務搶占。運行任務可以被高優先級任務搶占。 l非搶占調度:
21、非搶占調度: l任務的切換只有通過明確的系統調度來實現。如任務結束任務的切換只有通過明確的系統調度來實現。如任務結束Termination Termination ,事件觸發,事件觸發POSTEventPOSTEvent等。等。 調度策略調度策略33調度方式調度方式34全搶占式調度全搶占式調度35 在全搶占式調度下,用戶應該總是期望在全搶占式調度下,用戶應該總是期望“運行態運行態”任務的搶任務的搶占。但是,如果希望一個任務片段不會被搶占,那么可以通過占。但是,如果希望一個任務片段不會被搶占,那么可以通過系統服務系統服務GetResourceGetResource臨時阻塞調度器。臨時阻塞調度器。
22、 在以下情況會出現重新調度:在以下情況會出現重新調度:l任務的成功終結任務的成功終結TerminateTask TerminateTask 。l任務的成功終結,并且成功地激活接下來要執行的任務任務的成功終結,并且成功地激活接下來要執行的任務(ChainTaskChainTask)。)。l在任務層次激活一個任務(例如:系統服務在任務層次激活一個任務(例如:系統服務ActivateTaskActivateTask)。)。l如果出現了任務轉換為如果出現了任務轉換為“等待態等待態”的情況,的情況, WaitEventWaitEvent會被調用。會被調用。l在任務層次為一個在任務層次為一個“等待態等待態
23、”的任務設置一個事件(例如:系統的任務設置一個事件(例如:系統服務服務SetEventSetEvent)。)。l在任務層次釋放資源(系統服務在任務層次釋放資源(系統服務ReleaseResourceReleaseResource)l從中斷返回到任務層次。從中斷返回到任務層次。36非搶占式調度非搶占式調度l非搶占式策略,就是就有通過精確定義的系統服務的非搶占式策略,就是就有通過精確定義的系統服務的選擇才會導致任務切換。選擇才會導致任務切換。l非搶占式調度對任務可能的時序請求有著特別要求。非搶占式調度對任務可能的時序請求有著特別要求。特別地,正在運行的低優先級任務的不特別地,正在運行的低優先級任務
24、的不l非搶占(比如,任務有一些不可分割的代碼段,或者非搶占(比如,任務有一些不可分割的代碼段,或者有些不可分割的操作)會延遲一個高優先級任務的調有些不可分割的操作)會延遲一個高優先級任務的調度,只能等到下一個調度時刻。度,只能等到下一個調度時刻。37非搶占調度非搶占調度38在非搶占式任務的情況下,在以下的情況定會導致在非搶占式任務的情況下,在以下的情況定會導致重新調度的出現:重新調度的出現:l任務順利的終止(系統服務任務順利的終止(系統服務TerminateTaskTerminateTask)l任務的成功終止,并且準確激活接下來要執行的任任務的成功終止,并且準確激活接下來要執行的任務(務(Ch
25、ainTaskChainTask)l調度器的外部調用(系統服務調度器的外部調用(系統服務ScheduleSchedule)。)。l到到“等待態等待態”轉變的發生(系統服務轉變的發生(系統服務WaitEventWaitEvent)。)。39l混合調度:混合調度:l由于搶占權是任務的屬性,搶占式任務和非搶占式任務由于搶占權是任務的屬性,搶占式任務和非搶占式任務在系統中混合使用時,運行任務的調度受到實際使用的在系統中混合使用時,運行任務的調度受到實際使用的調度策略影響。調度策略影響。 l任務使用內部資源:任務使用內部資源: l這種調度策略非常類似于搶占閾值技術這種調度策略非常類似于搶占閾值技術, ,
26、 采用天花板和采用天花板和內部資源的在任務啟動加鎖與和結束解鎖來實現閾值。內部資源的在任務啟動加鎖與和結束解鎖來實現閾值。 40l如果在同一個系統上混合使用搶占式和非搶占式如果在同一個系統上混合使用搶占式和非搶占式任務,那么這個策略就叫做任務,那么這個策略就叫做“混合搶占式混合搶占式”l調度。在這種情況下,調度策略取決于運行的任調度。在這種情況下,調度策略取決于運行的任務的務的“搶占式屬性搶占式屬性”。如果,正在運行的任務是。如果,正在運行的任務是非搶占式的,那么就采取非搶占式調度;如果正非搶占式的,那么就采取非搶占式調度;如果正在運行的任務是搶占式的,那么就采取搶占式調在運行的任務是搶占式的
27、,那么就采取搶占式調度。度。41選擇調度策略選擇調度策略l軟件開發者或者系統集成人員通過設置任務的優先級和安軟件開發者或者系統集成人員通過設置任務的優先級和安排任務的搶占屬性,決定任務的執行序列。排任務的搶占屬性,決定任務的執行序列。l一個任務的類型(基礎類型或者擴展類型)和任務的調度一個任務的類型(基礎類型或者擴展類型)和任務的調度類型(搶占式或者是非搶占式)是獨立的。類型(搶占式或者是非搶占式)是獨立的。l一個純搶占式系統可能包含有基本任務,而一個非搶占式一個純搶占式系統可能包含有基本任務,而一個非搶占式系統可以包含擴展任務。如果一個操作系統服務正在運行,系統可以包含擴展任務。如果一個操作
28、系統服務正在運行,任務的搶占和任務切換都有可能延遲。任務的搶占和任務切換都有可能延遲。42l很多應用程序是由極少的執行時間較長的任務和很多應用程序是由極少的執行時間較長的任務和許多定義了執行時間的短任務組成許多定義了執行時間的短任務組成對于長時對于長時間的任務而言,純搶占式操作系統較為合適;對間的任務而言,純搶占式操作系統較為合適;對時間較短的任務而言,采用非搶占式調度則更有時間較短的任務而言,采用非搶占式調度則更有效率。因此,混合式搶占式調度策略可以看作是效率。因此,混合式搶占式調度策略可以看作是一個折衷。一個折衷。43 在以下情況,在一個搶占式操作系統中定義非搶在以下情況,在一個搶占式操作
29、系統中定義非搶占式任務是有意義的:占式任務是有意義的:l如果一個任務的執行時間和該任務的切換時間是在同一如果一個任務的執行時間和該任務的切換時間是在同一個數量級上的時候;個數量級上的時候;l或者,或者,RAMRAM的使用十分經濟,為了保存任務的上下文環的使用十分經濟,為了保存任務的上下文環境;境;l或者,該任務不應該被搶占。或者,該任務不應該被搶占。44結束任務結束任務l在在OSEKOSEK中,任務只能自己結束自己。中,任務只能自己結束自己。l操作系統提供操作系統提供ChainTaskChainTask函數來實現指定的任務在函數來實現指定的任務在結束自己后激活運行。結束自己后激活運行。 Cha
30、inTaskChainTask使得最新被激使得最新被激活的任務加入優先級隊列的最后?;畹娜蝿占尤雰炏燃夑犃械淖詈?。l每個任務必須在代碼結尾通過調用每個任務必須在代碼結尾通過調用TerminateTask TerminateTask 或或 ChainTaskChainTask結束自己。結束自己。453操作系統應用模式操作系統應用模式lOSEKOSEK操作系統提供應用模式的支持。在實際的應操作系統提供應用模式的支持。在實際的應用中,一個操作系統可能執行幾種互斥的應用用中,一個操作系統可能執行幾種互斥的應用(比如,正常模式,廠家測試模式等)。這些應(比如,正常模式,廠家測試模式等)。這些應用模式為不
31、同運行條件而構建不同的軟件運行構用模式為不同運行條件而構建不同的軟件運行構架提供了的一種手段。一旦操作系統啟動就不允架提供了的一種手段。一旦操作系統啟動就不允許改變系統的應用模式。每種應用模式使用自己許改變系統的應用模式。每種應用模式使用自己定義的任務、中斷、報警和定時條件和一些不同定義的任務、中斷、報警和定時條件和一些不同模式共享的模式共享的部分部分。 46系統啟動系統啟動l正常操作時有可能產生復位的情況,因此啟動性正常操作時有可能產生復位的情況,因此啟動性能是在嵌入式系統在汽車應用中是另一個安全指能是在嵌入式系統在汽車應用中是另一個安全指標。例如,一個傳動系應用應該能在幾微秒內重標。例如,
32、一個傳動系應用應該能在幾微秒內重啟整個系統,因為系統必須安全控制發動機氣缸啟整個系統,因為系統必須安全控制發動機氣缸中電火花。在正常情況下,應避免長時間復雜的中電火花。在正常情況下,應避免長時間復雜的啟動過程。啟動過程。 474中斷處理中斷處理l標準規定操作系統應該適用于不同的處理器,因此,操作標準規定操作系統應該適用于不同的處理器,因此,操作系統的中斷處理提供一種通用處理方法,而與硬件無關。系統的中斷處理提供一種通用處理方法,而與硬件無關。 l因此,在因此,在OSEKOSEK中,標準提供了兩種中斷處理:中,標準提供了兩種中斷處理: l1 1類中斷處理類中斷處理 l此類此類ISRISR不調用操
33、作系統的系統服務。在中斷服務例程完成后,不調用操作系統的系統服務。在中斷服務例程完成后,將繼續處理中斷發生的地方的指令,例如:中斷不會影響任務將繼續處理中斷發生的地方的指令,例如:中斷不會影響任務的管理。此類的的管理。此類的ISRISR所需要的花費最少。所需要的花費最少。l中斷服務程序不用操作系統服務。中斷服務程序不用操作系統服務。 實際上,操作系統不處理這實際上,操作系統不處理這類中斷,設計者可以自由編寫這類中斷處理代碼,只是不能調類中斷,設計者可以自由編寫這類中斷處理代碼,只是不能調用系統服務代碼。通常這類中斷是最高優先級中斷。用系統服務代碼。通常這類中斷是最高優先級中斷。l2 2類中斷處
34、理類中斷處理 l中斷被操作系統處理,因此操作系統服務能被中斷處理程序調中斷被操作系統處理,因此操作系統服務能被中斷處理程序調用。用。 48l中斷管理中斷管理l一類中斷服務程序一類中斷服務程序l二類中斷服務程序二類中斷服務程序49l快速開啟快速開啟/ /禁止禁止APIAPI(應用程序接口)功能(應用程序接口)功能lOSEKOSEK提供了快速禁止所有中斷(提供了快速禁止所有中斷(EnableAllInterruptsEnableAllInterrupts,DisableAllInterruptsDisableAllInterrupts,ResumeAllInterruptsResumeAllInt
35、errupts,SuspendAllInterruptsSuspendAllInterrupts)和禁止所有第二類中斷)和禁止所有第二類中斷(ResumeOSInterruptsResumeOSInterrupts,SuspendOSInterruptsSuspendOSInterrupts)的功能。)的功能。典型的用法是保護短暫的臨界區域。在受保護的臨界區域內典型的用法是保護短暫的臨界區域。在受保護的臨界區域內不允許中斷返回,例如:不允許中斷返回,例如:“suspend/disable”suspend/disable”與與“resume/enable”resume/enable”必須配對使用
36、。必須配對使用。50中斷服務程序中斷服務程序(ISR)可以通過以下方式和任務進行通信:可以通過以下方式和任務進行通信:lISR ISR 激活一個任務;激活一個任務;lISR ISR 發送發送/ /接收一個非隊列消息;接收一個非隊列消息;lISR ISR 觸發一個計數器;觸發一個計數器;lISR ISR 獲取獲取 Task IDTask ID;lISR ISR 獲取任務狀態;獲取任務狀態;lISR ISR 設置一個事件;設置一個事件;lISR ISR 獲取任務事件的屏蔽碼;獲取任務事件的屏蔽碼;lISR ISR 使用報警。使用報警。51在在2類中斷中可以使用的系統函數類中斷中可以使用的系統函數5
37、2注意:非屏蔽中斷(注意:非屏蔽中斷(NMI)NMI)不能被分配到不能被分配到2 2類中斷。這類中斷操作類中斷。這類中斷操作系統不能保護其臨界區。系統不能保護其臨界區。53ISR StacklISRISR堆棧的目的是為了節省空間。當中斷產生時,堆棧的目的是為了節省空間。當中斷產生時,每個任務必須設置一個足夠大的堆棧來保護任務每個任務必須設置一個足夠大的堆棧來保護任務和中斷的變量。為了避免堆棧空間的重復,和中斷的變量。為了避免堆??臻g的重復, OSEKTurboOSEKTurbo將將ISRISR中的堆棧獨立出來。這類堆棧在中的堆棧獨立出來。這類堆棧在2 2類中斷中使用。在類中斷中使用。在BCC1
38、BCC1中,中,ISRISR使用共用一個堆棧。使用共用一個堆棧。在一些編譯器中通過關鍵字來產生堆棧構架,如在一些編譯器中通過關鍵字來產生堆棧構架,如“interrupt”interrupt”。545事件機制事件機制l事件機制事件機制l實現同步的方法實現同步的方法l只支持擴展任務只支持擴展任務l可以初始化任務的轉換狀態,以便轉換至等待態,或者可以初始化任務的轉換狀態,以便轉換至等待態,或者以便從等待態轉換以便從等待態轉換55l事件機制僅在擴展一致類中才支持。用來實現任事件機制僅在擴展一致類中才支持。用來實現任務的同步和通信,可以通過務的同步和通信,可以通過2 2類中斷或任務來觸發。類中斷或任務來
39、觸發。l擴展任務的典型行為是等待異步事件調用擴展任務的典型行為是等待異步事件調用WaitEventWaitEvent。在事件產生后,認為可以重新調用。在事件產生后,認為可以重新調用WaitEventWaitEvent來等待其它事件。來等待其它事件。l事件只有當任務處于非掛起狀態時設置。即擴展事件只有當任務處于非掛起狀態時設置。即擴展任務不能處于掛起狀態。任務不能處于掛起狀態。56l有多個可選項用于操控事件,這取決于該任務是否是該事件有多個可選項用于操控事件,這取決于該任務是否是該事件的擁有者,或者另外的任務是否是一個擴展任務。所有的任的擁有者,或者另外的任務是否是一個擴展任務。所有的任務都可以
40、為非掛起的任務設置事件。只有事件的擁有者才可務都可以為非掛起的任務設置事件。只有事件的擁有者才可以清除它自己的事件,并且等待自己的事件的設置。以清除它自己的事件,并且等待自己的事件的設置。l在任何情況之下,事件的接受者都是擴展任務。因此,中斷在任何情況之下,事件的接受者都是擴展任務。因此,中斷服務例程和基本任務是不可能等待一個事件的。服務例程和基本任務是不可能等待一個事件的。l如果擴展任務等待的事件發生了,那么該擴展任務將會從等如果擴展任務等待的事件發生了,那么該擴展任務將會從等待態切換為就緒態。如果一個運行態的任務在等待某事件的待態切換為就緒態。如果一個運行態的任務在等待某事件的發生,并且該
41、事件已經發生了,那么該任務仍會在運行態。發生,并且該事件已經發生了,那么該任務仍會在運行態。57搶占式擴展任務的同步搶占式擴展任務的同步58非搶占式擴展任務的同步非搶占式擴展任務的同步59事件相關的函數事件相關的函數606.資源管理資源管理 資源管理用于調整不同優先級的任務對共享的資源的訪問,資源管理用于調整不同優先級的任務對共享的資源的訪問,例如:管理實體(調度器)、程序片段、內存或者硬件區域。例如:管理實體(調度器)、程序片段、內存或者硬件區域。 對于所有的一致性類而言,資源管理是強制要求的。資對于所有的一致性類而言,資源管理是強制要求的。資源管理可以選擇性地擴展,用于協調任務和中斷服務例
42、程的源管理可以選擇性地擴展,用于協調任務和中斷服務例程的并發訪問。并發訪問。資源管理需要確保:資源管理需要確保:l兩個任務不能同時占用同一資源兩個任務不能同時占用同一資源l不能夠發生優先權倒置不能夠發生優先權倒置l在使用這些資源時,不允許死鎖的發生在使用這些資源時,不允許死鎖的發生l訪問資源不允許導致等待態訪問資源不允許導致等待態61如果在中斷的層次擴展資源管理,還必須確保兩個任務如果在中斷的層次擴展資源管理,還必須確保兩個任務或者中斷例程不能同時占用同一資源或者中斷例程不能同時占用同一資源在以下的情況中,資源管理的功能是非常有用的:在以下的情況中,資源管理的功能是非常有用的:l搶占式任務搶占
43、式任務l在非搶占式任務的環境中,如果用戶計劃在其它的在非搶占式任務的環境中,如果用戶計劃在其它的調度策略下,執行應用程序代碼調度策略下,執行應用程序代碼l在任務或者中斷服務例程之間實現資源共享在任務或者中斷服務例程之間實現資源共享l在中斷服務例程中實現資源共享在中斷服務例程中實現資源共享62l該標準提供能用于臨界區的二進制資源。優先級該標準提供能用于臨界區的二進制資源。優先級反轉和死鎖通過稱之為反轉和死鎖通過稱之為OSEKOSEK優先級天花板協議來優先級天花板協議來避免。避免。 l該協議在實際上采用的靜態優先級:該協議在實際上采用的靜態優先級: l每個資源被分配一個天花板,它是使用該資源的所有
44、任每個資源被分配一個天花板,它是使用該資源的所有任務(包括務(包括ISRISR)中最高優先級任務的優先級。)中最高優先級任務的優先級。 l當一個任務請求一個資源時,他的當前優先級升為資源當一個任務請求一個資源時,他的當前優先級升為資源的天花板。的天花板。l當任務釋放一個資源,該任務的優先級被重新設置為資當任務釋放一個資源,該任務的優先級被重新設置為資源請求以前的優先級。源請求以前的優先級。 63l采用該協議,優先級反轉、鏈路阻塞、死鎖被避采用該協議,優先級反轉、鏈路阻塞、死鎖被避免。而且,由于一個任務只有所有的資源被釋放免。而且,由于一個任務只有所有的資源被釋放時才能被調度,因此不需要等待隊列
45、。時才能被調度,因此不需要等待隊列。 l資源僅被任務使用。在資源僅被任務使用。在OSEKOSEK標準中,資源可以被標準中,資源可以被任務或任務或2 2類中斷服務例程使用。當一個中斷使用資類中斷服務例程使用。當一個中斷使用資源時被視為是最高優先級任務:它的執行能被延源時被視為是最高優先級任務:它的執行能被延遲當更低優先級中斷服務例程或任務采用天花板遲當更低優先級中斷服務例程或任務采用天花板的高于或等于該中斷例程優先級訪問該資源時。的高于或等于該中斷例程優先級訪問該資源時。 64資源使用時的限制資源使用時的限制l當資源被占用時,當資源被占用時, TerminateTask, ChainTask,
46、TerminateTask, ChainTask, ScheduleSchedule, , WaitEvent WaitEvent 不能調用。使用被占用的不能調用。使用被占用的資源的中斷服務程序將不能完成。資源的中斷服務程序將不能完成。l當一個任務占用多個資源時,應按后進先出當一個任務占用多個資源時,應按后進先出(LIFOLIFO)的原則釋放資源。)的原則釋放資源。65調度器作為資源調度器作為資源l標準還提供特殊的資源,調度器成為標準還提供特殊的資源,調度器成為RES_SCHEDULER RES_SCHEDULER ,它能使搶占不能產生。當搶占,它能使搶占不能產生。當搶占式任務在處理某段程序時
47、要求連續運行,可以通式任務在處理某段程序時要求連續運行,可以通過獲取資源過獲取資源RES_SCHEDULERRES_SCHEDULER鎖住調度器。實際上,鎖住調度器。實際上,該資源的天花板等于系統最高優先級。一個非搶該資源的天花板等于系統最高優先級。一個非搶占任務可以認為是使用了占任務可以認為是使用了RES_SCHEDULER RES_SCHEDULER 資源的資源的任務。任務。 l此時,中斷同樣會被響應和處理,但不會產生調此時,中斷同樣會被響應和處理,但不會產生調度。度。66同步機制產生的問題同步機制產生的問題l優先級反轉優先級反轉67l死鎖死鎖68l外部資源:需要通過顯示調用外部資源:需要
48、通過顯示調用API進行占有進行占有69優先級置頂優先級置頂70搶占式任務和中斷服務程序之間的資源分配搶占式任務和中斷服務程序之間的資源分配71在中斷服務程序之間的資源分配在中斷服務程序之間的資源分配72內部資源內部資源l一個內部資源是一個簡單的資源,當一個任務啟動時,一個內部資源是一個簡單的資源,當一個任務啟動時,它被加鎖,當這個任務結束時才被解鎖。內部資源的它被加鎖,當這個任務結束時才被解鎖。內部資源的天花板可被視為任務的優先權。天花板可被視為任務的優先權。73l內部資源:任務一運行就占有內部資源:任務一運行就占有74l報警(報警(Alarm)l兩級報警兩級報警l報警動作報警動作l激活任務激
49、活任務l設置事件設置事件l調用回調函數調用回調函數 根據配置,當該報警有根據配置,當該報警有效時,回調例程被調用或效時,回調例程被調用或任務被激活,或者一個事任務被激活,或者一個事件被設置。在報警回調函件被設置。在報警回調函數運行時,數運行時,2 2類中斷被禁類中斷被禁止。止。7報警報警75計數器計數器l一個計數器通過硬件提供的節拍來實現計數。一個計數器通過硬件提供的節拍來實現計數。 OSEKOSEK不支持標準不支持標準APIAPI直接操作計數器。直接操作計數器。l操作系統關心的是怎樣管理報警。操作系統關心的是怎樣管理報警。lOSEKOSEK操作系統提供至少一個計數器(硬件或者軟操作系統提供至
50、少一個計數器(硬件或者軟件定時器)。件定時器)。76報警管理報警管理l操作系統在報警產生時提供任務激活、設置事件操作系統在報警產生時提供任務激活、設置事件或調用一個報警回調例程。報警回調例程是由應或調用一個報警回調例程。報警回調例程是由應用程序提供一個簡短的函數。用程序提供一個簡短的函數。l當與報警關聯的計數器計數達到設定值時,產生當與報警關聯的計數器計數達到設定值時,產生報警。可以通過相對值或絕對值來設置報警關聯報警??梢酝ㄟ^相對值或絕對值來設置報警關聯的計數器。的計數器。l報警可以定義為單次報警或周期報警。報警可以定義為單次報警或周期報警。l操作系統還提供取消報警和獲取報警值函數。操作系統
51、還提供取消報警和獲取報警值函數。77報警管理的分層模型報警管理的分層模型78報警回調例程報警回調例程l一個報警回調例程可以無參數或返回值。一個報警回調例程可以無參數或返回值。l回調例程應按下面格式定義回調例程應按下面格式定義:ALARMCALLBACK(AlarmCallbackRoutineName);ALARMCALLBACK(AlarmCallbackRoutineName);l例如:ALARMCALLBACK(BrakePedalStroke)ALARMCALLBACK(BrakePedalStroke) / /* * do application processing do appl
52、ication processing * */ / 798消息消息l消息主要用于處理器內部和處理器之間進行通信。消息主要用于處理器內部和處理器之間進行通信。lOSEK COMOSEK COM對消息進行了詳細說明。對消息進行了詳細說明。80本節提要本節提要OSEK標準介紹標準介紹OSEK OS標準標準AutoOSEK 內核設計內核設計OSEK COM標準標準OSEK OIL標準標準81OSEK COMlOSEKOSEK標準也包含了車輛內部通信的接口和協議的規定,稱標準也包含了車輛內部通信的接口和協議的規定,稱為為OSEK COMOSEK COM。通信條款規定了整個車輛中兩個結點之間的。通信條款規
53、定了整個車輛中兩個結點之間的通信和一個結點的內部的通信?;舅枷胧菫閼脤犹峁┩ㄐ藕鸵粋€結點的內部的通信?;舅枷胧菫閼脤犹峁┮粋€易于實現不同硬件之間通信的獨立于具體通信介質的一個易于實現不同硬件之間通信的獨立于具體通信介質的標準的通信接口。標準的通信接口。lCOMCOM規范給內部通信和外部通信定義了公共的軟件通信接口規范給內部通信和外部通信定義了公共的軟件通信接口和服務,這些接口和服務獨立于所采用的通信協議。通過和服務,這些接口和服務獨立于所采用的通信協議。通過這些,就增加了應用程序軟件模塊的可移植性。這些,就增加了應用程序軟件模塊的可移植性。 82l OSEK COM OSEK COM
54、提供了在任務間、提供了在任務間、ISRISR間以及任務和間以及任務和ISRISR之間傳之間傳輸數據的服務。這些任務可以在一個輸數據的服務。這些任務可以在一個ECUECU里面也可以在不同里面也可以在不同的的ECUECU里面。只能通過指定的里面。只能通過指定的APIAPI函數訪問函數訪問OSEK COMOSEK COM服務。服務。這些這些APIAPI函數隱藏了內部通信和外部通信的不同之處,同時函數隱藏了內部通信和外部通信的不同之處,同時也隱藏了不同的通信協議、總線系統和網絡類型。也隱藏了不同的通信協議、總線系統和網絡類型。 83lCOM的概念模型的概念模型84lOSEK COMOSEK COM包括
55、包括: : l一個交互層:為消息的傳輸提供通信服務一個交互層:為消息的傳輸提供通信服務 l一個網絡層:為不同的消息和分段傳輸提供服務。一個網絡層:為不同的消息和分段傳輸提供服務。l一個數據鏈路層接口:為上層不同數據包的網絡傳輸提一個數據鏈路層接口:為上層不同數據包的網絡傳輸提供服務。供服務。 lOSEK COM OSEK COM 提供豐富的通信工具集,但許多應用只提供豐富的通信工具集,但許多應用只會用到其中的一個子集。正因為此,該標準定義會用到其中的一個子集。正因為此,該標準定義了一個一致類集合,使了一個一致類集合,使OSEK COMOSEK COM能夠按照不同的能夠按照不同的要求進行集成,為
56、不同的汽車供應商提供不同集要求進行集成,為不同的汽車供應商提供不同集成軟件需求。成軟件需求。 85lOSEK COM OSEK COM 按照通信一致類(按照通信一致類(CCCsCCCsCommunication Conformance Classes)Communication Conformance Classes)定義這些定義這些分層。一致類的主要目的是根據不同應用需要和分層。一致類的主要目的是根據不同應用需要和CPUCPU特征定義不同功能的通信組成。特征定義不同功能的通信組成。OSEK COM OSEK COM 定定義了義了4 4個通信一致類來為個通信一致類來為ECUECU的內部通信到外
57、部通的內部通信到外部通信提供支持。信提供支持。通信一致類通信一致類86lCCCA:CCCA:lCCCA CCCA 定義最少的特征用于支持內部通信。非隊列消息被支定義最少的特征用于支持內部通信。非隊列消息被支持。持。lCCCB:CCCB:lCCCBCCCB定義的特征用于支持內部通信。定義的特征用于支持內部通信。 除了除了CCCACCCA支持以外,支持以外,還包括消息狀態信息和隊列消息。還包括消息狀態信息和隊列消息。lCCC0:CCC0:lCCC0 CCC0 定義最少的特征支持內部通信和外部通信,所有的定義最少的特征支持內部通信和外部通信,所有的CCCACCCA和和2 2類通知,字節順序轉換,直接
58、傳輸模式。類通知,字節順序轉換,直接傳輸模式。lCCC1:CCC1:l支持所用支持所用OSEK COMOSEK COM定義的特征。定義的特征。8788消息傳送和接收模型消息傳送和接收模型89外部接收模型外部接收模型90外部傳送模型外部傳送模型91外部消息的傳送模式外部消息的傳送模式l直接傳送直接傳送l消息根據應用層調用直接發送。消息根據應用層調用直接發送。l周期傳送周期傳送lIPDU中的消息按照設置的周期進行傳送。中的消息按照設置的周期進行傳送。l混合傳送混合傳送l消息采用直接和周期混合模式進行發送。消息采用直接和周期混合模式進行發送。92lOSEK COMOSEK COM只支持靜態長度消息,
59、一個消息被定義成只支持靜態長度消息,一個消息被定義成固定長度,或者定義一個消息可以變化的最大長度。固定長度,或者定義一個消息可以變化的最大長度。lOSEK COMOSEK COM提供超時監測(死限)機制。提供超時監測(死限)機制。lOSEK COMOSEK COM提供過濾機制。提供過濾機制。l在發送方,采用過濾算法,如果不滿足要求,在發送方,采用過濾算法,如果不滿足要求,IPDUIPDU數據不數據不會被更新。會被更新。l在發送方,內部消息不需要過濾。在發送方,內部消息不需要過濾。l在接收方,內部消息和外部消息都可以采用過濾。在接收方,內部消息和外部消息都可以采用過濾。93直接傳輸直接傳輸94周
60、期傳輸周期傳輸95混合傳輸混合傳輸96網絡字節順序轉換網絡字節順序轉換小端模式小端模式大端模式大端模式97消息配置消息配置l配置主要包括配置主要包括: :l消息傳送屬性的配置,消息傳送屬性的配置,IPDUIPDU傳輸模式的配置。傳輸模式的配置。l消息的打包。消息的打包。 Packing of the messages to I-PDUs Packing of the messages to I-PDUs (see section 2.4 for details).(see section 2.4 for details).l接收是否采用隊列及隊列的大小接收是否采用隊列及隊列的大小98l內部通信
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 高中科學探究:科學探究與TiO?石墨烯光催化技術實驗的結合教學論文
- 繪本教學在小學英語課堂中的創新與挑戰研究論文
- 智能家居節能技術在智能家居產品中的市場競爭力分析論文
- 藝術班培訓管理制度
- 芽苗菜栽培管理制度
- 茶葉類門店管理制度
- 除雪劑使用管理制度
- 訪問控制策略安全評估
- 財務會計建筑業會計科目
- 大班幼兒散文詩四季的禮物
- API RP 1175-2022 管道泄漏檢查計劃管理
- 2025年突發流行性傳染性疾病應急演練方案及總結
- 安能快遞加盟合同協議
- 2024年大學生就業力調研報告-智聯招聘-202405
- 防靜電地膠板施工工藝及技術方案、措施
- 縫紉車間安全培訓課件
- 成人ICU患者外周動脈導管管理專家共識解讀
- 電力設備預防性試驗及維護合同
- 2025年各地低空經濟政策匯編
- 搬運重物安全培訓
- 2025年共青團入團考試測試題庫及答案
評論
0/150
提交評論