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