AUTOSAR學習筆記之存儲


AUTOSAR學習筆記之存儲

1. 存儲服務

存儲服務由一個NVRAM管理器模塊構成,負責管理非易失性數據(從不同存儲驅動讀/寫)。它需要一個RAM鏡像作為數據接口提供給應用快速讀取。

存儲服務的任務是以統一方式嚮應用提供非易失性數據。這抽象了存儲位置和屬性。提供非易失性數據管理機制,如保存、加載、校驗和保護和驗證、可靠存儲等。


AUTOSAR學習筆記之存儲

1.1. 存儲硬件抽象的尋址方案

存儲抽象接口和下層的閃存EEPROM仿真和EEPROM抽象層向NVRAM管理器提供虛擬線性32位地址空間。這些邏輯32位地址由16位邏輯塊號和16位塊地址偏移量組成。因此NVRAM管理器(理論上)可以有65536個邏輯塊,每個邏輯塊(理論上)可以有64Kbytes。

NVRAM管理器進一步將16位邏輯塊號劃分為以下部分:

· (16-NVM_DATASET_SELECTION_BITS)位的塊標識符

· NVM_DATASET_SELECTION_BITS位的數據索引,每個NVRAM塊最多可以有256個數據集

1.2. NVRAM管理器

非易失性RAM管理器(NVRAM Manager)管理所有非易失性存儲器中數據的存儲。

NVRAM管理器本身與硬件無關,所有直接存取硬件的功能,例如內部或外部EEPROM、內部或外部閃存中的仿真EEPROM等,封裝在基本SW的較低層。在汽車環境中,NVRAM管理器提供服務以根據各個數據的需求來保證數據存儲和NV數據的維護。NVRAM管理器要能夠管理EEPROM和/或FLASH EEPROM仿真設備的NV數據。NVRAM管理器為NV數據的管理和維護提供所需的同步/異步服務(初始化/讀/寫/控制)。NVRAM管理器處理對非易失性數據的並行訪問,併為單個數據元素提供可靠性機制,如校驗和保護。

為了適用於汽車系統的所有領域,NVRAM管理器需要具有高度的伸縮性(如定義請求隊列的數目和大小,支持不同的塊管理類型,EEPROM仿真,等等)。

1.3. 基本存儲對象

NV塊:NV塊表示NV用戶數據和CRC值(可選)組成的存儲區;

RAM塊:RAM塊表示在RAM中用戶數據和CRC值(可選)組成的區域;

ROM塊:ROM塊駐留在ROM(閃存)中,用於提供缺省數據以防NV塊為空或被破壞;

管理塊:管理塊在RAM中,包含與Dataset NV塊關聯的塊索引。另外,也包含相應NVRAM塊的屬性/錯誤/狀態信息。

1.4. 塊管理類型

以下NVRAM存儲類型應該由NVRAM管理器支持,並且由以下基本存儲對象構成:


AUTOSAR學習筆記之存儲

Native NVRAM塊是最簡單的塊管理類型。以最小的開銷存儲/檢索NV存儲區。Native NVRAM塊由單個NV塊、RAM塊和管理塊組成。

Redundant NVRAM具有更高的容錯性、可靠性和可用性,以及對數據被破壞的抵抗性。Redundant NVRAM塊由兩個NV塊、一個RAM塊和管理塊組成。

Dataset NVRAM塊是相同大小數據塊(NV/RAM)的陣列。應用一次只能存取其中的一個。Dataset NVRAM塊由多個NV用戶數據和(可選)CRC區域、一個RAM塊和管理塊組成。

1.5. NVRAM管理器的API配置種類

為了使NVRAM管理器適合於有限的硬件資源,定義了3種不同的API配置種類:

· API配置種類3:

所有規定的API調用都可用。支持最大的功能性。

· API配置種類2:

API調用的中間集可用。

· API配置種類1:

特別用於滿足資源非常有限的系統,此API配置種類只提供所需要的API調用的最小集。

2. 存儲硬件抽象

存儲硬件抽象是一組抽象於外圍存儲設備位置(片上或板上)和ECU硬件佈局的模塊。例如:片上EEPROM和外部EEPROM設備應該可以通過相同的機制存取。

通過存儲器特有抽象/仿真模塊訪問存儲驅動(例如EEPROM抽象)。通過仿真EEPROM接口和閃存硬件單元,就可以通過存儲抽象接口訪問這兩種類型的硬件。

存儲硬件抽象的任務是提供訪問內部(片上)和外部(板上)存儲設備和存儲硬件類型(EEPROM、閃存)的相同機制。

2.1. EEPROM抽象

EEPROM抽象層(EA)擴展EEPROM驅動,向上層提供線性地址空間上的虛擬分段和“實際上無限制的”擦除/寫循環。除此之外,它還應該提供與EEPROM驅動相同的功能。

2.2. 閃存EEPROM仿真

閃存EEPROM仿真(FEE)按照閃存技術仿真EEPROM抽象層的行為。所以它與EEPROM抽象層有相同的功能和API,並且給出基於下層閃存驅動和閃存設備的相似配置。

2.3. 內存抽象接口

內存抽象接口(MemIf)允許NVRAM管理器存取多個存儲抽象模塊(FEE或EA模塊)。

內存抽象接口抽象於下層FEE和EA模塊的數目,並向上層提供統一線性地址空間上的虛擬分段。

3. 存儲驅動

3.1. EEPROM驅動

EEPROM驅動提供讀、寫、擦除EEPROM的服務。也提供了用於比較EEPROM中數據塊和內存中數據塊的服務。這些服務是異步的。有兩類EEPROM驅動:

· 內部EEPROM驅動

· 外部EEPROM驅動

內部EEPROM驅動直接訪問微控制器硬件,並且定位在微控制器抽象層。外部EEPROM驅動使用處理程序(handler)或驅動訪問外部EEPROM設備。它定位在ECU抽象層。

兩種類型的驅動的功能需求和功能範圍都是相同的。所以API在語義上是相同的。

3.2. 閃存驅動

如果受到底層硬件的支持,閃存驅動提供讀、寫和擦除閃存的服務,以及設置寫/擦除保護的配置接口。閃存驅動提供了一個內置加載器,以加載閃存存取代碼到RAM中,並在需要的時候執行寫/擦除操作。

在ECU應用模式下,閃存驅動只用於閃存EEPROM仿真模塊寫數據。在應用模式下並不將程序代碼寫到閃存中。這應該由啟動模式處理,超出了AUTOSAR的範圍。

有兩類閃存驅動:

· 內部閃存驅動

· 外部閃存驅動

內部閃存的驅動直接存取微控制器硬件,並且定位在微控制器抽象層。外部閃存通常通過微控制器數據/地址總線連接,然後閃存驅動使用總線的處理程序/驅動訪問外部閃存設備。外部閃存設備的驅動定位在ECU抽象層。兩種類型的驅動的功能需求和功能範圍都是相同的。所以API在語義上是相同的。


分享到:


相關文章: