本系列學習筆記基於 AUTOSAR Adaptive Platform 官方文件 R20-11 版本 AUTOSAR_EXP_PlatformDesign.pdf。作者:Zijian/TENG
原文地址(獲取最新更新):https://www.cnblogs.com/tengzijian/p/15171199.html
縮寫
- NvM:Non-volatile Memory
- CM:Communication Management
- DCM:Diagnostic Communication Mannger
- EM:Execution Management
- URI:Uniform Resource Identifier
10 持久化 Persistency
10.1 概覽
Persistency 為應用和 FC 提供了將資訊儲存到非易失性儲存(NvM)的機制。經啟動和點火迴圈不會導致資料丟失。Persistency 提供了訪問 NvM 的標準介面。
應用將儲存位置識別符號作為引數,傳給 Persistency API,來決定不同的儲存位置。儲存位置可以歸為兩類:
- 鍵值儲存
- 檔案儲存
應用可以任意組合使用上述儲存型別。
持久化資料是程式私有的。不能通過 Persistency 在不同程式之間共享資料,這是為了阻止通訊管理(CM)之外的通訊途徑。
Persistency 做好了處理(同一程式)多執行緒的併發訪問的準備。若要共享鍵值儲存或檔案儲存,或通過向另一個執行緒傳遞(拷貝)OpenKeyValueStorage/OpenFileStorage
返回的 SharedHandle
;或不同的執行緒對同一個鍵值儲存或檔案儲存各自呼叫 OpenKeyValueStorage/OpenFileStorage
。
Persistency 可以保證儲存資料的完整性,通過冗餘資料檢驗資料是否損壞。冗餘資料包括 CRC 碼、Hash 值、以及 “M/N”模式。這些機制可以一起或單獨使用。
Persistency 提供安全儲存。主要是通過冗餘實現,但是提供了額外的特性,讓應用可以得知儲存的資料是否出現問題(即使可以通過冗餘資料恢復)。
Persistency 嚮應用提使用資源數量的供統計資訊。
Persistency 可以為資料提供加密儲存,確保敏感資料儲存到物理裝置前進行加密。
10.2 鍵值儲存
鍵值儲存提供了從單一儲存位置存取多個鍵值對的機制。鍵值儲存支援以下三種資料型別:
- SWS_AdaptivePlatformTypes 中定義的資料型別
- 簡單位元組陣列:複雜型別的流
- 應用設計中 “PersistencyKeyValueDatabaseInterface”(或該介面特化的 PersistencyDataElements)通過 “dataTypeForSerialization” 引用的所有 Implementation Data Types
每個鍵值資料庫的鍵必須唯一,且通過 Persistency 提供的介面定義。
基於定義在 Application Design 中、應用/平臺特定的 AUTOSAR 資料型別序列化程式碼,計劃增加對序列化/儲存的支援。
10.3 檔案儲存
不是所有的資料都適合用鍵值資料庫形式儲存。針對這些資料,引入了檔案儲存。File Storage Port 允許應用訪問一個儲存位置,並在其中建立一個或多個存取器(Accessors)。這些存取器通過字串形式的 Unique Key 識別。
為了更好的理解,可以類比檔案系統:一個 File Storage Port 可以理解為檔案系統的目錄,應用可以在裡面建立多個檔案(存取器 Accessors)。
10.4 UCM 持久資料處理用例
處理 UCM 用例的持久化資料/檔案完全取決於持久化配置。
在 ECU 或 Adaptive Machine 生命週期內,UCM 支援處理自適應應用的以下三個主要使用場景:
- 在 Adaptive Machine 中安裝新的應用軟體
- 在 Adaptive Machine 中升級已有應用軟體
- 從 Adaptive Machine 中解除安裝已有應用軟體
在前兩個場景中,UCM 通過執行管理(EM)觸發 Persistency 使用持久化配置中的 URI 部署/升級應用的持久化資料。在第三個使用場景中,UCM 可以使用持久化配置中的 URI 移除殘留的持久化資料。
Persistency 需要支援下列場景:
- 在自適應應用(AA)安裝時,根據應用設計中的定義,將持久化資料部署到鍵值資料庫或檔案儲存。
- 將持久化資料,按照整合者的修改,部署到鍵值資料庫或檔案儲存。
- 根據整合者的定義,將持久化資料部署到鍵值資料庫或檔案儲存。
- 當安裝新版應用時,根據配置的升級策略,覆蓋或保留已有的持久化資料。
一般 Persistency 層在應用設計和部署階段配置。Persistency 部署階段的配置可以覆蓋應用設計階段的配置。如果沒有部署階段的配置,則使用應用設計中的配置。