前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >AUTOSAR之NVM模块介绍

AUTOSAR之NVM模块介绍

作者头像
xbai921031
发布2022-05-25 15:22:14
2.4K0
发布2022-05-25 15:22:14
举报

在AUTOSAR架构中,BSW层有一个存储器相关的模块Memory Stack,如下图所示:

图1 Memory Stack 示意

NVM:NVRAM Manager

MEMIF:Memory Abstraction Interface

FEE:Flash EEPROM Emulation

EA:EEPROM Abstraction

FLS:Flash Driver

EEP:EEPROM Driver

NVM模块可以和以下模块进行交互:

图2 可以和NVM交互的模块

NVM模块上层是RTE,下层是对接Flash Driver或者EEPROM Driver的接口,笔者对这里的理解,NVM就是属于一个连接上层APP和底层的一个接口,应用层在执行一些和存储相关的服务如写EOL数据或者更新DTC的时候,会调用NVM里面的函数,而NVM又根据不同的需求,整合了分别调用Flash和EEPROM的接口。

NVM里面的数据读写有两种同步机制,分别是Implicit synchronization(隐式同步)和Explicit synchronization(显式同步)。

1.Implicit synchronization(隐式同步)

在隐式同步中,应用层和NVM可以同时访问公用的RAM,就是应用层在读写时调用NVM里面的接口。

图3 隐式同步示意

这种情况下,一块RAM最好只映射到一个SW-C,并且在读写操作进行中,这块RAM里的数据不能改变。

写操作步骤:

(1)应用层将数据写入RAM

(2)应用层调用NvM_WriteBlock()函数,开始进入NVM执行操作

(3)应用层通过轮询方式检查NVM写操作结果,NVM执行写操作之后,应用层才可以更新RAM中的内容

2.Explicit synchronization(显式同步)

在这种情况下,NVM定义一个RAM Mirror,与应用层中的RAM进行数据交换,APP将数据写进RAM并且调用NVM的接口,NVM将数据从应用层RAM拷贝到RAM Mirror。

图4 显式同步示意

这种机制的好处就是应用层可以更有效地利用RAM。

写操作步骤:

(1)APP将数据填充进RAM

(2)应用层调用NvM_WriteBlock()函数,开始进入NVM执行操作

(3)应用层RAM中的数据拷贝进NVM RAM Mirror中以后就可以随意修改RAM的数据了

其他的一些特性:

(1)基于CRC的对比

用CRC校验来对比数据有无变化,如果无变化可以选择跳过写操作的配置选项

(2)错误恢复

在读取错误的时候可以读回默认值,在写错误时会有重试机制。

(3)写操作确认

当数据写入NV Memory后,会与RAM里的数据进行对比,如果对比不一致会重新写入。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 进击的程序喵 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档