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

news/2024/5/20 5:29:10 标签: AUTOSAR, 技术文章, TC397, MCAL, FEE

AUTOSARETASInfineon_FEEcenter_0">
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

FEE_36">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 文件。

FEE_50">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中,防止出现包含错误或者未定义错误。

MCAL__75">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之吾见”。


http://www.niftyadmin.cn/n/5336970.html

相关文章

用MATLAB函数在图表中建立模型

本节介绍如何使用Stateflow图表创建模型,该图表调用两个MATLAB函数meanstats和stdevstats。meanstats计算平均值,stdevstats计算vals中值的标准偏差,并将它们分别输出到Stateflow数据平均值和stdev。 请遵循以下步骤: 1.使用以下…

git提交代码到远端仓库的方法详解

一、何为git git就是版本控制器,就比如说你新建了一个git文件夹,里面用于存放你的C语言实习报告,现在要用git对该文件夹进行接管。当你修改了你的C语言实习报告点击保存之后,就用git的相关命令,提交给git,让…

Webpack5入门到原理24:优化代码运行性能

优化代码运行性能 Code Split 为什么 打包代码时会将所有 js 文件打包到一个文件中,体积太大了。我们如果只要渲染首页,就应该只加载首页的 js 文件,其他文件不应该加载。 所以我们需要将打包生成的文件进行代码分割,生成多个…

java servlet 学生成绩查询管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java Web学生成绩查询管理系统是一套完善的java web信息管理系统 采用servlet dao bean,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用 B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发…

Python实现两个列表相加的方法汇总

1. 使用 “” 运算符 通过 “” 运算符将两个列表相加,得到一个新的列表。例如: list1 [1, 2, 3] list2 [4, 5, 6] result list1 list2 print(result) # [1, 2, 3, 4, 5, 6]2. 使用 extend 方法 使用 extend 方法将一个列表中的元素逐个添加到另…

若依cloud框架使用定时任务实践

参考博客 https://blog.csdn.net/m0_60563637/article/details/126429284 具体操作 1.在job服务的task包下新建一个你需要的Task类 代码: Slf4j Component("propertyTask") public class PropertyTask {public void testDemo(){System.out.println(&q…

Kotlin浮点数Float整数Int乘*除/精度损失

Kotlin浮点数Float整数Int乘*除/精度损失 fun main(args: Array<String>) {val af: Float 1.7fvar ci: Int (af / 2).toInt()val i: Int 5println(af / 2)println(ci)println(af / 2f)println(i / 2)println(i / 2f)println(af * i) } 0.85 0 0.85 2 2.5 8.5 Java小数…

ChatGPT vs. 文心一言:智能回复、语言准确性与知识库丰富度的综合比较

在当今快速发展的人工智能领域&#xff0c;ChatGPT和文心一言都是备受瞩目的AI助手。它们在智能回复、语言准确性和知识库丰富度等方面都有着独特的特点&#xff0c;但究竟哪个更为出色呢&#xff1f;本文将从多个维度对这两大AI助手进行比较。 智能回复 ChatGPT&#xff1a;…