AUTOSAR实战篇:基于ETAS工具链集成Infineon FEE模块

发布时间:2024年01月20日

AUTOSAR实战篇:基于ETAS工具链集成Infineon FEE模块

前言

小T出品,必是精品!
手把手带你集成Infineon FEE模块,你值得拥有!

image-20240114193109488


正文

FEE全称为“Flash EEPROM Emulation ” , 即通过Flash来模拟EEPROM操作,相比Flash,EEPROM可以针对其存储空间同一位置直接改写,但Flash存储空间只能从1改成0,因此针对同一位置处的改写必须先擦除再写入才可以。

为了提高Flash的读写效率,因此Flash通过模拟EEPROM的操作来实现底层不断写入的操作,最终通过相应的换片机制来均衡Flash空间的读写寿命。

关于FEE机制具体是如何实现的,可以参照我之前的文章**《FEE机制》**。

虽然ETAS的ISOLAR-A/B自身也存在FEE模块,但是很多时候芯片厂商可能更多推荐使用其MCAL中自带的FEE模块,以便能够提高Flash芯片的使用效率,本文将以最为常见的英飞凌(Infineon) TC3XX 芯片的MCAL为例来讲解下如何将Infineon FEE模块集成到目标工程中

ETAS工程前置条件

在进行下列集成操作之前,请确保当前已存在Memory Stack可用的ISOLAR-A/B工程,后面小T将手把手带大家集成IFX FEE模块以替代RTA-CAR FEE模块。

使用过ISOLAR-A/B的小伙伴可能知道RTA-CAR FEE模块有个特点,其FEE的配置基本上NVM配置好之后,便可以通过RTA-CAR ConfGen的方式来自动化生成。

值得需要注意的是即使你不使用ISOLAR FEE模块,RTA-CAR工程也必须包含FEE模块,这是因为整个Memory Stack存在着诸多的依赖关系(Memif,NVM),你可以将此时的FEE模块作为一个Stub 模块的存在,在生成整个BSW代码的过程中,你也会同步生成FEE模块,不过在目标工程中不要集成该RTA-CAR对应的FEE模块即可。

image-20240114200004992

S1: Tresos中Ifx FEE模块配置

在EB Tresos工程中可以添加如下英飞凌IFX FEE模块,FEE中的配置需要跟RTA-CAR FEE中的配置保持一致,也就意味着就需要在Tresos工程中配置RTA-CAR FEE模块中相同的选项以及对应的FEE模块属性。

image-20240114200127563

image-20240114200513764

完成上述MCAL中的FEE配置后,便可以在Tresos工程中生成对应的BSW代码,该BSW代码中将包含Fee_PBcfg.h 与Fee_PBcfg.c 文件。

S2: 去除FEE模块源代码

由于目标工程中将不会使用RTA-CAR FEE模块,存在如下两种方式来确保集成的Ifx FEE模块:

  • 每次集成新的代码时,将对应生成的RTA-CAR FEE模块的相关源代码进行删除,采用新的Ifx FEE模块进行替代;
  • 为了避免每次都要进行删除操作,可以在编译的过程中将RTA-CAR FEE模块进行剔除即可。
S3:添加MemIf Stub函数

由于RTA-CAR中的MemIf模块总是依赖一些FEE模块中的一些自定义函数,而这些自定义函数在英飞凌 MCAL中并不存在,因此有必要添加相应的桩函数如Fee_Rb_XXX来完成相应的软件集成。

为了检查MemIf到底存在哪些依赖FEE模块的自定义函数,可以通过RTA-CAR生成的MemIf代码中找到MemIf_Cfg.h 文件,然后检查其相关的自定义函数:

image-20240114201422808

以如下Fee_Rb_VarLenRead桩函数为例:

image-20240114204616665

在Ifx FEE模块中添加一个Stub文件,在该文件中添加上述自定义函数的空定义,同时将该文件包含到 MemIf_MemMap.h中,防止出现包含错误或者未定义错误。

S4: 添加MCAL 静态代码

通过Tresos工程生成的代码仅仅是FEE模块的配置代码,该模块对应的FEE静态代码也需要同步集成到目标工程中,以如下目标工程为例,相关的TC3XX MCAL静态代码将放入到如下文件夹中。

当然除了添加FEE模块自身源代码之外,可能需要注意添加相关的FEE代码文件,如MemMap文件,该文件也可以在MCAL安装包中搜索到,一般文件名为 Fee_MemMap.h。

image-20240114201910655

S5:集成注意事项

至此,按照上述步骤完成集成之后就已经将英飞凌Ifx FEE模块成功集成到目标工程了,如果此时还出现编译错误,那么需重点检查如下几个方面:

  • 英飞凌IFX FEE静态代码是否成功集成到目标工程中,并且已加入到编译目录中;
  • 检查IFX FEE的配置代码是否与RTA-CAR中的FEE相关配置是否一致;
  • 检查RTA-CAR FEE相关代码是否已删除或者已剔除在编译目录中;
  • MemIf模块中对应的自定义函数是否已通过桩函数来实现。

更多精彩最新内容,欢迎大家多多关注小T公众号“ADAS与ECU之吾见”。

文章来源:https://blog.csdn.net/wto9109/article/details/135721382
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。