AUTOSAR中的高速任務排程

2021-08-12 00:18:00 字數 4385 閱讀 6664

現代化汽車內部的電氣電子(e&e:electrical and electronic)功能在數量和複雜度上都增長了;這種新的複雜性驅使汽車製造商及其**商,組建了autosar的合作夥伴關係,其目標是在車輛電子控制單元內,定義乙個標準化但功能豐富的軟體架構。乙個常見的誤解是,在autosar系統內不能排程高速應用任務。本文將介紹autosar作業系統中,用於處理應用程式排程要求的機制,以及怎樣對作業系統進行成功的配置,使得軟體工程師在autosar系統內能夠繼續執行高速任務排程。

近年來,車輛內的電氣電子功能在數量和複雜度上都有成倍的增長。這一趨勢受到了汽車行業內的眾多因素的推動,其中包括基於電氣電子的終端使用者功能特性的需求增加、adas系統的出現和普及、以及對診斷電氣電子系統故障和電子控制單元(ecu:electronic control unit)失效越來越高的要求。

最新的汽車功能已經達到如此複雜的程度,使得傳統的汽車ecu效能和**商的開發方法,已經不能滿足現代汽車對電氣電子架構的要求。在2023年,這種日益增加複雜程度,驅使汽車製造商及其**商,組建了開放系統架構(autosar:automotive open system architecture)的開發夥伴關係;他們的共同目標是定義在車輛ecu內使用的通用和標準化的軟體架構,將最終提供必要的軟體特性、機制和支援,以滿足車輛底層電氣電子架構的更高要求。

在autosar被定義之前,車輛製造商對ecu嵌入式軟體的主要關注點,往往侷限於網路通訊協議棧和診斷。但是通過autosar,ecu內部的底層軟體已經經歷了重大的擴充套件。

autosar「基礎軟體」不僅涵蓋can、lin、flexray、乙太網和診斷協議等網路通訊領域,現在還包括了系統和看門狗的初始化和狀態處理、用於各種儲存裝置的非易失性儲存的軟體棧、微控制器外設的抽象驅動層以及作業系統(os:operating system)。

autosar標準仍在不斷發展和演進以滿足最新的車輛電氣電子要求——到2023年底,在autosar基礎軟體4.2版本發布時,達到了迄今為止最高的複雜程度。定義了超過90種可擴充套件的嵌入式軟體模組,並提供強大的配置工具和**生成器,以及一系列用於工作流、方法和資料交換格式的更高標準。

當ecu**商選擇在他們的ecu中裝配autosar基礎軟體時,他們發現自己被提供了一系列功能豐富的作為現成的商品的嵌入式軟體模組。冗長的軟體開發交付時間,不再是決定是否在ecu中建立更多功能的制約因素,因為包含乙個附加的autosar模組,變成簡單的在基礎軟體配置中勾選乙個核取方塊。軟體架構師們發現自己就像是「甜品店裡的孩子」,有超過90個軟體模組可供挑選。

當然,這裡每乙個軟體模組都有其自身的代價,不僅在用來補償設計和建立每個模組的開發工作的許可費方面,而且還在處理器的負載方面。每個軟體模組都將占用微控制器內部珍貴的ram和rom資源,同時還有需要被排程和呼叫的函式,這些函式會耗費寶貴的處理器執行時開銷。

特別的,autosar os提供了很多的現階段不存在,甚至未被ecu**商考慮過的特性。在過去,乙個簡單的單時鐘(single-tick)或超級迴圈(super-loop)排程程式,就可能足以承載所有的ecu應用程式任務。現在,通過相容替代為autosar os,一組新的作業系統特性,可供軟體工程師們立即使用了。

autosar os提供了一系列「可擴充套件性類別」,從sc1延伸到sc4:

圖1:autosar os可擴充套件性類別

在autosar作業系統中增加的特性並不是沒有帶來資源損耗,就像autosar基礎軟體中的其他所有模組一樣,增加的特性需要微控制器內更多的ram和rom資源,同時消耗更多的處理器執行時間開銷。這些額外的要求通常需要以更高的ecu處理能力和更大的微控制器記憶體容量來支援。

隨後出現的乙個常見的誤解是採用autosar軟體架構,將自動要求ecu**商將內部的微控制器,從16位處理器公升級到32位。當然,這不應該是自然的結論,因為採用autosar os sc1替換現有的osek os只會產生很小的額外開銷,並且還是在啟用排程表特性的情況下。

然而,軟體工程師現在有了公升級作業系統的選項,以同時或分別包含時序和記憶體保護功能,只需要在請求的基礎軟體配置中進行簡單的選擇。與開發這些功能相關的交付時間不再是一種障礙,甚至不再是一種考慮因素,因為作業系統是作為商用現貨(cots:commercial off-the-shelf)元件提供的。

