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

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

3天内不再提示

AUTOSAR存储栈分析之MemIfFee

jf_EksNQtU6 来源:汽车MCU软件设计 2023-12-19 09:33 次阅读

MemIf

和所有的抽象层作用差不多,MemIf把Driver层的模块抽象出来提供给上层使用,具体层级结构如下:

10bcb252-9d8c-11ee-8b88-92fbcf53809c.png

NvM调用MemIf提供的标准接口,例如MemIf_ReadWrite等;在MemIf根据已配置的抽象驱动模块(FeeEA)分别调用不同的API,实际举例如下:

1104d122-9d8c-11ee-8b88-92fbcf53809c.png

根据标准,Fee或者Ea又会调用MeeAcc提供的接口去访问不同的Flash驱动。

我们以Vector的实际代码为例,在MemIf层配置提供的接口如下:

/**-- MemHwA Function Pointers --**/
CONST(MemIf_MemHwAApi_Type, MEMIF_CONST) MemIf_MemHwaApis[MEMIF_NUMBER_OF_DEVICES] =
{
   /*  Fee_30_SmallSector  */ {
    Fee_30_SmallSector_Read, 
    MemIf_Fee_30_SmallSector_WriteWrapper, 
    Fee_30_SmallSector_EraseImmediateBlock, 
    Fee_30_SmallSector_InvalidateBlock, 
    Fee_30_SmallSector_Cancel, 
    Fee_30_SmallSector_GetStatus, 
    Fee_30_SmallSector_GetJobResult, 
    Fee_30_SmallSector_SetMode
  }
};

在Fee层级配置的Flash驱动接口如下:


/* FLS API pointer table */
CONST(Fee_30_SmallSector_FlsApiType, FEE_30_SMALLSECTOR_PRIVATE_CONST) Fee_30_SmallSector_FlsApi0 = 
{
   /*  Read Service  */ Fls_Read, 
   /*  Write Service  */ Fls_Write, 
   /*  Compare Service  */ Fls_Compare, 
   /*  Erase Service  */ Fls_Erase, 
   /*  Blank Check Service  */ Fls_BlankCheck, 
   /*  Get Status Service  */ Fls_GetStatus, 
   /*  Get Job Result Service  */ Fls_GetJobResult
};

发现没有,这一层的API并没有MemAccM相关的接口,所以虽然规范定义了这样的层级结构,但是在实现上有多种可能,简单有效才是硬道理。

Fee

之所以在车规MCU里需要提供这样的机制,主要还是为了节约成本,提供数据的高效、实时存储,满足车规对于Data Flash百万次刷写的要求。

在AUTOSAR的规范里,也提供了这样类似的示例机制来提高DFlash的使用寿命:

1116cbe8-9d8c-11ee-8b88-92fbcf53809c.png

在该示例中,共计有1500Bytes数据需要管理,这些数据被均匀分成10个Block;当Fee发现某个Block数据更改并且需要重新编程的时候,他会找到目前空闲的Flash空间把数据写进Flash并设置有效。需要注意的是,在设计Fee驱动时,需要考虑到Flash IP支持的最小可擦除单位和最小可编程单位,只要熟悉IP特性,才能做好Flash磨损均衡算法

小结

NvM的状态机每家供应商的代码区别还是挺大的,不过我们在看代码的时候首先需要了解这些API的调用时序,如下图为用户调用NvM_Write服务的时序图:

112911d6-9d8c-11ee-8b88-92fbcf53809c.png

熟读AUTOSAR NV Data Handling Guideline,才能更好理解代码,必要时自己画一个状态迁移图。

来源:汽车MCU软件设计

审核编辑:汤梓红

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

    关注

    33

    文章

    8494

    浏览量

    150817
  • 存储
    +关注

    关注

    13

    文章

    4261

    浏览量

    85660
  • AUTOSAR
    +关注

    关注

    10

    文章

    350

    浏览量

    21468
  • 代码
    +关注

    关注

    30

    文章

    4742

    浏览量

    68341

原文标题:AUTOSAR 存储栈分析--MemIfFee

