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与多个模块存在关联。
- RTE提供与APP交互的接口;
- CRCLib用于NV Data存储时CRC校验;
- SchM用于NvM API调度;
- MemIf提供下层的内部还是外部存储的区分;
- BswM在上、下电阶段调用ReadAll和WriteAll接口;
- Dem负责相关DTC等诊断数据的存储;
- 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 block | Ram block | Rom block | Administrative block |
---|---|---|---|---|
NVM_BLOCK_NATIVE | 1 | 1 | 0…1 | 1 |
NVM_BLOCK_REDUNDANT | 1 | 3 | 0…1 | 1 |
NVM_BLOCK_DATASET | 小于256 | 1 | 0…n | 1 |
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