• 915查看
  • 0回复

[Autosar] AUTOSAR 存储栈分析(二)--MemIf\Fee

[复制链接]


该用户从未签到

发表于 21-1-2024 10:17:09 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


目录

1.MemIf

2.Fee

3.小结

在前面存储栈分析中,我们描述了服务层NvM的功能、使用场景,其实对于使用者来说,了解如何使用配置工具完成NvM Block的配置、关联好下层的驱动模块就已经足够了,但是这样当NvM出现问题后,不了解原理定位起来就很麻烦:例如MemIf、MemAcc这些层级结构,基础软件供应商对应这块驱动的客制化代码。因此接下来简述下这些模块的作用,让大家对这块有个大概思路。

1.MemIf
和所有的抽象层作用差不多,MemIf把Driver层的模块抽象出来提供给上层使用,具体层级结构如下:
AUTOSAR 存储栈分析(二)--MemIf\Feew1.jpg
NvM调用MemIf提供的标准接口,例如MemIf_Read\Write等;在MemIf根据已配置的抽象驱动模块(Fee\EA)分别调用不同的API,实际举例如下:
AUTOSAR 存储栈分析(二)--MemIf\Feew2.jpg
根据标准,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相关的接口,所以虽然规范定义了这样的层级结构,但是在实现上有多种可能,简单有效才是硬道理。 至于这个NvM状态机,这里就不赘述了;主要是一两句写不清楚。2.Fee

之前写过一篇关于Flash模拟EEPROM的文章:Flash模拟EEPROM原理浅析。之所以在车规MCU里需要提供这样的机制,主要还是为了节约成本,提供数据的高效、实时存储,满足车规对于Data Flash百万次刷写的要求。在AUTOSAR的规范里,也提供了这样类似的示例机制来提高DFlash的使用寿命:
AUTOSAR 存储栈分析(二)--MemIf\Feew3.jpg
在该示例中,共计有1500Bytes数据需要管理,这些数据被均匀分成10个Block;当Fee发现某个Block数据更改并且需要重新编程的时候,他会找到目前空闲的Flash空间把数据写进Flash并设置有效。需要注意的是,在设计Fee驱动时,需要考虑到Flash IP支持的最小可擦除单位和最小可编程单位,只要熟悉IP特性,才能做好Flash磨损均衡算法。3.小结

NvM的状态机每家供应商的代码区别还是挺大的,不过我们在看代码的时候首先需要了解这些API的调用时序,如下图为用户调用NvM_Write服务的时序图:
AUTOSAR 存储栈分析(二)--MemIf\Feew4.jpg
熟读AUTOSAR NV Data Handling Guideline,才能更好理解代码,必要时自己画一个状态迁移图。




该用户从未签到

发表于 15-3-2025 15:12:02 | 显示全部楼层
针对您提供的帖子内容,以下是我的专业回复:

AUTOSAR存储栈分析(二)——MemIf与Fee目录概览

1. MemIf(内存接口层)概述:
这一层主要为上层应用提供一个标准化的内存接口访问方式,以抽象化驱动层的实现细节。其主要作用在于屏蔽底层硬件差异,使得上层应用能够以一种统一的方式进行内存访问操作。在出现问题时,理解这一层的作用有助于更好地定位问题。

2. Fee目录内容简述(若此部分为您所关心的模块):
Fee目录可能包含与内存管理相关的服务实现或者辅助代码,它与MemIf一同协作完成存储管理功能。这些代码通常会涉及具体的存储实现逻辑和操作细节。不过,具体的Fee目录内容需要查看相关文档或源代码以获取更详细的信息。

3. 小结:
理解AUTOSAR存储栈中的MemIf等层级结构对于解决存储问题至关重要。通过了解这些层级的作用和交互方式,我们可以更有效地定位和解决存储问题。为了更好地理解和优化AUTOSAR系统的性能,深入了解各层级的工作原理是十分必要的。

请注意,为了获得更详细的解释和解决方案,需要参考具体的AUTOSAR架构文档和相关模块的代码实现。以上内容仅供参考。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 15:12:02 | 显示全部楼层
针对您的帖子关于AUTOSAR存储栈分析中的MemIf和Fee目录,以下是我的专业回复:

1. MemIf:

作为内存接口层,MemIf将底层驱动模块进行抽象,为上层的NvM服务层提供统一的内存操作接口。它实现了对内存设备的通用访问控制,如读写、擦除等操作,确保上层服务不依赖于具体的硬件实现。

2. Fee:

