当前位置: 首页 > news >正文

关于tresos Studio(EB)的MCAL配置之FEE

FEE模块其实是抽象层的,在FLS模块的上面,所以这个MCAL的模块可以用可以不用。如果BSW层有,就不用再MCAL里面配置。

NVM模块提供非易失性数据的存储和维护服务,提供管理和维护NV数据所需的同步/异步服务(init/read/write/control)为SWCs提供AUTOSAR接口。

MemIf模块允许NVRAM管理器以相同的方式访问多个内存抽象模块(FEE或EA模块)

1.需要在Fee_Init之前调用Fls_Init

2.Fee_MainFunction和Fls_MainFunction必须重复调用FEE模块初始化及其操作。当一个操作(初始化或标准操作)完成时,Fee_GetStatus返回MEMIF_IDLE

3.使用FeeNvmJobEndNotification和Fee_GetStatus来确保最后一个擦除/写作业已经完成

4.在调用Fee_Write函数获取即时数据之前,必须调用Fee_EraseImmediateBlock函数来预擦除闪存区域

 

分为三层,FeeClusterGroup、FeeCluster和FeeSector。FeeClusterGroup至少需要2个FeeCluster,FeeCluster里面包含一个或多个FeeSector,FeeSector跟FLS模块的FlsSector一一对应。

 

FEE全称Flash Eeprom,通过flash模拟EEPROM

一般BSW也有一个一样的模块,MCAL和BSW里面只需要使用其中一个,大家的接口名字都是一样的。

FEE模块为上层提供一个32位的虚拟线性地址空间和统一的分段方案

这个虚拟32位地址应该包括:

•一个16位的块号-允许(理论)65536个逻辑块的数量,16位块号表示一种可配置的(虚拟的)分页机制

•一个16位的块偏移量-允许(理论)块大小为64KByte每个块

 

Fee模块本身是脱离硬件的,但是Fee模块可能会引用的Fls模块定制API

集群组:至少两个集群组成

集群:包含FEE块一个或多个flash物理扇区

块:Flash中包含应用程序数据的区域

每一个集群或者块都包含:一个头和数据 

可能存在多个集群,但只有一个是活动并包含有效数据,而其他集群未被使用。

数据整体管理

 

下面有详细的介绍

集群头

 

ClrID:集群ID

StartAddress:集群起始地址(逻辑地址)

ClusterSize:集群的长度

checkSum:ClrID、StartAddress和ClusterSize字段之和

val Flag:有效位,0x81表示有效的集群

StartCopyFlag:开始复制标志位,0x11启动交换。

块头

 

TargetAddress:起始地址(逻辑地址)

Data:具体的数据

checkSum:BlockNumber、Length和TargetAddress字段之和

valFlag:有效位。0x80fcfcfcfffffffff表示有效,0x80F8FCFCFCFFFCFC表示无效。

例子

一个集群组有两个集群,起始地址为0x10000和0x18000,块长度为5和64.

 

这里能看到集群的ID为1,起始地址为0,长度0x10000,集群状态有效。

块1数据都是0x55,状态有效。

 

块2也是类似

配置

General

Fee Development Error Detect开发者错误检测

Fee Main Function Periode函数Fee_MainFunction的轮询周期,不过没啥用

Fee Index模块索引,也没用

Fee Nvm Job End Notification操作NVM模块完成时候的回调函数

Fee Nvm Job Error Notification操作NVM模块出现错误的时候的回调函数

Fee Polling Mode使能FEE模块的轮询模式

Fee Set Mode Supported使能Fee_SetMode接口

Fee Version Info Api使能Fee_GetVersionInfo接口

Fee Virtual Page Size逻辑块对齐大小(字节)

Fee Flag Space optimization使能标志空间优化

Fee Swap Buffer Size交换缓冲区大小(字节)

Fee Data Buffer Size数据缓冲区大小(字节)

Fee Block Always Available一般情况下当写操作被中断(取消、重置)时,应用程序不能再访问FEE块数据,勾选了这个选项就允许访问。

FeeClusterGroup

FeeClusterGroup集群组里面有很多个FeeCluster集群,FeeCluster集群里面又有很多FeeSector,然后在里面设置对FLS sector的引用。

 

FeeBlockConfiguration

 

Fee Cluster Group Ref将Fee块分配给特定的Fee集群组

Fee Block Number块的ID,从1开始排。

Fee Block Size每个逻辑块的大小(字节)这里需要注意每块的大小和使用的总大小

Fee Immediate Data块里面包含了即时数据

Fee Number Of Write Cycles这一块所需要的写周期数,不可配置

