【Memory协议栈】Memory Abstraction Interface模块介绍

news2024/11/15 19:28:33

目录

前言

正文

1.功能简介

2.关键概念

3.关键类型定义

3.1 MemIf_StatusType

3.2 MemIf_JobResultType

3.3 MemIf_ModeType

4.关键API定义

4.1 MemIf_SetMode

4.2 MemIf_Read

4.3 MemIf_Write

4.4 MemIf_Cancel

4.5 MemIf_GetStatus

4.6 MemIf_GetJobResult

4.7 MemIf_InvalidateBlock

4.8 MemIf_EraseImmediateBlock

4.9 MemIf_EraseImmediateBlock

5.依赖的接口

6.小结


前言

存储协议栈负责ECU中非易失性数据的存储管理。存储协议栈的分享包括NVM、MemI、Ea、Fea、Eep、Fls模块的详细介绍及代码分析,具体的项目实战请关注本号的后续文章,本篇为Memory Abstraction Interface(MemIf)模块详细介绍篇。

正文

1.功能简介

MemIf模提供统一的接口让NVRAM管理器访问几个内存抽象模块(FEE或EA模块)。

内存抽象接口(MemIf)应从底层FEE或EA模块的数量中抽象,并在统一的线性地址空间上提供虚拟分割。

2.关键概念

Fast Mode: 例如,在启动/关闭期间,底层驱动程序可以被切换到快速模式,以便在这些阶段允许快速读/写。

Slow Mode: 在正常操作期间,底层驱动程序可以以慢速模式使用,以减少在底层设备/通信媒体的运行时或阻塞时间方面的资源使用。

注意:Fast Mode和Slow Mode可能取决于驱动程序的实现和底层设备的功能。也可能取决于NVRAM Manage的配置,因此也取决于特定项目的需求。

3.关键类型定义

3.1 MemIf_StatusType

图片

MemIf_StatusType类型标示底层抽象模块和设备驱动器的当前状表态。

3.2 MemIf_JobResultType

图片

图片

MemIf_JobResultType表示上一个作业的结果。

3.3 MemIf_ModeType

图片

MemIf_ModeType表示底层抽象模块和设备驱动程序的操作模式。

4.关键API定义

MemIf模块没有自己内部的功能逻辑,所有的API接口都会直接映射到对应的底层抽象模块(Ea, FEE)的API。

如果只配置了一个内存抽象模块,则内存抽象接口应实现为一组宏,将内存抽象接口API映射到相应的内存抽象模块的API。

参数设备索引应用于选择内存抽象模块(以及内存设备)。如果只配置了一个内存抽象模块,则应忽略参数设备索引。

例如

#define MemIf_Write(DeviceIndex, BlockNumber, DataPtr) \Fee_Write(BlockNumber, DataPtr)

如果配置了多个内存抽象模块,则内存抽象接口应使用有效的机制将API调用映射到适当的内存抽象模块。

注意:一种解决方案是使用指向函数的指针表,其中参数开发索引被用作数组索引。​​​​​​​

typedef struct{  uint8 DeviceIndex;  Std_ReturnType  (WriteFctPtr)(uint16 BlockNumber, uint8* DataBufferPtr);}MemIf_Write;
MemIf_Write MemIf_WriteFctPtr[] ={  {0, Fee_Write},  {1, Ea_Write},}

Example:​​​​​​​

#define MemIf_Write(DeviceIndex, BlockNumber, DataPtr) \MemIf_WriteFctPtr[DeviceIndex](BlockNumber,DataPtr)

如果配置了多个内存抽象模块,并且为该模块启用了开发错误检测,则内存抽象接口API的功能应检查参数设备指数是否为现有设备或模块服务中的广播标识符。

内存抽象接口API的功能应向默认错误参数跟踪器(DET)报告检测到的错误,错误代码为MEMIF_E_PARAM_DEVICE,不得执行被调用的服务。

如果内存抽象接口API的调用函数检测到属于非法参数设备索引的错误并具有返回值,则应设置如下:

MemIf_GetStatus: MEMIF_UNINIT

MemIf_GetJobResult: MEMIF_JOB_FAILED

All other functions: E_NOT_OK

4.1 MemIf_SetMode

图片

MemIf_SetMode调用所有底层内存抽象模块的“SetMode”功能。

注意:上述功能中故意遗漏了设备索引,即内存接口应将所有底层模块切换到请求的模式。在这种情况下,不需要一个额外的“广播”参数,因为设备不能单独切换到不同的模式。

