0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

AUTOSAR NvM Block的Native、Redundant和Dataset有什么区别?

嵌入式软件实战派 来源:嵌入式软件实战派 2023-04-06 10:29 次阅读

AUTOSAR的NvM Block有三种Native、Redundant和DataSet,用得最多的是Native,但你知道其他两种是干什么的吗?

AUTOSAR NVM(Non-Volatile Memory)是AUTOSAR标准中定义的一种用于存储非易失性数据的机制。在AUTOSAR NVM中,数据被存储在一个或多个NVM块中。每个NVM块由一个或多个NVM数据集组成,可以存储不同类型的数据。

3088f952-d419-11ed-bfe3-dac502259ad0.png

图见《一图读懂AUTOSAR NvM(附pdf版文档资源)》

在AUTOSAR NVM块中的三种类型,它们之间的区别如下:

Native

Native数据是NVM块中存储的原始数据,是应用程序需要读写的数据。Native数据只在NVM块中存储一份,如果数据损坏或丢失,将无法恢复。因此,在写入Native数据时,需要确保数据的可靠性和一致性。

举例说明:江湖中的《九阳神功》只有一份,弄丢了就丢了。

Redundant

Redundant数据是为了增加数据的可靠性而存储在NVM块中的备份数据。与Native数据不同,Redundant数据通常存储在NVM块中的不同位置,以增加数据的冗余度。如果Native数据损坏或丢失,可以使用Redundant数据进行恢复。在写入Redundant数据时,需要确保数据的可靠性和一致性,以确保Redundant数据可以成功地用于数据恢复。

举例说明:江湖中,如果你巧合得到了一份《葵花宝典》,你也很清楚这玩意的“魅力”,你不想拥有它也不希望它失传,于是偷偷抄了一份,把原件扔到江湖中,爱咋咋地。如果江湖中的原件丢了,那你可以偷偷拿出你的手抄稿慢慢研究,咳咳~~

DataSet

DataSet数据是AUTOSAR NVM中的一个特殊数据类型,它是一组数据的集合。DataSet数据通常用于存储应用程序的配置数据或状态数据,例如车辆参数、故障码等。与Native和Redundant数据不同,DataSet数据可以在应用程序运行期间进行读写,并且可以使用AUTOSAR配置工具进行配置和管理。

DataSet数据由一个或多个DataBlock组成,每个DataBlock由一个或多个DataElement组成。在写入DataSet数据时,需要确保数据的可靠性和一致性,并且需要考虑到数据的版本管理和数据更新等问题。

举例说明:江湖中的《降龙十八掌》有好多个版本,例如有洪七公版、郭靖版和乔峰版,每个版本都有点不一样。

总之,在AUTOSAR NVM中,Native数据是应用程序需要读写的原始数据,Redundant数据是为了增加数据的可靠性而存储的备份数据,DataSet数据是一组数据的集合,通常用于存储配置数据或状态数据,一般可以是车厂不同车型的配置数据。

理论是这个样子,话也是这么说,但总得拿出来遛一遛,看看实际的样子。

于是乎,上代码、改配置,直接运行试试效果:

以下工程验证还是基于《AUTOSAR NvM模块配置详解》案例来修改。

Native

这个在原来教程有展示了,也是用得比较多一种,就配置成Native就好了,在EEPROM或FLASH中存储的数据只有一份。

它的读写示意图是这样的:

30e25e2a-d419-11ed-bfe3-dac502259ad0.png

30fdd088-d419-11ed-bfe3-dac502259ad0.png

Redundant

Redundant就是冗余、重复的意思,最直观的理解就是有多一个备份Block。这样可以让数据更加可靠、容错性更好,可用性也更好。

注意:只要数据了,备份每次都要重新同步的。

31106216-d419-11ed-bfe3-dac502259ad0.png

实际案例中的写入过程动图是这样的:

3120f1ee-d419-11ed-bfe3-dac502259ad0.gif

在读的时候,读到其中一份是正确的就OK了

315ab884-d419-11ed-bfe3-dac502259ad0.png

真实的读取过程也很简单:

317506b2-d419-11ed-bfe3-dac502259ad0.gif

但是,如果从第一个Block读取的数据是错误的(例如CRC校验不正确),那么,它就会从备份Block去读取数据。以下,我故意将CRC部分改成别的错误值,其读出来后会校验CRC,发现错的,再尝试读取备份区域的数据:

319439b0-d419-11ed-bfe3-dac502259ad0.png

那么它的读取过程是怎样的呢?看动图:

31ae0426-d419-11ed-bfe3-dac502259ad0.gif