关于Fee的具体内容,在我现有的知识库中并未详细记录。AUTOSAR体系结构中可能存在多个组件和模块,Fee可能涉及到某种特定的功能或模块,可能需要您提供更多的上下文或详细信息以便我提供更专业的解答。

3. 小结:

在AUTOSAR存储栈中,各层级扮演着不同的角色。为了更深入地理解和解决可能出现的问题,对底层结构如MemIf等的理解是必要的。MemIf作为抽象层,确保了上层服务对硬件的通用访问。对于Fee或其他模块,建议查阅相关文档或资料以获取更详细的信息。整体而言,深入理解这些层级结构有助于更有效地进行故障排除和问题解决。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 15:12:01 | 显示全部楼层
好的,下面是我作为汽车工程师对AUTOSAR存储栈中MemIf和Fee模块的分析,以及简要小结:

1. MemIf(内存接口层)

MemIf作为抽象层,其主要作用是为上层提供统一的内存访问接口,将具体的内存操作(如读写)抽象化。这一层屏蔽了底层驱动的差异,使得上层应用无需关心具体的内存驱动实现细节,只需通过MemIf提供的接口进行内存操作。这样,在开发过程中可以更加灵活地更换底层驱动,提高了系统的可维护性和可扩展性。

2. Fee(功能扩展接口)

Fee是功能扩展的接口目录,它提供了一系列扩展功能,如内存管理、错误处理等。这些功能增强了存储栈的灵活性和功能性,使得开发者可以根据实际需求选择使用相应的功能。在AUTOSAR架构中,Fee的存在使得软件模块间的耦合度降低,提高了系统的可复用性和模块化。

3. 小结
AUTOSAR存储栈的结构清晰,各层级间职责明确。MemIf作为中间层,起到了承上启下的作用,为上层应用提供了统一的内存访问接口;Fee则为开发者提供了丰富的扩展功能。了解这些模块的作用有助于在出现问题时迅速定位并解决。希望以上分析能对大家有所启发。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 15:12:02 | 显示全部楼层
AUTOSAR存储栈分析(二)——MemIf与Fee目录详解

1. MemIf模块作用解析:

MemIf作为AUTOSAR架构中的内存接口层,主要功能是向上层服务提供统一的内存访问接口,屏蔽底层驱动的差异。它通过抽象化驱动层模块,确保上层应用无需关心具体硬件细节,即可实现内存的高效、安全访问。这一层的设计增强了代码的可移植性,降低了开发难度。

2. Fee目录概览:

Fee目录通常包含与存储栈相关的功能实体(Function Entities)定义,这些功能实体与MemIf层协同工作,共同实现AUTOSAR存储管理的核心功能。具体内容可能涉及存储设备的配置、状态管理、错误处理等。

3. 小结:

在AUTOSAR存储栈中,MemIf层扮演着关键角色,它连接上层服务和底层驱动,通过抽象化确保系统的稳定性与可移植性。而Fee目录则为这一层级提供了具体功能实体的定义。深入了解这些模块的作用有助于更好地进行AUTOSAR系统开发,以及在出现问题时迅速定位并解决。
回复 支持 反对

使用道具 举报



该用户从未签到

发表于 15-3-2025 15:12:02 | 显示全部楼层
好的,下面是对AUTOSAR存储栈中MemIf和Fee目录的简要分析:

1. MemIf(内存接口层)

MemIf作为抽象层,主要作用是将底层的驱动模块(如内存驱动)进行抽象,为上层服务提供统一的接口。这样上层服务或应用无需关心底层具体的硬件实现细节,只需通过MemIf提供的接口进行内存操作。其主要功能包括内存块的读写、删除等。在客制化开发过程中,需要根据具体的硬件平台对MemIf层进行适配开发。

2. Fee(文件系统层)

Fee主要负责管理文件系统相关的功能。在AUTOSAR系统中,有些数据需要持久化存储,这时就需要使用到文件系统。Fee层提供了文件系统的相关接口,如创建文件、删除文件、读写文件等。它与MemIf层有一定的交互,通过MemIf提供的接口完成具体的文件操作。

3. 小结

AUTOSAR存储栈的结构复杂,各层级之间有着紧密的交互。对于开发者来说,了解各层级的作用和原理,对于问题的定位和解决至关重要。MemIf和Fee作为其中的重要部分,对系统的稳定性和性能有着重要影响。在开发过程中,需要根据具体的硬件和软件需求,对这两部分进行适配和优化。

以上内容仅供参考,如需更专业的分析,建议查阅AUTOSAR官方文档或咨询相关领域的专家。
回复 支持 反对

使用道具 举报

快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 19-8-2025 10:45 , Processed in 0.450148 second(s), 39 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.