如果所有的autosar 基礎軟體模組都以類似的方式處理,那麼包含所有新的autosar功能,在技術上可能會變得微不足道,然而,對處理器負載和記憶體需求的顯著而明顯的影響也會立即被觀察到。

就像有autosar軟體體系結構本來就需要32位處理器的誤解一樣,也會出現類似的,高速應用程式任務無法在autosar系統中進行排程的誤解。許多典型的汽車應用,特別是在動力總成領域內,需要能夠以每100微秒(10 khz)甚至更快的速率執行的任務。這種具有挑戰性的排程需求,對autosar os提出了非常高的要求,進而對微控制器的處理負載也提出了要求。

針對這些用途,autosar os提供了兩種型別的中斷「類別」:

cat1中斷提供了一種強大的方式來直接與硬體互動,因此在使用這種中斷時必須萬分小心和謹慎;其主要優點是中斷的延遲非常低,因此可以實現所需的高速任務排程。因為沒有autosar os提供的正常保護,所以cat1中斷與系統其餘部分之間的互動,必須在實施之前經過仔細的考慮。

另乙個需要考慮的方面是整個系統的中斷優先順序的分配。autosar os是乙個完全的搶占式作業系統,因此autosar應用程式任務可能會相互中斷。不過,允許autosar任務中斷或阻塞高速排程任務是不可接受的,因此需要分配優先順序以使得高速任務在系統中具有最高的優先順序。

這意味著高速任務可以中斷系統中的其他任務,包括autosar os,並且autosar系統中的所有其他的中斷,都必須至少比高速任務的優先順序低乙個優先順序,這被稱為「系統中斷等級」。

圖2:autosar系統內的高速任務排程舉例

autosar標準已經達到了新的高度,但將繼續增長和發展,以滿足當今最新的汽車e&e要求。對於ecu軟體開發人員來說,擁抱autosar,除了增強了其應用程式功能,往往被認為只是經常帶來的進一步的負擔。因而通常只在車輛製造商的要求的情況下進行。autosar架構在動力總成領域的擴張速度比其他領域(如車身和底盤應用)要慢得多,除了所有新的autosar特性之外,還有乙個原因是處理高速任務排程的需求。

然而,autosar標準已經考慮和解決了處理這些需求的機制,許多autosar應用程式正在使用os cat1中斷,成功的執行高速任務排程。通過分析這些系統中的處理器負載,vector觀察到,在許多情況下,仍然可以在實現高速任務排程的同時,執行功能豐富的autosar基礎軟體。

但不可避免的,autosar基礎軟體和autosar os中提供的附加功能,將帶來進一步的處理器需求,因此嵌入式軟體市場中出現了新的差異化因素。在購買autosar基礎軟體作為現成的商品部件時,必須考慮每個新的autosar模組的可擴充套件性、可配置性、效率和優化。

是否採用autosar,仍然是許多ecu**商的顧慮,這種顧慮還經常由於其可能帶來的複雜性而被加強。但是複雜性已經存在於系統內部,來自最終客戶的功能需求和支援這些功能所必須的基礎e&e架構。autosar只提供必要的機制和結構,來管理已經存在的複雜性;因此不應將autosar系統視為乙個問題,反而是它提供了問題的解決方案。

影象提供方:vector informatik gmbh / vector gb ltd.

嵌入式軟體產品線的本地產品線經理

嵌入式軟體工程師

高階嵌入式軟體工程師

OpenMP中的任務排程

openmp中,任務排程主要用於並行的for迴圈中,當迴圈中每次迭代的計算量不相等時,如果簡單地給各個執行緒分配相同次數的迭代的話,會造成各個執行緒計算負載不均衡,這會使得有些執行緒先執行完,有些後執行完,造成某些cpu核空閒,影響程式效能。例如以下 int i,j int a 100 100 fo...

OpenMP中的任務排程

openmp中的任務排程 openmp中,任務排程主要用於並行的for迴圈中,當迴圈中每次迭代的計算量不相等時,如果簡單地給各個執行緒分配相同次數的迭代的話,會造成各個執行緒計算負載不均衡,這會使得有些執行緒先執行完,有些後執行完,造成某些cpu核空閒,影響程式效能。例如以下 int i,j int...

OpenMP中的任務排程

openmp中的任務排程 openmp中,任務排程主要用於並行的for迴圈中,當迴圈中每次迭代的計算量不相等時,如果簡單地給各個執行緒分配相同次數的迭代的話,會造成各個執行緒計算負載不均衡,這會使得有些執行緒先執行完,有些後執行完,造成某些cpu核空閒,影響程式效能。例如以下 int i,j int...