
Execution Management(下稱EM),負責平臺初始化以及AP應用的啟動和關閉。它根據配置好的Manifest文件執行任務,而這些Manifest文件則包含了什么時候,如何啟動應用等信息。
EM需要和操作系統一起,共同執行應用的運行調度。EM需要負責操作系統的初始化/配置,讓操作系統來做運行時調度,但是如何調度的這個信息,需要由EM從Machine Manifest和Execution Manifest文件當中提取出來。
應用一般包含可執行軟件單元,相關執行項(例如數據或參數文件),集成/執行用的描述性信息(例如AUTOSAR模型描述文件,測試案例等等)。應用可執行文件既可以是用戶級(中間件以上)也可以是AP平臺的功能(中間件),但都是由EM模塊進行啟動/停止管理。
Adaptive應用是一種特定類型的應用,需要遵守AUTOSAR規范,也即限定只能使用AUTOSAR的標準接口,也要遵守相應的編程標準。Adaptive應用總是位于中間件以上,為了實現更好的可移植性和重復利用性,用戶及的應用應當盡可能的是Adaptive應用。

可執行文件作為一個軟件單元,是應用的一部分,它有一個entry point(main函數)。應用可以由一個或多個可執行文件來實現。(部署/執行流程如下)

進程是可執行文件的實例,AP平臺中,進程作為OS進程,運行時被創建。EM僅僅控制進程的啟動和停止,進程運行起來后,EM僅僅在進行狀態管理或者和Deterministic Execution時才會和進程有聯系。
Execution Manifest在設計期間創建,和可執行文件一起被部署到機器上。Execution Manifest指定可執行文件部署相關信息,以及進程屬性的配置信息(例如啟動參數,resource group分配,調度優先級等等)。可以為每一個Machine State或Function Group State指定不同的配置,也就是說可執行文件對應的不同實例可以有不同的配置。
Machine Manifest在集成期間為一個特定機器創建,它包含了所有無法被Execution Manifest和Service Instance Manifest的其他配置信息,包括Machine屬性,特性(資源,功能安全,信息安全等),例如Machine State,Function Group State,resource group, 訪問權限組,調度配置,SOME/IP配置,內存分區等等。
Execution Manifest和Machine Manifest可以由標準ARXML文件轉換為平臺特定格式(也成為Processed Manifest),可以在機器啟動時被讀出。轉換過程既可以在集成時或部署時完成,也可以在安裝時(UCM升級)完成。
一般來說,EM管理兩種生命周期:平臺生命周期管理以及應用生命周期管理。
平臺生命周期管理:作為AP平臺啟動階段的一部分,EM也會被啟動,并負責AP平臺及部署的應用的初始化
應用生命周期管理:EM負責部署的應用能夠按照順序地啟動和關閉。EM需要根據Machine Manifest和Execution Manifest決定哪些是部署地應用,并根據聲明地應用依賴來得到啟動和關閉地順序。根據Machine State和Function Group State,部署的應用會在AP平臺啟動或啟動結束時啟動。當然,并不是所有的應用都會立即被啟動,因為有的應用會向其他應用提供服務,需要等待并“監聽”服務請求。
Execution State代表進程內部生命周期,當到達kRunning狀態時,EM將進程視為初始化完畢。

Process State代表從EM的角度來看進程的生命周期,每一個進程都有自己的狀態。

從資源分配的角度來說,Terminated狀態的進程和Idle類似,進程沒有運行,也沒有資源被分配,但是從執行的角度來說,他們是不同的狀態,Terminated代表進程執行過了,已經被終止,可以再次啟動。

機器啟動后,操作系統首先被初始化,然后EM作為操作系統初始進程的一部分,也被啟動。其他功能簇以及平臺級的應用將隨后由EM啟動,當平臺啟動后,EM繼續啟動AP應用。
當設置了信任鏈(chain of trust)時,認證啟動過程中,EM會驗證應用的可信度和完整性,如果未通過檢測,將不會運行這個應用。
EM可以根據聲明的執行依賴關系來得到啟動和終止的順序,我們通過這個例子來理解:
首先我們有一個DataLogger進程,依賴于另一個Storage進程,這意味著啟動時,EM需要先啟動Storage進程,然后再啟動DataLogger,這樣的流程才能讓DataLogger進行日志存儲。
相對應的,在終止時,需要先終止DataLogger才能終止Storage。

以上圖為例,代表了不同的Machine State,Function Group,都和哪些進程有關,例如Machine為Startup狀態時,需要進程A和進程B是Running狀態,而到Running狀態時,需要終止進程A,然后啟動進程C。