4.2 MemIf_Read

图片

图片

MemIf_Read调用由参数DeviceIndex所选择的底层内存抽象模块的“读取”功能。

4.3 MemIf_Write

图片

MemIf_Write调用由参数设备索引所选择的底层内存抽象模块的“写入”功能。

4.4 MemIf_Cancel

图片

图片

MemIf_Cancel调用由参数设备索引所选择的底层内存抽象模块的“取消”功能。

4.5 MemIf_GetStatus

图片

MemIf_GetStatus调用由参数开发索引所选择的底层内存抽象模块的“GetStatus”功能。

4.6 MemIf_GetJobResult

图片

MemIf_GetJobResult调用由参数DeviceIndex所选择的底层内存抽象模块的“GetJobResult”功能。

4.7 MemIf_InvalidateBlock

图片

MemIf_InvalidateBlock调用由参数设备索引选择的底层内存抽象模块的“无效验证块”功能。

4.8 MemIf_EraseImmediateBlock

图片

4.9 MemIf_EraseImmediateBlock

图片

MemIf_EraseImmediateBlock调用由参数设备索引选择的底层内存抽象模块的“立即删除块”功能。

5.依赖的接口

图片

6.小结

如果不同时使用Fee和Ea,则MemIf模块的功能非常简单,就是一个底层Ea或者Fee的宏封装层。

图片

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1483916.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2023年NOC大赛软件创意编程(学而思)赛道图形化小高组复赛试题

目录 第一题 闪烁的星星 第二题 聚沙成塔 第三题 画十字

#WEB前端(DIV、SPAN)

1.实验&#xff1a;DIV、SPAN 2.IDE&#xff1a;VSCODE 3.记录&#xff1a; 类? 4.代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdev…

状态机设计原则系列之效率最大化

检测、搬运类设备,自动运行往往都设计状态机,搬运类对设备节拍往往要求很高,这里我们就需要合理的划分状态机了,使我们的执行效率最大化。有关状态机的系列文章可以查看下面相关文章链接: 1、机器流程控制之建立状态机 https://rxxw-control.blog.csdn.net/article/deta…

智能驾驶规划控制理论学习04-基于车辆运动学的规划方法

目录 一、线性二自由度汽车模型&#xff08;自行车模型&#xff09; 1、二自由度模型概述 2、不同参考点下的状态空间方程 3、前向仿真 二、运动基元生成方法 1、杜宾斯曲线&#xff08;Dubins Curve&#xff09; 2、Reeds Shepp Curve 三、多项式曲线&#xff08;Poly…

多线程(进阶四:线程安全的集合类)

目录 一、多线程环境使用ArrayList 二、多线程环境使用队列 三、多线程环境使用哈希表 1、HashMap 2、Hashtable 3、ConcurrentHashMap (1)缩小了锁的粒度 (2)充分使用了CAS原子操作&#xff0c;减少一些加锁 (3)针对扩容操作的一些优化&#xff08;化整为零&#xff…

优选算法|【双指针】283.移动零

题目 283. 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 请注意 &#xff0c;必须在不复制数组的情况下原地对数组进行操作。 示例 1: 输入: nums [0,1,0,3,12]输出: [1,3,12,0,0]示例 2: 输入…

基于ssm旅社客房收费管理系统+vue

目 录 目 录 I 摘 要 III ABSTRACT IV 1 绪论 1 1.1 课题背景 1 1.2 研究现状 1 1.3 研究内容 2 2 系统开发环境 3 2.1 vue技术 3 2.2 JAVA技术 3 2.3 MYSQL数据库 3 2.4 B/S结构 4 2.5 SSM框架技术 4 3 系统分析 5 3.1 可行性分析 5 3.1.1 技术可行性 5 3.1.2 操作可行性 5 3…

PTA L2-005 集合相似度

给定两个整数集合&#xff0c;它们的相似度定义为&#xff1a;Nc​/Nt​100%。其中Nc​是两个集合都有的不相等整数的个数&#xff0c;Nt​是两个集合一共有的不相等整数的个数。你的任务就是计算任意一对给定集合的相似度。 输入格式&#xff1a; 输入第一行给出一个正整数N…

IEEE 802.1Qbv标准解析:为实时应用提供可靠网络基础设施

IEEE 802.1Qbv是IEEE 802.1家族中的一项重要标准&#xff0c;专门针对实时流量的时间敏感性进行优化。这一标准在网络通信领域&#xff0c;特别是在对实时性要求极高的应用中&#xff0c;如音视频传输、工业自动化、智能交通系统等&#xff0c;具有极其重要的地位。 在传统的以…

