当前位置:首页 > 汽车电子1 > 糖果Autosar
[导读]本文根据AUTOSAR4.4(ClassicPlatform)(https://www.autosar.org/standards/classic-platform/classic-platform-440/)标准中的:AUTOSAR_SRS_MemoryServices.pdf...

本文根据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最小集合。适用于硬件资源非常有限系统。


NvM module 将只包含用的到的代码,即使用宏编译开关根据配置项来决定相关的代码是否使用。


Configuration Class No class3 class2 class1 Characteristics of Request Types
type1 1 NvM_SetDataIndex(...) NvM_SetDataIndex(...) NvM_GetErrorStatus(...) synchronous request
2 NvM_GetDataIndex(...) NvM_GetDataIndex(...) NvM_SetRamBlockStatus(...) affects one RAM block
3 NvM_SetBlockProtection(...) NvM_GetErrorStatus(...) NvM_SetBlockLockStatus(...) available for all SW Cs
4 NvM_GetErrorStatus(...) NvM_SetRamBlockStatus(...)

5 NvM_SetRamBlockStatus(...) NvM_SetBlockLockStatus(...)

6 NvM_SetBlockLockStatus()


type2 1 NvM_ReadBlock(...) NvM_ReadBlock(...) / asynchronous request (result via callback or polling)
2 NvM_WriteBlock(...) NvM_WriteBlock(...) affects one NVRAM block
3 NvM_RestoreBlockDefaults(...) NvM_RestoreBlockDefaults(...) handled by NVRAM manager task via request list
4 NvM_EraseNvBlock(...) NvM_CancelJobs(…) available for all SW Cs
5 NvM_InvalidateNvBlock(...) NvM_ReadPRAMBlock(...)
6 NvM_CancelJobs(…) NvM_WritePRAMBlock(...)
7 NvM_ReadPRAMBlock(...) NvM_RestorePRAMBlockDefaults(...)
8 NvM_WritePRAMBlock(...)

9 NvM_RestorePRAMBlockDefaults(...)

type3 1 NvM_ReadAll(...) NvM_ReadAll(...) NvM_ReadAll(...) asynchronous request (result via callback or polling)
2 NvM_WriteAll(...) NvM_WriteAll(...) NvM_WriteAll(...) affects all NVRAM blocks with permanent RAM data
3 NvM_CancelWriteAll(...) NvM_CancelWriteAll(...) NvM_CancelWriteAll(...)
4 NvM_ValidateAll(...) NvM_ValidatedAll(...)

1 NvM_FirstInitAll(…) NvM_Init(...)⌋ ( )

type4 1 NvM_Init(...) NvM_Init(...) NvM_Init(...) · synchronous request
· basic initialization
· success signaled to the task via command interface inside the function itse
Remark


1. No queue;
2. No immediate data can be written;
3. Not support Dataset management type;
4.

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个,即:1 ~(2^14-1-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 (0x1<<2bit 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:错误处理



本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

(全球TMT2022年10月13日讯)Bossard柏中推出的亮灯拣选系统(Pick by Light and Put to Light)帮助客户减少寻料和补货时间。这种“摘果式”灯光拣选系统采用LED信号灯引导物料员...

关键字: SAR 亮灯拣选系统 OS LIGHT

亮灯拣选系统将成为SmartBin Cloud云智能料盒和SmartLabel Cloud云智能电子标签的组成部分,引导客户快速准确地找到物料。 上海2022年10月13日 /美通社/ -- Bossard柏中推出的亮...

关键字: SAR 亮灯拣选系统 快速定位 OS

(全球TMT2022年8月16日讯)2022年8月15日,枫笛Saramonic正式发布了Blink500 ProX 2.4G双通道无线麦克风系统。Blink500 ProX采用2.4GHz ISM自适应跳频...

关键字: LINK RAM SAR 双通道

深圳2022年8月15日 /美通社/ -- 2022年8月15日,枫笛Saramonic正式发布了Blink500 ProX 2.4G双通道无线麦克风系统。这款性能卓越的麦克风能满足多种场合的使用,为您带来出色的声音品质...

关键字: LINK RAM SAR 双通道

上海2022年6月23日 /美通社/ -- Bossard柏中在其自营机械加工厂的基础上,整合供应链资源成立精密机械加工联盟,扩展加工能力和产能以满足中国工业客户日益增长的定制化零件需求,尤其是高精度零件的加工需求。同时...

关键字: SAR OS RMS 传感器

(全球TMT2022年6月21日讯)万代南梦宫娱乐股份有限公司宣布将于2022年7月9日(周六)、7月10日(周日)两日,在幕张展览馆的活动大厅(千叶市美滨区)举办"偶像大师 765艺能全明星"的单独演唱会 -- "T...

关键字: ST TE LM SAR

上海2022年5月30日 /美通社/ -- 全球紧固技术提供商柏中(Bossard)在中国推出MM-Welding®轻量化紧固技术,利用超声波部分熔化热塑性材料从而对轻质材料瞬间形成固定。这项得到BMW宝马认可的...

关键字: SAR 汽车 进程 WELDING

北京2022年5月5日 /美通社/ -- Analog Devices, Inc.(Nasdaq:ADI)推出新一代16至24位超高精度逐次逼近寄存器(SAR)模数转换器(ADC)系列产品,可简化仪器仪表、工业和医疗健康...

关键字: ADC ADI SAR ANALOG

(全球TMT2022年5月5日讯)Analog Devices, Inc.(Nasdaq:ADI)推出新一代16至24位超高精度逐次逼近寄存器(SAR)模数转换器(ADC)系列产品,可简化仪器仪表、工业和医疗健康应用中...

关键字: ADC ADI SAR SPI

细微之处,匠心所在,柏中在紧固件"这件小事"上帮助隆鑫摩托打造VOGE无极系列机车,满足国人对大排量机车愈发旺盛的需求。 上海2022年4月28日 /美通社/ -- 2022年4月,柏中(Bossa...

关键字: SAR 摩托 OS GE

糖果Autosar

96 篇文章

关注

发布文章

编辑精选

技术子站

关闭