吐血整理-AUTOSAR 存储

1 简介

AUTOSAR分层架构中的存储器堆栈由以下模块组成,它为上层应用层和基础软件提供基本的内存管理服务。

  • 非易失性存储器管理器- NVM(服务层)
  • 存储器接口- MemIf(ECU抽象层)
  • Flash EEPROM模拟-FEE(ECU抽象层)
  • EEPROM抽象- EA (ECU 抽象层)
  • Flash 驱动程序——Fls(MCAL 层)
  • EEPROM 驱动程序——Eep(MCAL 层)。

吐血整理-AUTOSAR 存储_第1张图片 图 AUTOSAR 中的内存堆栈

2 服务类型

NvM 模块为应用程序或基础软件提供基本的同步和异步【读/写/比较】服务。

  • 同步服务:同步服务是一种阻塞式服务调用,其中程序轮询服务是否完成,只有在服务完成时才返回执行。

  • 异步服务:异步服务是一种非阻塞服务调用,其中对服务的请求被放置在队列中,并且通过在块配置期间配置的回调例程通知上层服务完成。

3 Memory block类型

基于强制或可选内存对象的数量,如 NV 块、RAM 块、ROM 块和管理块,存储器堆栈有不同类型的 NvM 块可以配置为,

  • 原生块Native Blocks

  • 冗余块Redundant Blocks

  • 数据集块Dataset Blocks

NV 块是一个基本对象,它包含一个【块头、数据和一个可选的 CRC 字段】。RAM 和 ROM 块是配置的 NV 块的副本。RAM 块(可选)用于向非易失性存储器读/写数据。ROM 块(可选)用于在发生故障时恢复 NV 块的默认值。 管理块至少包含NV块的状态和长度;它可以包含更多字段。管理块中的状态字段指定 NV 块是否包含有效数据,长度字段指定 NV 块中数据的长度。

吐血整理-AUTOSAR 存储_第2张图片

图 NV块

3.1 Native Blocks

Native Block 是一种 NvM 存储对象,它具有以下类型的强制和可选块,

NV 块(强制) – 1

RAM 块(强制)– 1

ROM 块(可选)– 1

管理块(必填) – 1

3.2 Redundant Blocks

冗余块是一种 NvM 存储对象,它具有以下类型的强制和可选块,

NV 块(强制) – 2

RAM 块(强制)– 1

ROM 块(可选)– 1

管理块(必填) – 1

3.3 Dataset Blocks

数据集块是一种 NvM 存储对象,它具有以下类型的强制和可选块,

NV 块(强制) – 1 到 255

RAM 块(强制)– 1

ROM 块(可选)– 1 到 n(其中“n”可以根据配置而变化)

管理块(必填) – 1

4 单/多块请求和处理

从应用程序发出单/多块请求时触发的基本模块流程:

4.1 单块请求

单块请求是一种只有一个 NvM 块必须写入或从 NvM 存储器读取的请求。基本的单块请求是 NvM_ReadBlock 和 NvM_WriteBlock。单块调用是系统正常运行期间最常用的服务。

4.1 多块请求

多块请求是请求将多个 NvM 块写入到 NvM 内存或从 NvM 内存读取的请求。该块可以配置为在 NvM 块配置期间用于多块服务。基本的多块调用是 NvM_ReadAll 和 NvM_WriteAll。多块调用主要用于系统启动和系统关闭期间。启动期间使用多块调用将所有最后写入的数据从 NvM 恢复到 RAM,并在关闭期间将数据从 RAM 内存存储到 NvM。

4.3 单/多块的请求处理

单块调用:当应用软件组件或基本软件模块提出单块服务请求时,该请求由 NvM 接收。NvM 模块将此请求转发给 MemIf,其中包含数据引用和硬件的块ID,在写入请求的情况下必须写入数据。在读取请求的情况下,NvM 会传递必须回读数据的块引用和块ID。MemIf 将此请求转发到层,根据 NvM 传递的设备标识符,该层可以是FEE(Flash EEPROM 仿真)或 Ea(EEPROM 抽象)。如果请求传递给FEE模块,FEE模块将其转发给 Fls 驱动程序以服务请求,或者如果请求传递给 Ea 模块,Ea 模块将此请求转发给 Eep 驱动程序。

多块调用:多块调用由 EcuM(ECU 状态管理器)模块在系统启动(NvM_ReadAll)或系统关闭(NvM_WriteAll)期间进行,以恢复上次存储的系统状态或保存当前系统状态。有两个异步多块调用 NvM_ReadAll 和 NvM_WriteAll。读取或写入配置为包含在多块调用期间的所有块,并根据放置块的内存类型触发 MemIf、Fee、Ea、Fls 和 Eep 等块。

你可能感兴趣的:(汽车电子杂谈,autosar)