Fee Device Index索引,引用回/Fls/Fls/FlsGeneral就行

静态代码

Fee_Cancel异步取消flash模拟EEPROM

Fee_EraseImmediateBlock异步擦除直接逻辑块

Fee_GetJobResult同步获取最后一个作业的结果,有成功,失败,等待,取消,损坏,无效等。

Fee_GetStatus获取FEE模块状态,有未初始化,空闲,繁忙,忙于内部管理操作等。

Fee_GetVersionInfo获取版本

Fee_Init模块初始化函数

Fee_InvalidateBlock让对应的逻辑块失效

Fee_JobEndNotification将异步操作的成功结束报告给FEE模块,意思就是所有异步成功操作都要调用这个函数。

Fee_JobErrorNotification将异步操作的失败结束报告给FEE模块,意思就是所有异步失败操作都要调用这个函数。

Fee_MainFunction需要周期调用,将异步处理请求的读/写/擦除作业,分别进行内部管理操作,里面的操作被称为job作业。

Fee_Read根据块的序号、偏移量和长度,异步读取块的起始地址,也就是指针。

Fee_SetMode设置FEE的模式,快模式或者慢模式

Fee_Write根据块的序号,异步写入数据,写入数据长度为一个块,注意要先擦后写。

Fee_GetRunTimeInfo获取集群组的运行信息

如果你想即时更新数据,则先调用Fee_EraseImmediateBlock接口,再调用Fee_Write接口

 

 

 

 


文章转载自:
http://boondoggle.isnyv.cn
http://canonicity.isnyv.cn
http://abseil.isnyv.cn
http://apochromatic.isnyv.cn
http://actinon.isnyv.cn
http://actuation.isnyv.cn
http://chapleted.isnyv.cn
http://atheist.isnyv.cn
http://amildar.isnyv.cn
http://agnation.isnyv.cn
http://astronautic.isnyv.cn
http://aurelia.isnyv.cn
http://accidence.isnyv.cn
http://anorectal.isnyv.cn
http://bazoom.isnyv.cn
http://autnumber.isnyv.cn
http://captainless.isnyv.cn
http://autodrome.isnyv.cn
http://apiculus.isnyv.cn
http://butterboat.isnyv.cn
http://calciphobic.isnyv.cn
http://androecium.isnyv.cn
http://centralise.isnyv.cn
http://ajog.isnyv.cn
http://beggarweed.isnyv.cn
http://bidder.isnyv.cn
http://cancellous.isnyv.cn
http://ardently.isnyv.cn
http://addlepate.isnyv.cn
http://caustic.isnyv.cn
http://www.dtcms.com/a/281366.html

相关文章:

  • dataLoader是不是一次性的
  • 文心一言4.5企业级部署实战:多模态能力与Docker容器化测评
  • 告别手动迁移:使用 PowerShell 一键导出 IIS 配置,让服务器迁移更轻松
  • LSA链路状态通告
  • QT——文件选择对话框 QFileDialog
  • Transformer是什么 - 李沐论文《Attention Is All You Need》精读
  • 内网穿透实例:在 NAT 环境下通过 FRP 配置 ThinLinc 远程桌面 实现外网登录
  • zynq串口的例子
  • 自己训练大模型?MiniMind 全流程解析 (一) 预训练
  • 如何科学做好企业软件许可优化?
  • Day03_C语言网络编程20250715
  • Datawhale AI 夏令营第一期(机器学习方向)Task2 笔记:用户新增预测挑战赛 —— 从业务理解到技术实现
  • 如何理解flex: 1 1 50%
  • 【Unity基础】Unity中元素的层级排序
  • WPF,Winform,HTML5网页,哪个UI开发速度最快?
  • 线程(一) linux
  • 前端医疗生命体征
  • MIPI DSI(四) video 和 command 模式
  • 比较vue和react框架
  • Windows 下 Visual Studio 开发 C++ 项目的部署流程
  • Spring Boot 启动原理揭秘:从 main 方法到自动装配
  • 判断QMetaObject::invokeMethod()里的函数是否调用成功
  • Process Lasso:提升电脑性能的得力助手
  • C++20 协程参考手册详解 - 源自 cppreference.com
  • Expression 类的静态方法
  • PostgreSQL 大数据量(超过50GB)导出方案
  • 国产化Excel处理组件Spire.XLS教程:在 C# 中生成 Excel文件
  • 关于LM74700-Q1低IQ理想二极管的应用与参数极限
  • saltstack安装部署
  • 对象数组列表转成树形结构--树形结构转成列表(处理菜单)