这样看来,这个非常适合用于存储非常重要的数据,例如用于功能安全场合。

DataSet

DataSet数据是一组数据,这组数据里面有很多份相互独立的数据。它并不像Redundant那样,这些数据即使会有些相似性,但都是不一样的,改动其中一份不会影响其他的。

DataSet的读写其实跟Native的基本一样,只是在操作之前需要调用NvM_SetDataIndex函数来指定要操作哪一个DataSet数据块。它的参数定义是这样的:

Std_ReturnType NvM_SetDataIndex(NvM_BlockIdType BlockId, uint8 DataIndex)

如果不调用这个NvM_SetDataIndex函数,默认情况下,是操作最前的那个数据块,跟Native的表现一致:

31ee02e2-d419-11ed-bfe3-dac502259ad0.gif

如果操作第二块就是这样(起始地址是第一块的后面,紧挨着的):

320dee0e-d419-11ed-bfe3-dac502259ad0.gif

以上就是NvM Block的Native、Redundant和DataSet的区别了。

审核编辑 :李倩

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4251

    浏览量

    85636
  • 数据集
    +关注

    关注

    4

    文章

    1205

    浏览量

    24633
  • DataSet
    +关注

    关注

    0

    文章

    5

    浏览量

    2191

原文标题:AUTOSAR NvM Block的Native、Redundant和Dataset有什么区别?

文章出处:【微信号:embedded_sw,微信公众号:嵌入式软件实战派】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    分析Autosar架构下的NVM源码

    Autosar(Automotive Open System Architecture)是一种用于汽车电子系统开发的开放式架构标准,旨在提供一种用于构建可靠、安全的分布式系统的框架。其中,NVM
    的头像 发表于 12-08 13:56 1461次阅读

    锂亚电池 锂电池什么区别

    锂亚电池 锂电池什么区别
    发表于 10-30 08:51 3228次阅读

    hdmi与vga什么区别

    现在的有线连接一般都是利用HDMI和VGA这两种接口,但HDMI和VGA接口到底什么区别呢?
    的头像 发表于 01-24 13:58 3.9w次阅读

    RTOS和 TSOS什么区别

    RTOS和TSOS什么区别
    的头像 发表于 03-12 11:22 4517次阅读

    荣耀50和p50什么区别

    荣耀50和p50什么区别
    的头像 发表于 08-26 17:54 1.4w次阅读

    单片机和PLC什么区别

    单片机和PLC什么区别
    发表于 11-13 19:21 11次下载
    单片机和PLC<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    单片机和PLC什么区别

    单片机和PLC什么区别
    发表于 11-23 16:21 79次下载
    单片机和PLC<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    NvMAUTOSAR中的层次结构

    AUTOSAR中的NvM看起来挺难的,特别是在配置的时候,一堆参数,都不知道是干什么用的。想去研究它,却不知如何下手。其实吧,AUTOSAR的官方文档讲的挺详细的,但是内容很多,网上有很多文章对其进行解读,很多人没时间也不想细读
    的头像 发表于 04-21 10:47 3989次阅读

    Vivado Schematic中的实线和虚线什么区别

    Vivado Schematic中的实线和虚线什么区别
    的头像 发表于 06-16 16:53 1118次阅读
    Vivado Schematic中的实线和虚线<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?

    EML与DML:什么区别?该如何选择?

    DML和EML什么区别?该如何选择?本文将回答这些问题。
    的头像 发表于 06-30 10:43 2315次阅读
    EML与DML:<b class='flag-5'>有</b><b class='flag-5'>什么区别</b>?该如何选择?

    NVM Block连续写及Default Value问题分析

    NVM这块还只停留在按需求配置阶段,遇到问题不能深入分析。本系列文章将从遇到的问题或者提出的疑问着手,一起来更深入学习AUTOSAR架构下的存储协议栈。
    的头像 发表于 07-25 14:22 3334次阅读
    <b class='flag-5'>NVM</b> <b class='flag-5'>Block</b>连续写及Default Value问题分析

    FPC与传统PCB到底什么区别.zip

    FPC与传统PCB到底什么区别
    发表于 03-01 15:37 4次下载

    pcb软板和硬板什么区别

    pcb软板和硬板什么区别
    的头像 发表于 12-19 10:01 1806次阅读

    hdi板与普通pcb什么区别

    hdi板与普通pcb什么区别
    的头像 发表于 12-28 10:26 2698次阅读

    线路板的层和阶什么区别

    线路板的层和阶什么区别
    的头像 发表于 02-23 17:27 653次阅读