汽車電子控制器中目前基本遵循AUTOSAR規(guī)范,而其中操作系統(tǒng)作為BSW的重頭戲,始終讓學(xué)習(xí)AUTOSAR的同學(xué)望而生畏,進(jìn)而望而卻步。所以,今天整理下基于AUTOSAR規(guī)范的操作系統(tǒng)知識(shí),方便大家學(xué)習(xí),以供參考。
0 為什么需要OS?
現(xiàn)在嵌入式系統(tǒng)紛繁復(fù)雜,這點(diǎn)毋庸置疑,但是為什么需要操作系統(tǒng)呢?有沒有仔細(xì)思考過。其實(shí)在早期的嵌入式系統(tǒng)中,是沒有操作系統(tǒng)概念的。相信做嵌入式開發(fā)的同學(xué)都能理解,在main()函數(shù)中,寫個(gè)while循環(huán),再加個(gè)定時(shí)器,按照分時(shí)間片的方式,定時(shí)執(zhí)行代碼,就可以完成簡(jiǎn)單的調(diào)度。
但是,現(xiàn)在不一樣了,系統(tǒng)越來越復(fù)雜了,以前那種簡(jiǎn)單粗暴的調(diào)度已經(jīng)無法滿足要求。說到系統(tǒng)復(fù)雜,主要原因有如下幾點(diǎn):
- 任務(wù)多樣化;
- 周期復(fù)雜化;
- 分層調(diào)用嵌套;
- 多核系統(tǒng)引入;
舉個(gè)例子。比如,我們有個(gè)三核系統(tǒng),其中core0負(fù)責(zé)應(yīng)用功能ASW,core1負(fù)責(zé)基礎(chǔ)功能BSW,core2負(fù)責(zé)系統(tǒng)監(jiān)控、功能安全和診斷等。如何在功能運(yùn)行時(shí),滿足其正常任務(wù)的調(diào)度,同時(shí)系統(tǒng)代碼指令和監(jiān)控等也同步呢?在main()函數(shù)里,我們通過循環(huán)語句加定時(shí)器再試試看,估計(jì)要“難于上青天”了吧。
所以,就需要一個(gè)叫做操作系統(tǒng)的東西出現(xiàn)。它管理任務(wù)和事件的調(diào)度、不同任務(wù)之間的數(shù)據(jù)流,并提供監(jiān)視和錯(cuò)誤處理功能。操作系統(tǒng)為實(shí)時(shí)應(yīng)用提供所有基本服務(wù),包括中斷處理、調(diào)度、系統(tǒng)時(shí)間和時(shí)鐘同步、本地消息處理,以及錯(cuò)誤檢測(cè)機(jī)制。
1 AUTOSAR OS特點(diǎn)
操作系統(tǒng)可以根據(jù)它們的特征被分成不同的組,比如靜態(tài)配置和動(dòng)態(tài)管理。要對(duì)AUTOSAR操作系統(tǒng)(下文簡(jiǎn)稱AUTOSAR OS)進(jìn)行分類,以下是其基本特征:
- 靜態(tài)配置
- 推斷系統(tǒng)的實(shí)時(shí)性能
- 提供基于優(yōu)先級(jí)的調(diào)度策略
- 運(yùn)行時(shí)提供保護(hù)功能(內(nèi)存、定時(shí)等)
- 無需外部資源,可嵌入低端控制器
所以,Autosar OS 和常見的OS(如linux系統(tǒng)OS)具有以下的區(qū)別:
- 在運(yùn)行時(shí)不會(huì)動(dòng)態(tài)創(chuàng)建新任務(wù);
- 屬于預(yù)編譯配置變體,必須在編譯之前定義所有任務(wù);
- 操作系統(tǒng)沒有動(dòng)態(tài)內(nèi)存管理,也沒有用于手動(dòng)控制任務(wù)的shell。
在AUTOSAR OS提出之前,在汽車電子領(lǐng)域其操作系統(tǒng)已經(jīng)經(jīng)歷了兩個(gè)階段,即non-OSEK OS和OSEK OS。
當(dāng)然,現(xiàn)在處于的第三個(gè)階段Autosar OS,是與OSEK兼容的操作系統(tǒng),但是具有多個(gè)擴(kuò)展性能。例如可擴(kuò)展功能:調(diào)度表,OS applications,內(nèi)存保護(hù)和時(shí)序保護(hù)。OSEK OS 特別提供了以下特性支持AUTOSAR:
- 基于優(yōu)先級(jí)調(diào)度
- 處理中斷的功能
- 中斷高于任務(wù)的優(yōu)先級(jí)
- 防止錯(cuò)誤使用OS 服務(wù)的保護(hù)措施
- StartOS和StartupHook 啟動(dòng)接口
- ShutdownOS和ShutdownHook 關(guān)閉接口
具體的OS的可擴(kuò)展級(jí)別分四級(jí):
SC1 | OSEK OS +計(jì)劃時(shí)間表 |
---|---|
SC2 | SC1 +時(shí)序保護(hù) |
SC3 | SC1 +內(nèi)存保護(hù) |
SC4 | SC1+SC2+SC3 |
2 AUTOSAR OS的對(duì)象
Autosar OS提供基于優(yōu)先級(jí)的調(diào)度策略,具有可搶占屬性和同步的機(jī)制,通過事件和資源的屬性來實(shí)現(xiàn)。AutosarOS提供以下對(duì)象進(jìn)行多任務(wù)執(zhí)行的管理,如 Alarms,Applications,Application modes,Counters,Events,ISRs,Register Sets,Resources,Schedule tables,Spinlocks,Tasks。 這些對(duì)象及其配置是AUTOSAR OS的重點(diǎn)內(nèi)容,后續(xù)我們會(huì)分別詳細(xì)解釋,這里簡(jiǎn)單介紹。
Alarms :警報(bào)器,就像我們的上課鈴聲,到時(shí)間就會(huì)響。操作系統(tǒng)用它來做一些定時(shí)的事,比如激活一個(gè)任務(wù)Task。
Applications :從字面意思理解,它是一個(gè)應(yīng)用,準(zhǔn)確地說,它應(yīng)該是一個(gè)分區(qū)。它部署到某個(gè)Core上,主要的作用就是管理放到其中的對(duì)象。為什么要這個(gè)東西呢?舉個(gè)不恰當(dāng)?shù)睦印?a target="_blank">MCU像一個(gè)國(guó)家,核就是它的省,那么Applications就可以理解成省管轄下的地級(jí)市。比如,某一天一個(gè)地級(jí)市里發(fā)現(xiàn)了大量新冠病毒感染者,為了防止擴(kuò)散,將該市封閉處理,以免擴(kuò)張到其他市區(qū)。想想看,當(dāng)這個(gè)市里出現(xiàn)疫情時(shí),是封閉整個(gè)省好呢,還是僅封閉該市好呢?顯然是后者。芯片里的劃區(qū)也是非常合理的。AUTOSAR OS 分區(qū)分為可信的和非可信的。
Application modes :用的極少,這里不展開介紹;
Counters :把Counter比作心臟比較合適,對(duì)于芯片來說,它就是晶振。在操作系統(tǒng)它的作用就是計(jì)時(shí)或者計(jì)數(shù),一般Counter與芯片的Timer結(jié)合起來,Counter的精度決定了操作系統(tǒng)能計(jì)時(shí)的準(zhǔn)確度。
Events: 事件。在嵌入式操作系統(tǒng)中,事件一般是和任務(wù)綁定一起來實(shí)現(xiàn)調(diào)度功能的,當(dāng)然也可以由Alarms來觸發(fā)。比如,我通過設(shè)定某個(gè)任務(wù)在10ms進(jìn)程執(zhí)行,10ms的任務(wù)就和該事件一起來實(shí)現(xiàn)。
ISRs: interrupt service routine,就是我們講的中斷。中斷的概念對(duì)于嵌入式開發(fā)的同學(xué)而言,應(yīng)該都比較熟悉。在AUTOSAR OS中中斷有兩種類型,Autosar OS中將中斷分為Cat1 和Cat2,即所謂的1類中斷和2類中斷,所謂的2類中斷其實(shí)就是完全被OS接管的中斷,這類中斷的上下文切換,堆棧管理全部由OS管理;而1類中斷則不被OS接管,因此它的上下文由自己管理。另外Autosar Os中要求Cat1的中斷的最低優(yōu)先級(jí)高于Cat2的最高優(yōu)先級(jí),也就是說Cat1的中斷優(yōu)先級(jí)更高。所以Cat1的中斷一般用于時(shí)間要求更緊急的場(chǎng)合。要知道,中斷有比任何任務(wù)都高的優(yōu)先級(jí),即中斷可以搶占任務(wù)。
Register Sets: 幾乎沒有使用,暫時(shí)不介紹。
**Resources:**資源。嵌入式系統(tǒng)內(nèi)部的資源是用來強(qiáng)制任務(wù)分組運(yùn)行的,在分組內(nèi)部,是沒有搶占一說的,即共享資源。當(dāng)然,中斷就不能使用內(nèi)部分組資源了。共享什么資源呢?比如棧的共用,為了降低系統(tǒng)的負(fù)荷,我們可以讓同分組的任務(wù)共用分配的棧資源,你用完我用,像和諧社會(huì)一般。
**Schedule tables:**調(diào)度表,可以將其理解為包含了很多調(diào)度點(diǎn)的表,Autosar Os中一般這么用調(diào)度表,比如有 1ms,2ms,5ms 三個(gè)周期需要調(diào)度的任務(wù),那么會(huì)根據(jù)公約數(shù),生成一個(gè)表,這個(gè)表在1ms 處調(diào)度1ms任務(wù),2ms處調(diào)度1ms和2ms任務(wù),4ms處調(diào)度1ms和2ms任務(wù),5ms處調(diào)度1ms和5ms任務(wù),10ms處調(diào)度1ms,2ms,5ms任務(wù),然后按照這樣的關(guān)系循環(huán),這就是所謂的調(diào)度表。目前有部分主流的Autosar開發(fā)商使用這種方式進(jìn)行任務(wù)的調(diào)度。當(dāng)然,Schedule Table有自己的狀態(tài)機(jī),Schedule Table調(diào)度方式最大的好處在于保持調(diào)度的同步性。
Spinlocks: 沒有項(xiàng)目使用,暫不介紹。
**Tasks:**任務(wù)應(yīng)該也比較熟悉,Autosar Os有些自己的性質(zhì),簡(jiǎn)單介紹下。
Task 類型:
所謂的擴(kuò)展task,就是多了一個(gè)Waiting狀態(tài),因此它一般就是等待一個(gè)Event的到來。
此外Task的調(diào)度分為搶占式和協(xié)作式,對(duì)于可搶占的Task,OS會(huì)根據(jù)Task的優(yōu)先級(jí)進(jìn)行排序調(diào)度,優(yōu)先級(jí)高的可以搶占優(yōu)先級(jí)低的。在AUTOSAT OS中數(shù)字越大優(yōu)先級(jí)越高。
當(dāng)然,操作系統(tǒng)還有內(nèi)存保護(hù),時(shí)序保護(hù)和錯(cuò)誤機(jī)制等內(nèi)容,今天概覽性地介紹這些,后續(xù)有機(jī)會(huì)再分別詳細(xì)闡述。
-
控制器
+關(guān)注
關(guān)注
113文章
16727瀏覽量
180920 -
汽車電子
+關(guān)注
關(guān)注
3031文章
8144瀏覽量
168671 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
368瀏覽量
22119 -
BSW
+關(guān)注
關(guān)注
0文章
15瀏覽量
3553
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
實(shí)時(shí)操作系統(tǒng)和分時(shí)操作系統(tǒng)的區(qū)別
如何開發(fā)符合AUTOSAR規(guī)范的電機(jī)控制器軟件
嵌入式操作系統(tǒng)FreeRTOS的相關(guān)資料分享
介紹一種適配RT-Thread內(nèi)核的autosar操作系統(tǒng)
操作系統(tǒng)教程_孫鐘秀

操作系統(tǒng)原理_孫鐘秀
RTOS操作系統(tǒng)
計(jì)算機(jī)測(cè)控系統(tǒng)與操作系統(tǒng)概述集合【labview基礎(chǔ)知識(shí)】
全球及我國(guó)汽車操作系統(tǒng)發(fā)展現(xiàn)狀分析
關(guān)于操作系統(tǒng)知識(shí)詳細(xì)解讀

汽車操作系統(tǒng)和中間件的關(guān)系

AUTOSAR OS操作系統(tǒng)功能特性
普華車用操作系統(tǒng)與黑芝麻智能武當(dāng)C1200家族芯片完成適配

評(píng)論