Autosar存储协议栈学习-存储协议栈架构,模块交互与各模块作用模块(NVM 、FEE 、FLS)

第一章 Autosar存储协议栈架构

第二章 模块交互与各模块作用模块(NVM 、FEE 、FLS)


文章目录

  • Autosar存储协议栈学习-存储协议栈架构,模块交互与各模块作用模块(NVM 、FEE 、FLS)
  • 前言
  • 一、Autosar存储协议栈架构
  • 二、Autosar模块交互与各模块作用模块(NVM 、FEE 、FLS)
    • ①:NVM
    • ②:MemIf
    • ③:FEE
    • ④:FLS
  • 总结

前言

随着汽车电子的不断发展,Autosar存储协议栈的学习对开发人员来说也越来越重要。
为了提升技术,学习下存储协议栈的基本原理,结合经验,本文就介绍了存储的基础内容,为了记录学习过程,以便日后复习使用。


一、Autosar存储协议栈架构

存储栈在AUTOSAR中的层次结构
AUTOSAR中有个Memory的处理,在架构中是这样的:

内存栈中分类三层,Memory Service 服务层(NvM)、Memory Hardware Abstraction 抽象层(MemIf、EA、EEP、Fee)、Memory Driver MCAL(Fls、SPI、Eep驱动等)几个模块:

AutoSAR中对NV数据的存储主要包括片内存储外部存储两种方式。
片内存储,是用芯片内部的DFLASH进行数据存储;
外部存储,是通过外部EEPROM进行存储,一般会调用SPI、IIC等通信方式外挂EEPROM芯片。

结合项目,本文只阐述使用片内存储的存储栈配置与相关知识。

二、Autosar模块交互与各模块作用模块(NVM 、FEE 、FLS)

①:NVM

NVM模块通过将数据元素抽象成Block 进行统一管理,NvM所有的功能都是以Block为单元,主要负责管理和从非易失性内存中读写数据,在上电和下电阶段,同步应用程序RAM区数据RTE提供了简单灵活的接口(NvData Interface)用于非易失内存的数据处理。

在AutoSAR中NvM与多个模块存在关联。

  1. RTE提供与APP交互的接口;
  2. CRCLib用于NV Data存储时CRC校验
  3. SchM用于NvM API调度;
  4. MemIf提供下层的内部还是外部存储的区分;
  5. BswM在上、下电阶段调用ReadAll和WriteAll接口
  6. Dem负责相关DTC等诊断数据的存储
  7. Det用于检测开发过程中相关的错误。

在AutoSAR架构中NvM主要功能可以概述为以下几点:

  • 提供了三种Block的管理类型(Native、Redundant、DataSet)( Block 分类)
  • 支持16bit和32bit的CRC校验
  • 支持数据操作的优先级机制,支持Immediately写操作
  • 用于DCM诊断的数据操作

1.Block分类

项目中 使用 Block 分类为:NVM_BLOCK_NATIVE

Native block是最简单的Block形式,该类型包括1个NV Block,1个RAM Block,1个Administrative Blocks;

Redundant block该类型包括2个NV Block,1个RAM Block,1个Administrative Blocks,通过该类型可以实现数据的冗余备份存储。

Dataset block 是由多个大小相等的数据组成,APP在一次操作中获得其中的一个元素,每一个DataSet的位置可以通过Administrative Blocks获得,NvM可以读取选择的ROM Block。Dataset NVRAM类型的设计可以根据需要对一个数据在NvRAM中以一定的循环偏移进行存储,每一次存储位置可以不同,实现对NvRAM的寿命延长。

管理类型NV blockRam blockRom blockAdministrative block
NVM_BLOCK_NATIVE110…11
NVM_BLOCK_REDUNDANT130…11
NVM_BLOCK_DATASET小于25610…n1

NvM中对数据的操作一般叫做Basic storage objects,Basic storage objects是NvM中存储的最小单元,在NvM的概念中主要包括下面四种操作实体。

每种类型的 Block 都由 NV Block、 RAM Block、 ROM Block 及 Administrative Block 等基本存储对象组成。


Ram Block : 位于 RAM 中, 存放应用待读/待写的数据
Rom Block : 位于 PFlash 中,存放 Block 默认数据, 用于数据读取失败后恢复默认数据
Administrative Block:位于 RAM 中,保存所有Data Block 的错误/状态/Crc 等信息
NV Block: 位于非易失性存储器中, 用于保存非易失数据

NV Block一般包含了用户定义的数据,其中相关的header以及CRC作为可选项使用NV RAM一般和NV Block对应,实现数据到NV Block的读写操作

NV ROM数据存在DFlash或者外部的EEPROM中,在程序执行中数据不会改变,在空的或者破坏的ROM中为默认的数据。

Administrative Block是NV RAM中必须使用的,包含了DataSet类型的NvM数据管理相关的NV RAM Block的属性、状态以及错误信息,能管理NV Block的写保护,以及上次数据操作的错误以及状态信息。

2.Block 数据结构

虽然NvM中存在这么多类型的Block,但是在存储介质中实际存在的只有NV Block, Ram Block 和Rom 都不参与实际的写入过程。

NV Block 由Block Header + Block Data +Block CRC组成,其中Block Header会包含Block ID,用于写入/读取时校验

②:MemIf

Memory Abstraction Interface (MemIf)作为接口抽象层, 为 NvM 提供访问 Fee/Ea 模块的函数,NvM借此抽象成硬件无关的模块。

MemIf 通过Device Id将Fee 与EA 的相关接口抽象成MemIf接口供NvM访问

③:FEE

Fee(Flash Eeprom Emulation), 顾名思义就是Flash 模拟Eeprom.

④:FLS

FLS模块主要提供对Flash的读、写、擦相关操作服务;如果底层硬件支持的话,也提供一些配置接口来设置擦/写保护功能。

FIs属于MCAL层EPROM Emulation)模块使用。

总结

以上就是今天要学习的内容,本文仅仅简单介绍了Autosar 存储协议中的概念,之后会通过配置和代码分析更加详细的学习存储协议栈。
sd