色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 基于OSEK/VDX的嵌入式車用操作系統(tǒng)研究

          基于OSEK/VDX的嵌入式車用操作系統(tǒng)研究

          作者: 時間:2007-11-01 來源:網(wǎng)絡(luò) 收藏

          摘要:為了提供一個開放、自主、實用的汽車電子軟件開發(fā)平臺,介紹了當(dāng)前在國際汽車工業(yè)界日益占據(jù)主導(dǎo)地位的汽車電子開放式平臺系統(tǒng)()規(guī)范;其中著重分析了關(guān)于內(nèi)核的定義,并且在免費的實時μC/OS-Ⅱ的基礎(chǔ)上,分析兩者技術(shù)特點之間的差異;通過修改μC/OS-Ⅱ內(nèi)核的部分功能使之符合規(guī)范,并提出了實時的設(shè)計思想。
          關(guān)鍵詞:;μC/OS-Ⅱ;實時操作系統(tǒng);內(nèi)核

          引言

          隨著汽車工業(yè)的飛速發(fā)展,電子技術(shù)在汽車上的應(yīng)用比重不斷增加。為了滿足日益復(fù)雜的汽車電子控制軟件的開發(fā)需要,實現(xiàn)應(yīng)用軟件的可移植性和不同廠商的控制模塊間的可兼容性,1993年德國汽車工業(yè)界聯(lián)合推出了“汽車電子的開放式系統(tǒng)及接口軟件規(guī)范”,即OSEK(open system and the corresponding interfaces for automotive electronics)。1994年法國汽車工業(yè)界的相似規(guī)范VDX(vehicle distributed executive)和OSEK規(guī)范合并,從而形成OSEK/VDX規(guī)范體系。

          此規(guī)范主要由4部分組成:操作系統(tǒng)規(guī)范(OSEKOS)、通信規(guī)范(OSEKCOM)、網(wǎng)絡(luò)管理規(guī)范(OSEKNM)和OSEK實現(xiàn)語言(OSEKOIL)。其中OSEKOS是針對汽車應(yīng)用特點而專門制定的一個小型RTOS規(guī)范,著重以下幾個方面:①可移植性,所有API都是標(biāo)準(zhǔn)化的并且在功能上都有明確的定義;②可擴(kuò)展性,OSEKOS旨在通用于任何類型的 ECU,因此一方面系統(tǒng)要高度的模塊化,另一方面又要能進(jìn)行靈活的配置;③汽車應(yīng)用的特定需求,諸如可靠性、實用性和代價敏感性等。相應(yīng)的,OSEKOS 靜態(tài)配置可以通過OS2EKOIL語言實現(xiàn),用戶在系統(tǒng)生成時靜態(tài)制定任務(wù)的個數(shù)、需要的資源和系統(tǒng)服務(wù)。OSEKCOM為通信網(wǎng)絡(luò)中的數(shù)據(jù)交換提供了標(biāo)準(zhǔn)的接口和協(xié)議。OSEKNM為監(jiān)視網(wǎng)絡(luò)的流量提供了一組標(biāo)準(zhǔn)的功能函數(shù),以保證網(wǎng)絡(luò)的安全性和可靠性。

          μC/OS-Ⅱ是一個著名的源代碼公開的實時內(nèi)核,專門為應(yīng)用設(shè)計的。它的主要性能特點如下:①源代碼公開。這樣很容易就能把操作系統(tǒng)移植到各個不同的硬件平臺上;②可移植性。μC/OS-Ⅱ絕大部分源代碼是用C語言寫的,而與微處理器硬件相關(guān)的那部分是用匯編語言寫的,使得μC/OS-Ⅱ便于移植到其他的微處理器上;③可固化。只要開發(fā)者有固化手段,μC/OS-Ⅱ可以嵌入到開發(fā)者的系統(tǒng)中;④可裁剪性(Scalable)。開發(fā)者可以有選擇的使用μC/OS-Ⅱ中應(yīng)用程序需要的那些系統(tǒng)服務(wù),可以減少μC/OS-Ⅱ所需的存儲空間;⑤占先(Preemp2tive)。μC/OS-Ⅱ完全是占先式的實時內(nèi)核;⑥多任務(wù)(Multi-Tasking)。μC/OS-Ⅱ可以管理64個任務(wù),但是目前應(yīng)用程序最多有56個任務(wù);⑦可確定性 (Affirmable)。μC/OS-Ⅱ系統(tǒng)服務(wù)的執(zhí)行時間不依賴于應(yīng)用程序任務(wù)的多少;⑧實用性和可靠性。許多的行業(yè)都有成功應(yīng)用該實時內(nèi)核的實例,這些應(yīng)用的實踐是該內(nèi)核實用性和可靠性的最好證據(jù)。

          OSEKOS結(jié)構(gòu)特點及運行機(jī)制

          OSEKOS的結(jié)構(gòu)特點
          (1)高實時性。由于在汽車控制領(lǐng)域,如果出現(xiàn)絲毫的差錯會導(dǎo)致危及生命安全的嚴(yán)重后果,因此要求具有高度的實時性。OSEKOS所有的系統(tǒng)對象由用戶在建立時靜態(tài)創(chuàng)建,避免了動態(tài)創(chuàng)建時的時間消耗,增強(qiáng)了其實時性。而且通過占先式的調(diào)度策略和警報機(jī)制也能滿足實時性需求;

          (2)標(biāo)準(zhǔn)化應(yīng)用接口。其制定了標(biāo)準(zhǔn)的應(yīng)用程序編程接口,這樣可以屏蔽底層硬件結(jié)構(gòu)的不同而提供一個一致的開發(fā)環(huán)境。并且用戶只需修改OIL配置文件中與硬件相關(guān)的部分,可以方便地在不同的ECU上進(jìn)行移植;

          (3)可裁剪性。其具有高度模塊化和可靈活配置的特性,用OIL語言進(jìn)行裁剪,可以在很少的硬件資源環(huán)境下運行。

          OSEKOS運行機(jī)制分析

          任務(wù)管理
          OSEK規(guī)范將任務(wù)分為基本任務(wù)和擴(kuò)展任務(wù)?;救蝿?wù)具有3種狀態(tài):運行狀態(tài)、就緒狀態(tài)和掛起狀態(tài)。擴(kuò)展任務(wù)多了一個等待狀態(tài)。此外基本任務(wù)只在開始和結(jié)束時才有同步點,所以其需要的資源少,而擴(kuò)展任務(wù)可以對應(yīng)不同的時間,在運行中可能有多個同步點,所以對環(huán)境要求高。操作系統(tǒng)的任務(wù)之間的同步通過調(diào)度程序來實現(xiàn)。OSEK規(guī)范支持3種調(diào)度方式:①完全搶占式調(diào)度。該策略用于保存現(xiàn)場的內(nèi)存開銷較大,理論上可以在任務(wù)的任何位置重調(diào)度,因此任務(wù)必須同步訪問共享資源,增加了系統(tǒng)的復(fù)雜性;②非搶占調(diào)度。此策略通過調(diào)用某些服務(wù)例程實現(xiàn)任務(wù)切換,即用戶設(shè)置重調(diào)度點。通過定義任務(wù)組,可以使多個任務(wù)同時具有搶占或非搶占調(diào)度的特征;③混合搶占調(diào)度。搶占任務(wù)和非搶占任務(wù)共存于一個系統(tǒng)時,使用“混合搶占”調(diào)度策略。在這種情況下,調(diào)度策略依賴于正在運行任務(wù)的搶占特性,開發(fā)者通過配置任務(wù)優(yōu)先級和搶占屬性來定義任務(wù)執(zhí)行順序。

          一致類
          為了更加靈活的配置操作系統(tǒng)調(diào)度,OSEK規(guī)范定義了4種一致類:BCC1、BCC2、ECC1和ECC2。其根據(jù)每個優(yōu)先級可能有的任務(wù)個數(shù),需要的是基本任務(wù)還是擴(kuò)展任務(wù)來進(jìn)行劃分。若每個優(yōu)先級上只有一個任務(wù),且是基本任務(wù)則定義一致類為BCC1,是擴(kuò)展任務(wù)則定義為BCC2;若每個優(yōu)先級上可以有多個任務(wù),且是基本任務(wù)則定義一致類為ECC1,是擴(kuò)展任務(wù)則定義為ECC2。

          中斷處理
          OSEK規(guī)范定義了2種中斷服務(wù)程序:①ISR1。此類中斷程序不使用操作系統(tǒng)的資源,中斷結(jié)束后,處理程序從產(chǎn)生中斷的地方繼續(xù)執(zhí)行。其對任務(wù)的管理沒有影響,不要求調(diào)用操作系統(tǒng)的API。②ISR2。此類中斷程序是系統(tǒng)生成時,通過用戶子程序配置而成,它可以調(diào)用操作系統(tǒng)的API。中斷的優(yōu)先級高于任務(wù),因此可以搶占任何任務(wù)。

          事件機(jī)制
          事件機(jī)制用于保證不同擴(kuò)展任務(wù)之間的同步。該機(jī)制含義是,一個處于等待狀態(tài)的擴(kuò)展進(jìn)程,只有當(dāng)它所等待的事件至少有一個發(fā)生,才能進(jìn)入就緒態(tài),并且事件的發(fā)生會以信號的方式傳給該進(jìn)程。只有擴(kuò)展任務(wù),才具有事件。

          資源管理
          具有不同優(yōu)先級的多任務(wù)訪問共享資源需要使用資源管理機(jī)制進(jìn)行協(xié)調(diào)。這些資源可以是一段臨界區(qū)代碼、調(diào)度程序、共享內(nèi)存或是數(shù)據(jù)結(jié)構(gòu),也可以是共享硬件設(shè)備。系統(tǒng)在處理多個進(jìn)程對共享資源的互斥訪問時,采用信號量對臨界區(qū)數(shù)據(jù)或資源加鎖,但是這樣可能會導(dǎo)致優(yōu)先級反轉(zhuǎn)。為了避免這種情況出現(xiàn),OSEK采用了優(yōu)先級最高限度協(xié)議(PCP),即當(dāng)一個進(jìn)程占用了一個資源后,該進(jìn)程的優(yōu)先級會臨時升高為該資源優(yōu)先級。當(dāng)該任務(wù)釋放了資源后,其優(yōu)先級回到要求訪問資源前的優(yōu)先級。使用該協(xié)議同時也解決了死鎖的問題。

          報警器
          報警器是OSEK為處理循環(huán)事件提供的服務(wù)機(jī)制,警報或者系統(tǒng)時鐘,或者其他的某種計數(shù)器。當(dāng)計數(shù)器到達(dá)警報設(shè)置值時被觸發(fā),此時可以激活進(jìn)程也可以為某進(jìn)程設(shè)置事件,或者執(zhí)行一個警報回調(diào)程序。

          消息處理
          任務(wù)之間是通過消息實現(xiàn)通信的,消息是應(yīng)用數(shù)據(jù)的容器,只有一個發(fā)送者,但是可以有多個接受者。OSEK規(guī)范將消息分為可排隊和不可排隊的。前者是靜態(tài)長度消息,內(nèi)部數(shù)據(jù)被組織成FIFO隊列,能被接受服務(wù)例程移走;不可排隊消息是不斷被刷新的消息,不能被服務(wù)例程移走。

          錯誤處理
          OSEKOS提供了系統(tǒng)專用的鉤子程序,以便在操作系統(tǒng)內(nèi)部操作時執(zhí)行用戶定義的函數(shù)。鉤子程序可用于:系統(tǒng)啟動,相應(yīng)鉤子程序在操作系統(tǒng)啟動后,進(jìn)入調(diào)度程序之前執(zhí)行;系統(tǒng)關(guān)閉,相應(yīng)鉤子程序在應(yīng)用或操作系統(tǒng)(此時發(fā)生嚴(yán)重錯誤)請求系統(tǒng)停止運行時執(zhí)行;跟蹤、調(diào)試應(yīng)用以及現(xiàn)場切換時調(diào)用用戶定義的擴(kuò)展程序;錯誤處理。

          μC/OS-Ⅱ的OSEKOS設(shè)計

          OSEKOS設(shè)計理念
          根據(jù)OSEK規(guī)范和μC/OS-Ⅱ的內(nèi)核要求,CC1和ECC1這2個符合級別都只允許一個優(yōu)先級有一個進(jìn)程,因此可以將優(yōu)先級從0到N-1分配給N個進(jìn)程,使每個進(jìn)程分配到的優(yōu)先級不同,N是系統(tǒng)中的進(jìn)程數(shù)量,這樣可以使修改后的μC/OS-Ⅱ內(nèi)核滿足ECC1類模式。由于BCC2和ECC2這2個符合級別可以允許每個優(yōu)先級有多個進(jìn)程,因此要使用復(fù)雜的調(diào)度策略來追蹤各個進(jìn)程。
          設(shè)計的OSEKOS可以采用μC/OS-Ⅱ的調(diào)度結(jié)構(gòu)――就緒表,使用簡單的占先式的調(diào)度策略,將每個進(jìn)程的就緒態(tài)標(biāo)志都放入就緒表中,然后從其中找到優(yōu)先級最高的就緒態(tài)進(jìn)程執(zhí)行,實現(xiàn)一個基于優(yōu)先級的可剝奪型的實時內(nèi)核。這樣不僅可以提高系統(tǒng)的實時性,而且可以降低操作系統(tǒng)的CPU負(fù)荷。對于BCC2和 ECC2這2個符合級別而言,可以在基于優(yōu)先級的占先式調(diào)度策略基礎(chǔ)上添加時間片輪換調(diào)度算法來處理優(yōu)先級相同的2個任務(wù)之間的調(diào)度;也可以為每個優(yōu)先級增加一個FIFO隊列,先以任務(wù)優(yōu)先級為檢索,然后選擇該進(jìn)程隊列中位于對首的進(jìn)程運行。但是這樣會犧牲一定的實時性,并且加大CPU的負(fù)荷,占用更多的 RAM。

          為了提高OSEKOS的可移植性和利于OSEKOS的配置,按照μC/OS-Ⅱ的內(nèi)核結(jié)構(gòu)將其分為3部分:硬件無關(guān)部分、硬件相關(guān)部分和應(yīng)用相關(guān)部分。這樣可以使其在不同的硬件之間移植時更加的方便,將與應(yīng)用相關(guān)部分放入配置文件內(nèi),便于用戶使用。

          μC/OS-Ⅱ在處理多個進(jìn)程對共享資源的互斥訪問時,主要是采用開關(guān)中斷與信號量來對臨界區(qū)數(shù)據(jù)或資源加鎖,使用互斥型信號量管理來避免優(yōu)先級反轉(zhuǎn),通過允許用戶在申請信號量時定義等待超時化解死鎖問題。OSEKOS是通過采用優(yōu)先級最高限度協(xié)議(PCP)來避免優(yōu)先級反轉(zhuǎn)和死鎖問題??梢酝ㄟ^在系統(tǒng)生成期間,靜態(tài)分配每一資源的最高限度優(yōu)先級,使設(shè)計的OS2EKOS執(zhí)行PCP協(xié)議,達(dá)到兼容OSEK規(guī)范的目的。

          根據(jù)OSEK規(guī)定的2類中斷,針對具體的處理器平臺,實現(xiàn)中斷管理的標(biāo)準(zhǔn)API,并且根據(jù)μC/OS-Ⅱ提供非OSEK標(biāo)準(zhǔn)的API:開/關(guān)中斷。由于是基于ECC1類模式來實現(xiàn)OSEKOS,所以支持OSEK規(guī)范定義的事件機(jī)制,可用于實現(xiàn)任務(wù)之間的同步協(xié)調(diào)。根據(jù)μC/OS-Ⅱ,可以支持的事件種類有信號量、互斥型信號量、郵箱和消息隊列。由μC/OS-Ⅱ提供的時間管理和定時中斷功能,實現(xiàn)OSEKOS中要求的警報器管理,以進(jìn)一步提高操作系統(tǒng)的實時性和安全性。在μC/OS-Ⅱ中,定義了一系列與OSEKOS規(guī)范要求類似的鉤子程序,用于實現(xiàn)用戶自己定義的函數(shù)。

          OSEKOS基本結(jié)構(gòu)的組成
          由于OSEKOS中的標(biāo)準(zhǔn)應(yīng)用程序接口(API)定義在操作系統(tǒng)的核心空間,根據(jù)以上設(shè)計理念可以將操作系統(tǒng)按功能分為進(jìn)程管理和調(diào)度、資源管理、警報與計數(shù)器管理、事件管理和中斷管理,其結(jié)構(gòu)組成如圖1所示。其中進(jìn)程管理與調(diào)度是整個操作系統(tǒng)的核心,其他的管理機(jī)制為它提供不同的服務(wù)支持。

          圖1 OSEKOS結(jié)構(gòu)組成圖

          每個進(jìn)程都通過一個進(jìn)程控制塊(TCB)來管理,在進(jìn)程管理模塊中,實現(xiàn)OSEK標(biāo)準(zhǔn)API:激活進(jìn)程、終止進(jìn)程、連接進(jìn)程、調(diào)度、捕獲當(dāng)前運行進(jìn)程ID 和獲得進(jìn)程狀態(tài)。資源管理模塊實現(xiàn)OSEK標(biāo)準(zhǔn)API:獲得資源、釋放資源。計數(shù)器管理沒有標(biāo)準(zhǔn)API,警報管理結(jié)構(gòu)由警報和警報行為組成。其標(biāo)準(zhǔn) API:獲得警報信息、獲得警報到期所需時間、設(shè)置相對警報、設(shè)置絕對警報和消除警報。事件管理模塊實現(xiàn)的OSEK標(biāo)準(zhǔn)API:等待事件、設(shè)置事件、消除事件和獲得進(jìn)程的時間狀態(tài)。實現(xiàn)中斷管理的標(biāo)準(zhǔn)API:開/關(guān)所有中斷和開/關(guān)第二類中斷。

          結(jié)束語

          根據(jù)OSEKOS規(guī)范和μC/OS-Ⅱ內(nèi)核實現(xiàn)的不同技術(shù)特點,提出OSEKOS的一些設(shè)計思想,并且設(shè)計出OSEKOS的基本結(jié)構(gòu)組成。 OSEK/VDX體系的建立給國際汽車工業(yè)帶來深遠(yuǎn)的影響,采用基于OSEK/VDX規(guī)范的RTOS進(jìn)行開發(fā)能節(jié)省開發(fā)時間,降低成本,提高軟件質(zhì)量和模塊的可移植性,而且需要的資源少。因此,基于OSEK/VDX規(guī)范的操作系統(tǒng)具有重要的意義。

          linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)


          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