递推算法(c++)

递推可以说是递归反过来的一种算法&#xff0c;递归是从后往前倒着算&#xff0c;递推是从前往后正着算。 统计每个月兔子的总数 题目描述 有一对兔子&#xff0c;从出生后第3个月起每个月都生一对兔子&#xff0c;一对小兔子长到第三个月后每个月又生一对兔子&#xff0c; …

为什么HashMap的键值可以为null,而ConcurrentHashMap不行?

写在开头 今天在写《HashMap很美好&#xff0c;但线程不安全怎么办&#xff1f;ConcurrentHashMap告诉你答案&#xff01;》这篇文章的时候&#xff0c;漏了一个知识点&#xff0c;知道晚上吃饭的时候才凸显想到&#xff0c;关于ConcurrentHashMap在存储Key与Value的时候&…

ARM架构基础内容

文章目录 前言一、AAPCS二、中断调用过程三、FreeRTOS中任务切换的实质总结 前言 一、AAPCS AAPCS&#xff0c;全称为ARM Architecture Procedure Call Standard&#xff0c;是ARM架构下的过程调用标准。这个标准定义了在ARM架构中函数调用和返回的约定&#xff0c;以确保不同…

文件底层的深入理解(1)

一、文件学习的简单铺垫 我们都知道&#xff0c;文件等于文件内容加上文件属性。访问文件之前都得先通过进程才能打开相应的文件&#xff0c;一个进程可以打开多个文件。修改文件&#xff0c;都是通过执行代码的方式完成修改。要对文件进行修改&#xff08;或其他操作&#xff…

Java 数组(详细)

目录 一、数组的概述 1. 数组的理解&#xff1a; 2. 数组相关的概念&#xff1a; 3. 数组的特点&#xff1a; 4. 数组的分类&#xff1a; 5.数据结构&#xff1a; 二、一维数组 1. 一维数组的声明与初始化 2. 一维数组元素的引用&#xff1a; 3. 数组的属性&#xff1…

微信小程序,h5端自适应登陆方式

微信小程序端只显示登陆(获取opid),h5端显示通过账户密码登陆 例如: 通过下面的变量控制: const isWeixin ref(false); // #ifdef MP-WEIXIN isWeixin.value true; // #endif

力扣hot100题解(python版44-47题)

44、二叉搜索树中第K小的元素 给定一个二叉搜索树的根节点 root &#xff0c;和一个整数 k &#xff0c;请你设计一个算法查找其中第 k 个最小元素&#xff08;从 1 开始计数&#xff09;。 示例 1&#xff1a; 输入&#xff1a;root [3,1,4,null,2], k 1 输出&#xff1a;…

FHE 的应用场景

参考文献&#xff1a; [MSM22] Marcolla C, Sucasas V, Manzano M, et al. Survey on fully homomorphic encryption, theory, and applications[J]. Proceedings of the IEEE, 2022, 110(10): 1572-1609. 文章目录 FHEFirst GenerationSecond GenerationThird GenerationFour…

编码规则转换

思考&#xff1a; 如何将一个机内码转换为区内码&#xff1f; 只要将机内码减去 A0A0 就可以啦 如果只让我们用加法器来解决呢&#xff1f; 注意我们的数据占用了 32 位&#xff0c;如果想用补码进行减法运算的话&#xff0c;符号位怎么办&#xff1f;&#xff1f;&#xf…

2199. 骑士共存问题(最小割,最大权独立集,二分图)

活动 - AcWing 在一个 n∗n 个方格的国际象棋棋盘上&#xff0c;马&#xff08;骑士&#xff09;可以攻击的棋盘方格如图所示。 棋盘上某些方格设置了障碍&#xff0c;骑士不得进入。 对于给定的 n∗n个方格的国际象棋棋盘和障碍标志&#xff0c;计算棋盘上最多可以放置多少个…

2024年腾讯云优惠券_代金券_云服务器折扣券免费领取链接

腾讯云优惠代金券领取入口共三个渠道&#xff0c;腾讯云新用户和老用户均可领取8888元代金券&#xff0c;可用于云服务器等产品购买、续费和升级使用&#xff0c;阿腾云atengyun.com整理腾讯云优惠券&#xff08;代金券&#xff09;领取入口、代金券查询、优惠券兑换码使用方法…