SM通過SetState接口設置狀態,EM根據狀態,需要從FG1遷移到FG1:State2,這個時候需要啟動相應的進程。而當SM再次請求設置狀態為FG1:State3時,這個時候又需要EM將進程終止掉。

進程B不允許依賴于另一個FG中的進程A,否則可能會出現啟動一個不再給定狀態中的進程。一個FG中的狀態變化不會對其他FG產生影響。

還有一種情況是,B依賴于A,但是A在FG2:Running狀態下就已經運行了,但是B對A的依賴會要求A以不同的啟動選項開始啟動,所以A要先終止并再次以不同的選項還是啟動,然后再啟動B。
確定性執行提供這樣一個機制,即當輸入給定數據時,計算過程總能在有限時間內返回一致的輸出結果。
默認地,時間確定性已經由足夠的資源所達到,EM的這個特性主要集中于數據確定性。EM提供DeterministicClient API來支持進程內部周期控制,確定性工作池, 激活時間戳和隨機數。當出現軟件鎖步的情況,DeterministicClient與一個可選軟件鎖步框架交互來確保冗余運行進程的行為一致。DeterministicClient和Com模塊一起同步數據。

AP平臺允許在設備上運行很多個AP應用,所以需要保證他們能夠互不干擾。當某一AP應用出現錯誤行為時,要保證影響范圍不會設計到其他應用,例如應用不應當能夠使用比配置指定還要多的CPU資源,否則很有可能影響其他應用的正常執行。
EM通過配置一個或多個ResourceGroup分配給應用來支持這個特性,每個ResourceGroup都可以分配指定的CPU時間或者內存。
EM模塊負責進程啟動/停止狀態相關的管理,所以EM有特定的權限去啟動和停止進程。如果有進程運行發生問題,PHM會監控到并觸發恢復操作。恢復操作由集成人員根據軟件架構對于PHM的需求而定義,在Execution Manifest中配置。

為了保證系統的正確功能,保證平臺上運行代碼的合法來源是非常關鍵的,這樣才能允許集成人員構建一個可信平臺。
系統實現可信平臺的關鍵屬性是Trust Anchor (也成為Root of Trust)。Trust Anchor通常由保存在安全環境中的公鑰實現,例如不可修改內存或HSM中。
系統設計者負責保證系統由Trust Anchor開始啟動,直到EM運行起來。根據系統設計者選擇的機制而建立的信任鏈, 系統的完整性和真實性在系統啟動時已經被檢查過了。
在此基礎上,當EM接管系統控制時,也會接管信任鏈的職責,這個時候系統集成者需要負責EM已被正確配置。
讓我們來看這樣一個信任鏈的例子:Trust Anchor在bootloader啟動之前驗證bootloader,在隨后自動過程中的每一步,每一個即將被啟動的執行程序都需要經過驗證,而這個驗證應當由已經被驗證過的實體來完成,可以是已經驗證過且啟動的執行程序,或者是HSM這樣的外部實體。

可以為上述的驗證過程配置兩種不同的驗證失敗時的處理方式:
監控模式:在監控模式下,完整性和真實性檢查仍會執行,但不會影響啟動過程,及時文件系統有損壞,AP平臺仍會啟動。當希望即使平臺并不可信但仍能保持系統運行時,監控模式就很有用。另外一種情況是,在開發階段時,代碼經常有改動,沒有必要每次都對應更改驗證標簽(簽名),這個時候也可以用監控模式。
嚴格模式:在嚴格模式下,AP平臺需要保證,當執行程序,manifests,或者相關庫不能成功完成完整性和真實性驗證時,進程不會被執行。
舉個例子,EM在驗證了執行程序,相關共享obj和Manifest,啟動了執行程序,這個時候EM準備啟動另一個執行程序,但是它的驗證失敗了,那么EM就不會啟動它,但其他已經在運行的程序繼續保持運行。
閱讀原文,關注作者博客
推薦閱讀
特斯拉最新的12V蓄電池有什么不同?
特斯拉最新中央計算模塊(CCM)解析
關于對自動駕駛傳感器的理解
特斯拉的電池管理系統 (BMS) 相比其他電動車有哪些優勢?
2021款特斯拉Model Y ECU接口梳理
詳解CANoe之CAPL編程
關于CAN時間同步的理解
dbc文件的格式以及創建詳解
大眾ID.4 X網絡架構詳解
學習筆記——NVM數據處理機制
學習筆記——AUTOSAR NVM基礎知識
基于UDS的Bootloder詳解
關于整車上下電流程的理解
一文詳解CAN總線錯誤幀|附下載
DoIP協議介紹,資料分享!
詳解車載網絡 OTA系統的開發|文末附下載
一文了解汽車嵌入式AUTOSAR架構|附下載
特斯拉Autopilot系統安全研究|附dbc下載