文章出处:【微信号:谈思实验室,微信公众号:谈思实验室】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AUTOSAR存储模块的基础知识

    AUTOSAR存储模块的解释文章很多,本文整理存储模块基础知识。
    发表于 10-08 09:30 6577次阅读

    存储协议的Error流转过程分析

    前言 前面的文章我们详细分析了NvM,Fee,Fls模块以及NvM User和NvM的交互,对AUTOSAR架构下的存储协议应该有了一个比较深入的了解了。回头来看,站在NvM使用者的
    的头像 发表于 09-04 09:53 1280次阅读
    <b class='flag-5'>存储</b>协议<b class='flag-5'>栈</b>的Error流转过程<b class='flag-5'>分析</b>

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR

    AUTOSAR的工作原理是什么?为什么需要AUTOSAR
    发表于 05-17 06:44

    AUTOSAR是什么

    一、AUTOSAR是什么AUTOSAR组织自己的介绍是AUTOSAR (AUTomotive Open System ARchitecture) is a worldwide development
    发表于 11-10 07:47

    为什么使用AUTOSAR

    文章目录一、总概述1 为什么使用AUTOSAR?1.1 AUTOSAR出现之前的行业现状1.2 AUTOSAR出现之后可以实现如下目标2、AUTOSAR总概述二、各层分别概述1、BSW
    发表于 12-09 07:50

    数据结构链式介绍

    数据结构链式链式链式的定义链式操作的实现链式初始化链式
    发表于 12-17 08:11

    AUTOSAR的相关资料推荐

    AUTOSAR基础篇EcuM_wto9109的博客-CSDN博客【AutoSAR】【EcuM】ECU状态管理专注汽车软件开发、AutoSAR、车载以太网、SOA、EE架构。07-08
    发表于 01-27 08:25

    一文详解存储的结构

    存储结构与之前所学的线性存储结构有所差异,这缘于对数据 “存” 和 “取” 的过程有特殊的要求。
    发表于 10-09 16:00 2405次阅读
    一文详解<b class='flag-5'>栈</b><b class='flag-5'>存储</b>的结构

    STM32堆和及变量的存储理解

    STM32堆和及变量的存储理解
    发表于 11-30 16:51 19次下载
    STM32堆和<b class='flag-5'>栈</b>及变量的<b class='flag-5'>存储</b>理解

    如何用eBPF优化内存存储功能

    随着存储设备的升级与发展,当代的存储设备性能越来越高,延迟也越来越低。对于内核而言,Linux I/O 存储栈的软件所带来的性能开销已经越来越不可忽视。
    的头像 发表于 08-09 11:43 1109次阅读

    AUTOSAR通信协议的几个问题(一)

    最近在研究AUTOSAR通信协议的时候产生了以下几个问题。
    的头像 发表于 01-31 09:23 1864次阅读

    AUTOSAR中通信协议配置详解

    通讯协议几乎是CP AUTOSAR中最庞杂的一块。由于其涉及的模块比较多(仅实现CAN信号的收发就需要ECUC/CAN/CANIF/CANTP/PDUR/COM/XCP这么多模块的协作!),且名词
    的头像 发表于 09-21 10:02 5286次阅读
    <b class='flag-5'>AUTOSAR</b>中通信协议<b class='flag-5'>栈</b>配置详解

    AUTOSAR经典平台介绍

    汽车电子系统的软件组件、运行时环境和通信机制,以实现模块化、可重用和可扩展的系统开发。 在AUTOSAR CP中,软件组件被分为应用软件组件(SWC)和基础软件组件(BSW)。SWC是实现特定功能的软件模块,例如引擎控制、制动系统等。BSW是提供基础功能和服务的软件模块,例如通信协议
    的头像 发表于 10-27 15:30 1346次阅读
    <b class='flag-5'>AUTOSAR</b>经典平台介绍

    AUTOSAR平台研究报告:国产基础软件+芯片全方案加快量产

    2023年12月7日,AUTOSAR组织发布了最新版本AUTOSAR R23-11标准,从功能角度方面,更新主要集中在信息安全、功能安全以及通信协议等三个方面。
    的头像 发表于 02-21 15:30 2854次阅读
    <b class='flag-5'>AUTOSAR</b>平台研究报告:国产基础软件+芯片全<b class='flag-5'>栈</b>方案加快量产

    AUTOSAR解决方案 — INTEWORK-EAS-AP

    经纬恒润自主研发的Adaptive AUTOSAR平台产品, 遵循AUTOSAR Adaptive R19-11和R22-11规范, 使用C++11、C++17语言开发。可通过极易上手的自研工具配置,实现AUTOSAR AP协议
    的头像 发表于 11-06 16:11 549次阅读
    <b class='flag-5'>AUTOSAR</b>解决方案 — INTEWORK-EAS-AP