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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue + JS + tauri 开发一个简单的PC端桌面应用程序

Vue JS tauri 开发一个简单的PC端桌面应用程序 文章目录 Vue JS tauri 开发一个简单的PC端桌面应用程序1. 环境准备1.1 安装 Microsoft Visual Studio C 生成工具[^2]1.2 安装 Rust[^3] 2. 使用 vite 打包工具创建一个 vue 应用2.1 使用Vite创建前端Vue项目2.2 更改Vite打包…

【数据结构】C语言实现共享栈

共享栈的C语言实现 导言一、共享栈1.1 共享栈的初始化1.2 共享栈的判空1.3 共享栈的入栈1.3.1 空指针1.3.2 满栈1.3.3 入栈空间错误1.3.4 正常入栈1.3.5 小结 1.4 共享栈的查找1.5 共享栈的出栈1.6 共享栈的销毁 二、共享栈的实现演示结语 导言 大家好,很高兴又和大…

自己是如何使用单元测试

前言 自己是如何使用单元测试 进行单元测试能够让我们在编写方法的具体实现代码后,能清晰地看到其是否能实现预期的功能,有助于我们及时修正自己方法中存在的bug,以免在后续使用到某方法时出现意想不到的错误。 一、引入单元测试所使用的依赖…

初识VUE

文章目录 Vue是什么1.创建一个Vue实例2.插值表达式{{ }}3.Vue的响应式特性4.开发者工具的安装 Vue是什么 概念:Vue是一个用于构建用户界面的渐进式框架 ①构建用户界面:基于数据渲染出用户看到的界面 ②渐进式:循序渐进 ③ 框架&#xff1…

【核心复现】基于改进鲸鱼优化算法的微网系统能量优化管理matlab

目录 一、主要内容 1 冷热电联供型微网系统 2 长短期记忆网络(Long Short Term Memory, LSTM) 3 改进鲸鱼优化算法 二、部分代码 三、运行结果 四、下载链接 一、主要内容 该程序为《基于改进鲸鱼优化算法的微网系统能量优化管理》matlab代码,主要内容如下&…

stm32 FOC系列 直流有刷控制原理

1、直流有刷驱动板 使用三极管搭建的简易 H 桥电路,如图 5.3.1 所示: 图 5.3.1 是使用三极管搭建的简易 H 桥电路,其中 MOTOR 表示直流有刷电机, Q1、 Q2、 Q3 和 Q4 为 4 个三极管,其中 Q1 和 Q3 接在了电源正极&…

【学习记录】Ouster雷达运行fastlio提示 Failed to find match for field ‘ring‘ 的解决办法

本文仅用于个人记录。 在使用ouster雷达运行fastlio代码时,提示 Failed to find match for field ‘ring’ 但ouster雷达确实是发布了ring信息,可以从启动的rviz里面看到包括ring。 进一步检查,发现ouster对ring的定义是 uint_16t&#xf…

多维表格产品vika多维表、Flowus、Wolai体验记录

昨天从下午6点肝到凌晨2点多体验低代码平台多维表格产品,体验了3个国内产品,vika多维表、Flowus、Wolai。 具有多维表格新型关系数据库的鼻祖是 Airtable,国内模仿产品有vika多维表、飞书多维表格等。 还有一种类型就是以在国内鼎鼎大名的N…

Unity3D学习之UI系统——GUI

文章目录 1. 前言2. 工作原理和主要作用3. 基础控件3.1 重要参数及文本和按钮3.1.1 GUI 共同点3.1.2 文本控件3.1.3 按钮控件 3.2 多选框和单选框3.2.1 多选框3.2.2 单选框3.2.3 输入框3.2.4 拖动条 3.3 图片绘制和框3.3.1 图片3.3.2 框绘制 4 工具栏和选择网格4.1 工具栏4.2 选…

内存泄漏检测组件的实现

内存泄漏是在没有自动GC的编程语言里面,经常发生的一些问题。要实现一个内存泄露的检测组件,有两个需求: 能够检测出来内存泄漏能够判断出来哪一个地方的申请没有释放(哪一行引起的泄漏) 方案1:借助mtrac…

CSS明显比XPATH更性感!CSS再学一点儿

在selenium应用,CSS比XPATH更性感 To style an element, Front end developers need to locate the element first and then apply styling rules. It looks like this: #logo{ color: white; background: black; }That CSS snippet says, apply color and backgro…

Flutter GetX 之 国际化

今天给大家介绍一下 GetX 的国际化功能,在日常开发过程中,我们经常会使用到国际化功能,需要们的应用支持 国际化,例如我们需要支持 简体、繁体、英文等等。 上几篇文章介绍了GetX的 路由管理 和 状态管理,看到大家的点赞和收藏,还是很开心的,说明这两篇文章给大家起到了…