AUTOSAR —— NVM 1

本文根據AUTOSAR4.4(Classic Platform)(https://www.autosar.org/standards/classic-platform/classic-platform-440/)標準中的 :

AUTOSAR_SRS_MemoryServices.pdf

AUTOSAR_SWS_NVRAMManager.pdf

兩篇文章整理。僅爲個人理解,不當之處,還請指正,感謝!

AUTOSAR基本架構的介紹很多,可以自行搜索相關資料,比如 https://www.jianshu.com/p/cfffc1692ea2

 

言歸正傳,這兩篇文檔主要是Memory Service 層的 Requirement 和 Specification。

1 NVRAM Block

1.1 縮寫

NVRAM Block是NVM manager層所定義對象。其相關的概念和基本對象包括:

Acronym: Description:  

Basic Storage Object

(本文簡稱BSO)

基本存儲對象

A “Basic Storage Object” is the smallest entity of a NVRAM Block.
Several “Basic Storage Objects” can be used to build a NVRAM Block.
A “Basic Storage Object” can reside in different memory locations
(RAM/ROM/NV memory).

基本存儲對象是NVRAM Block的最小實體。

幾個BSO組成一個NVRAM Block。

BSO可以位於不同的存儲器中(RAM/ROM/NV memory)

NVRAM Block The “NVRAM Block” is the entire structure, which is needed to administrate and to store a block of NV data. NVRAM Block是NVM層存儲器的定義對象,用作管理和存儲非易失性數據。
NV data The data to be stored in the Non-Volatile memory. 要存儲在NV Memory中的非易失性數據。

Block Management Type

block管理型類

Type of the NVRAM Block. It depends on the (configurable) individual composition of a NVRAM Block in chunks of different mandatory/optional Basic Storage Objects and the subsequent handling of this NVRAM block. NVRAM Block 的類型。取決於NVRAM block  的BSO構成和後續block的處理方式。
NV Block Header Additional information included in the NV Block if the mechanism “Static Block ID” is enabled. 如果BVRAN Block啓用了 “Static Block ID”,則其中包含NV Block的附加信息。
RAM Block The “RAM Block” is a Basic Storage Object. It represents the part of a NVRAM Block, which resides in the RAM.
See [SRS_LIBS_08534]
BSO:RAM Block。對NVRAM Block來說是必需(mandatory)成分。
ROM Block The “ROM Block” is a Basic Storage Object. It represents the part of a NVRAM Block, which resides in the ROM. The “ROM Block” is an optional part of a NVRAM Block. BSO:ROM Block,位於ROM中。對NVRAM Block來說是可選(optinal)成分。
NV Block The “NV Block” is a Basic Storage Object. It represents the part of a NVRAM Block, which resides in the NV memory. The “NV Block” is a mandatory part of a NVRAM Block. BSO: NV Block。位於NV Memory(比如:Flash,EEPROM等)中,對NVRAM Block來說是必需(mandatory)成分。 
Administrative Block The “Administrative Block” is a Basic Storage Object. It resides in RAM. The Administrative Block contains any RAM data, that are necessary to manage the NVRAM block, for being able to perform processing on it and to deliver status information. The “Administrative
Block” is a mandatory part of a NVRAM Block.
BSO:Administrative Block。位於RAM中。其中包含管理NVRAM Block所必需的的RAM數據(狀態信息等)。是NVRAM Block的必需(mandatory)成分。

 

1.2 BSO和NVRAM Block 之間的組織關係如圖 1 所示

 

 

                                                                     圖1 NVRAM 個構成(BSO)

Application(以後簡稱App)層的SoftWare Component(以後簡稱SWC)需要存儲非易失性數據(NV Data)時,就使用NVM Manager 生成不同的NVRAM Block。NVRAM Block包含不同的BSO成分,每一個NVRAM Block包含哪些BSO在配置時決定,配置時每個NVRAM Block都會有一個 NVRAM block descriptor ,一旦 block descriptor 固定,則NVRAM Block的構成也就固定(fixed)了。每一個NVRAM Block都會被分配一個 Block ID,NVM模塊就使用 Block ID 來選擇要訪問的single block。每一個NVRAM Block都可以爲其配置 block management type(Native,Redundant,Dataset)。

所有地址偏移都是相對於 NVRAM block descriptor 中RAM或ROM的起始地址(這裏認爲是block ID,待確認)給出的。 一般認爲起始地址爲0。(如果需要,相應的設備驅動程序將添加設備特別定義的基址或偏移量)。

 

1.3 BSO的邏輯成分

下圖展示了集中BSO的邏輯組成:

 

 

1.4 Block management types

前面提到:每一個NVRAM Block都可以爲其配置 block management type(Native,Redundant,Dataset)。

NVRAM Block的管理類型有3種:

  1. native
  2. redundant
  3. dataset

每一種類型的NVRAM Block的BSO組成爲:

 

1.4.1 Native NVRAM Block

Native NVRAM塊是最簡單的塊管理類型。

1.4.2 Redundant NVRAM Block

包含2個NV block。如果一個 NV block 塊被認爲是無效(invalid)的(例如read fail),則會使用另一個有效的NV block 中的數據來恢復無效的 NV block(即將有效NV block 中的數據寫到無效的 NV block中)。如果恢復失敗,則應將該錯誤報告給DET(錯誤碼爲:NVM_E_LOSS_OF_REDUNDANCY)


 

1.4.3 Dataset NVRAMBlock

Dataset NVRAM Block 塊中包含幾個大小相同的(NV / ROM)block。 應用程序可以一次訪問block中的任意一個。

(原文:The Dataset NVRAM block is an array of equally sized data blocks (NV/ROM). The application can at one time access exactly one of these elements.)

[SWS_NvM_00144] dataset 的 位置 index 在Administrative block 通過一個單獨的字段來標識。
[SWS_NvM_00374] NNvM模塊應能讀取daset中所有的NV塊。
[SWS_NvM_00375] 當且僅當禁用 write protection 時,NvM模塊才能write所有的NV塊。
[SWS_NvM_00146] 如果dataset NVRAM block配置了 ROM block,則index range要能涵蓋ROM,即通過index 要能索引NV block 和 ROM block 。
[SWS_NvM_00376] NvM模塊應只能讀取ROM block(default datasets)。
[SWS_NvM_00377] NvM模塊應將 write ROM block 視爲 write to a protected NV block。
[SWS_NvM_00444] Dataset NVRAM Block中的 (NV + ROM)block 總數必須在1..255的範圍內。
[SWS_NvM_00445]⌈在可選ROM塊的情況下,索引從0到NvMNvBlockNum-1的數據區域表示NV塊在NV存儲器中的CRC。索引從NvMNvBlockNum到NvMNvBlockNum + NvMRomBlockNum-1的數據區域表示ROM塊。

[SWS_NvM_00445]   Dataset NVRAM Block中的 (NV + ROM塊) 的index 關係圖如下圖:

先是NV block,然後是ROM block


1.5 NVRAM Manager API configuration classes

NVM 模塊提供哪些API AUTOSAR 中也做了規定。但是爲了適應不同的硬件資源,NVM模塊可以配置哪些API在當前的環境中是可用的。爲此,NVM模塊中提供了一個 API configuration classes 的配置項,其有三個參數,對應不同的API範圍:

—— API configuration class 3: 所有定義的API都可以使用;
—— API configuration class 2: 部分API可用,可用API的中間集合.
—— API configuration class 1: 最少的API可用,在任何情況下都需要的API最小集合。適用於硬件資源非常有限系統。

 

1.6 硬件抽象層的尋址方案

硬件抽象接口(即更低層的Fee和EA)爲NVM提供了虛擬線性32位地址空間用於尋址,這32位地址由16bit的 block number和16bit的block address offset構成。

According to [SWS_NvM_00051], the NvM module allows for a (theoretical) maximum of 65536(2^16) logical blocks, each logical block having a (theoretical) maximum size of 64(2^16) Kbytes.

(NVM模塊最多允許尋址 65536(2^16)個邏輯塊,每個邏輯塊的大小最大爲 64(2^16) Kbytes)

16bit 的block number 被進一步劃分成兩部分:

  1. NV block base number (NVM_NV_BLOCK_BASE_NUMBER) with a bit width of (16 -NVM_DATASET_SELECTION_BITS)
  2.  Data index with a bit width of (NVM_DATASET_SELECTION_BITS)

     即: NVM_DATASET_SELECTION_BITS + NVM_NV_BLOCK_BASE_NUMBER = 16

NvMDatasetSelectionBits 在NVM module中是可配置項,用作Dataset類型的NVRAM Block中的NV block的尋址,即dataset中,NVblock的dataindex 可以爲 0,1,2... (2^bit-1)。NvMDatasetSelectionBits被定義之後,則block base number的大小也隨即確定(用作對base number尋址的bits個數 == 16-selectionbits), 即NVRAM Block ID可以爲 0,1,2,... (2^basenumberbits-1)。

NVM模塊的 NvMNvBlockBaseNumber, NvMDatasetSelectionBits 和FeeEA 模塊的 EA_BLOCK_NUMBER / FEE_BLOCK_NUMBER 的關係換算關係是:

FEE/EA_BLOCK_NUMBER = (NvMNvBlockBaseNumber << NvMDatasetSelectionBits) + DataIndex.

bit 和其組合後的表示意義:

NvMDatasetSelectionBits        ——> Data Index(一個NVRAM Block的NV block 的編號)

NvMNvBlockBaseNumberbits ——> NVMBlockBaseNumber(即爲NVRAM Block ID,NVRAM Block的編號)

即兩個類型的 bit 合計共有16個。

 

例 1:

NvMDatasetSelectionBits == 2 (即被配置爲2bit),則可以用作NvMNvBlockBaseNumber 的是14bit。由此:

 Range of NvMNvBlockBaseNumber: 0x1..0x3FFE(2^14個,即:0 ~(2^14-1))
 Range of data index: 0x0..0x3(=2^NvMDatasetSelectionBits-1) (2^2個,即:0 ~ (2^2-1))
 Range of FEE_BLOCK_NUMBER/EA_BLOCK_NUMBER: 0x4..0xFFFB (1<<2 + 0)

對於一個 native NVRAM block,如果其 NvMNvBlockBaseNumber = 2:
   ——則其對應的NV block 在 Fee/EA 層的 FEE/EA_BLOCK_NUMBER = 8

對於一個 redundant NVRAM block(有2個NV block)如果其 NvMNvBlockBaseNumber = 3:
  —— 其1st NV block (data index = 0)在 Fee/EA 層的 FEE/EA_BLOCK_NUMBER = 12 (=3<<2+0,)
  —— 其2nd NV block(data index = 1) 在 Fee/EA 層的 FEE/EA_BLOCK_NUMBER = 13(=3<<2+1)

對於一個 dataset NVRAM block 如果其 NvMNvBlockBaseNumber = 4, NvMNvBlockNum = 3 (即有3個NV block):
  —— 其 1st NV block(data index = 0) 在 Fee/EA 層的 FEE/EA_BLOCK_NUMBER = 16 (4<<2 +0)
  —— 其 2nd NV block (data index = 1)在 Fee/EA 層的 FEE/EA_BLOCK_NUMBER = 17(4<<2 +1)
  —— 其 3rd NV block (data index = 2)在 Fee/EA 層的 FEE/EA_BLOCK_NUMBER = 18(4<<2 +2)


 

2 功能

NVRAM Manager(Non-Volatile RAM Manager)管理所有非易失性存儲器(Non-Volatile Memory)中數據的存儲。其本身是獨立於硬件(hardware)的,直接訪問硬件的功能被封裝到BSW的更下層(MemIF,Fee/EA, Fls/Eep)。NVRAM Manger 負責處理對非易失性數據的訪問並對單個數據元素提供(checksum protection等)可靠性機制。爲了適用於汽車系統的所有領域,NVRAM Manager具有高度的可擴展性。

3 SRS文檔中:Requirements Tracing(14條BRF)

Requirement Description Satisfied by
RS_BRF_00129

AUTOSAR shall support data corruption detection and protection。

 

支持數據損壞檢測和保護

SRS_Mem_00030, SRS_Mem_00129,
SRS_Mem_08001, SRS_Mem_08010,
SRS_Mem_08545, SRS_Mem_08546,
SRS_Mem_08547, SRS_Mem_08550,
SRS_Mem_08552, SRS_Mem_08553,
SRS_Mem_08555, SRS_Mem_08556
RS_BRF_01048

AUTOSAR module design shall support modules to cooperate in a multitasking
environment。

模塊支持多任務環境下協作。

SRS_Mem_00034, SRS_Mem_08542,
SRS_Mem_08558
RS_BRF_01064

AUTOSAR BSW shall provide callback functions in order to access upper layer modules。

BSW通過callback函數訪問上層模塊。

SRS_Mem_00125
RS_BRF_01076

AUTOSAR basic software shall perform module local error recovery to the extent possible。

BSW模塊可以進行本地錯誤恢復。

 

SRS_Mem_00038
RS_BRF_01096

AUTOSAR shall support start-up and shutdown of ECUs。

支持ECU的start-up 和 shutdown。

SRS_Mem_00137, SRS_Mem_08540
RS_BRF_01416

AUTOSAR services shall support standardized handling of non-volatile memory data。

service支持對非易失性數據的標準化處理。

SRS_Mem_00013, SRS_Mem_00016,
SRS_Mem_00017, SRS_Mem_00136,
SRS_Mem_00138, SRS_Mem_08544,
SRS_Mem_08554
RS_BRF_01800

AUTOSAR non-volatile memory functionality shall be divided into a hardware dependent and independent layer。

NV memory的功能被劃分成兩部分:硬件獨立和硬件依賴。

SRS_Mem_00011
RS_BRF_01808

AUTOSAR non-volatile memory handling shall
support different kinds of memory hardware。

支持多種類型的硬件。

SRS_Mem_08000
RS_BRF_01812

AUTOSAR non-volatile memory functionality shall support the prioritization and asynchronous execution of jobs。

支持作業優先級設定和異步請求。

SRS_Mem_00034, SRS_Mem_08543,
SRS_Mem_08558
RS_BRF_01816

AUTOSAR non-volatile memory functionality shall organize persistent data based on logical memory blocks。

應基於邏輯存儲器塊組織持久數據。

SRS_Mem_00041, SRS_Mem_08001,
SRS_Mem_08009, SRS_Mem_08528,
SRS_Mem_08529, SRS_Mem_08531,
SRS_Mem_08533, SRS_Mem_08534,
SRS_Mem_08538, SRS_Mem_08543,
SRS_Mem_08549, SRS_Mem_08560
RS_BRF_01824

AUTOSAR non-volatile memory functionality shall provide a mapping of non volatile memory into random access memory。

提供NV memory到RAM memory的映射

SRS_Mem_00027, SRS_Mem_08014,
SRS_Mem_08533, SRS_Mem_08538,
SRS_Mem_08549

 

 

RS_BRF_01832

AUTOSAR non-volatile memory shall handle
logical memory blocks independent of its physical
address。

應獨立於物理地址處理邏輯存儲器塊。

SRS_Mem_08007, SRS_Mem_08531
RS_BRF_01840

AUTOSAR non-volatile memory functionality shall
secure integrity of memory blocks。

保證存儲塊的完整性。

SRS_Mem_00018, SRS_Mem_00030,
SRS_Mem_00127, SRS_Mem_00129,
SRS_Mem_00135, SRS_Mem_08010,
SRS_Mem_08011, SRS_Mem_08015,
SRS_Mem_08535, SRS_Mem_08541,
SRS_Mem_08546, SRS_Mem_08547,
SRS_Mem_08548, SRS_Mem_08552,
SRS_Mem_08553, SRS_Mem_08556
RS_BRF_01848

AUTOSAR non-volatile memory functionality shall
provide mechanisms to enhance hardware reliability。

提供增強硬件可靠性的機制。

SRS_Mem_00018, SRS_Mem_08529,
SRS_Mem_08531, SRS_Mem_08548,
SRS_Mem_08551, SRS_Mem_08554

3 SRS中:Requirements Specification

functional requirement 主要分爲5個部分來闡述:

  1. configuration:在配置期間要滿足那些要求,可以進行哪些操作等。
  2. initialization:ECU啓動時的操作
  3. normal operation:正常功能和操作
  4. shutdown operation:ECU關機的操作
  5. fault operation:錯誤處理


具體條款可以參考文檔,這裏不搬運了。

 

 

 

 

 


 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章