【AUTOSAR】 项目和代码详解(十三)----AUTOSAR Fls 配置

文章详细介绍了内部和外部Fls在初始化、读取、写入和擦除操作中的作用。内部Fls主要用于Boot模式下的程序代码写入,而外部Fls服务于数据存储。配置方面,强调了Flash驱动程序的静态可配置常量,如地址、大小、模式等,并提到了在ETASISOLAR中的配置选项,如启用/禁用特定API、超时监控和错误检测等功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Fls

概要

内部Fls

内部Fls为初始化和读取、写入、擦除内部闪存提供服务。Flash驱动程序提供了一个内置的加载器功能,允许将Flash访问代码加载到RAM中,并在需要时从那里执行写/擦除操作。

在ECU的应用模式下,flash驱动程序只能被flash EEPROM仿真模块用来写数据。它不打算写程序代码到闪存在应用模式。这应该在Boot模式下完成,不属于AUTOSAR涉及的内容。

内部Fls直接访问微控制器硬件,并位于微控制器抽象层。外部闪存通常通过微控制器的数据/地址总线(内存映射访问)连接,然后闪存驱动程序使用这些总线的处理程序/驱动程序来访问外部闪存设备。外部闪存设备的驱动程序位于ECU抽象层。

外部Fls

外部Fls为初始化和读取、写入、擦除外部闪存提供服务。它具有与内部Fls具有相同的功能范围。

模块配置

Flash驱动程序的下列常量应该是静态可配置的:

1 闪存基本地址

2 闪存大小

3 正常模式

4 立即作业处理函数中处理的读(比较)、写和擦除操作的最大块大小

5周期或中断处理函数中处理的读(比较)、写和擦除操作的最大块大小

6处理循环写和擦除的调用周期

7 Flash写保护

闪存驱动程序描述应发布以下属性:

1. 擦除的FLASH单元的值

2. 一个FLASH单元的大小(如8bit, 16bit,…)

3.闪存大小(以字节为单位)

4. 闪存基址

5. 物理内存分割(最小可写/可读/可擦/可保护单元)

ETAS中配置Fls是为了适配MemStack有关的其他模块,保证配置项的一致。ETAS ISOLAR中主要配置或修改内容如下:

FlsGeneral

 

FlsAcLoadOnJobStart

当删除或写作业启动时,flash驱动程序应将flash访问代码加载到RAM中,并在该作业完成或取消后卸载(覆盖)该作业。

TRUE Flash访问代码加载在作业开始/卸载在作业结束或错误。

FLASE Flash访问代码没有从RAM加载/卸载。

FlsBaseAddress

该参数定义了读/写/擦除和比较操作的地址下限。

FlsBlankCheckApi

编译开关以启用/禁用Fls_BlankCheck函数。

FlsCancelApi

编译开关以启用和禁用Fls_Cancel函数。

FlsCompareApi

编译开关,以启用和禁用Fls_Compare函数。

FlsDevErrorDetect

打开或关闭开发错误检测和通知。

FlsDriverIndex

FLS驱动索引值,由FEE使用。

FlsEraseVerificationEnabled

编译开关,以启用擦除验证。

FlsGetJobResultApi

编译开关,以启用和禁用Fls_GetJobResult函数。

FlsGetStatusApi

编译开关,以启用和禁用Fls_GetStatus函数。

FlsSetModeApi

编译开关,以启用和禁用Fls_SetMode函数。

FlsTimeoutSupervisionEnabled

编译开关,以启用超时监控。

FlsTotalSize

该参数与FLS_BASE_ADDRESS一起定义了读/写/擦除和比较操作的地址上限。

FlsUseInterrupts

是否使用中断触发FLS操作。

FlsVersionInfoApi

预处理程序切换,启用/禁用API来读取模块版本信息。

FlsWriteVerificationEnabled

编译开关,以启用写验证。

FlsEcucPartitionRef ???

将Flash驱动程序映射到1个或多个ECUC分区,以使驱动程序API在该分区中可用。

FlsConfigSet

 

FlsAcErase

RAM中的地址偏移量,擦除的flash访问代码将被加载到该地址偏移量。

用作函数指针访问擦除flash访问代码。

FlsAcWrite

RAM中的地址偏移量,写入的flash访问代码将被加载到该地址偏移量。

用作函数指针来访问写flash访问代码。

FlsCallCycle

flash驱动程序的主函数的调用周期(以秒为单位)。

FlsDefaultMode

该参数是初始化后的默认FLS设备模式。

实现类型:MemIf_ModeType。

FlsJobEndNotification

映射到某个上层模块(通常是Fee模块)提供的操作结束通知例程。

FlsJobErrorNotification

映射到某个上层模块(通常是Fee模块)提供的操作错误通知例程。

FlsMaxReadFastMode

在立即模式下,flash驱动程序处理功能的一个周期中要读取或比较的最大字节数。

FlsMaxReadNormalMode

在正常模式下,flash驱动程序处理功能的一个周期中要读取或比较的最大字节数。

FlsMaxWriteFastMode

在立即模式下,flash驱动程序处理功能的一个周期中要写入的最大字节数。

FlsMaxWriteNormalMode

在正常模式下,flash驱动程序处理功能的一个周期中要写入的最大字节数。

FlsProtection

擦除/写保护设置。只有在硬件支持下才相关。

FlsConfigSet/FlsExternalDriver

FlsConfigSet/FlsSectorList/FlsSector

FlsNumberOfSectors

具有相同FlsSectorSize和值的连续扇区的数量FlsPageSize。参数FlsSectorStartAddress表示第一个扇区的开始地址。

FlsPageSize

这个扇区的一页大小。实现类型:Fls_LengthType。

FlsSectorSize

这个部门的规模。实现类型:Fls_LengthType。

FlsSectorStartaddress

这个扇区的起始地址。实现类型:Fls_AddressType。

FlsPublishedInformation

FlsAcLocationErase

在RAM中的位置,删除的flash访问代码必须加载到该位置。只有在擦除flash访问代码不是位置独立的情况下才相关。如果不提供此信息,则假定擦除flash访问代码与位置无关,因此RAM位置可以自由配置。

FlsAcLocationWrite

在RAM中的位置,写入的flash访问代码必须加载到该位置。只有当写的flash访问代码不是位置独立的时候才有意义。如果不提供此信息,则假定write flash访问代码与位置无关,因此RAM位置可以自由配置。

FlsAcSizeErase

删除flash访问代码所需的RAM字节数。

FlsAcSizeWrite

写入flash访问代码所需的RAM字节数。

FlsErasedValue

被擦除的闪存单元的内容。

FlsEraseTime

最大时间擦除一个完整的闪存扇区。

FlsExpectedHwId

由这个驱动程序所期望的硬件设备的唯一标识符(该驱动程序已为其实现的设备)。仅适用于外部闪存驱动器。

FlsSpecifiedEraseCycles

为闪存设备指定的擦除周期数(通常在设备数据表中给出)。如果指定的擦除周期的数量取决于flash设备重新编程期间的操作环境(温度、电压、…),则在-40℃温度范围内至少保留15年的数据的最小数量。应保证+ 125℃。

FlsWriteTime

最长的时间来写一个完整的flash页面。

自动配置生成

参考文档

[1] AUTOSAR_SRS_Fls.pdf

[2] AUTOSAR_SWS_Fls.pdf

[3] AUTOSAR_SRS_SPALGeneral.pdf

[4] RTA-BSWReferenceGuide.pdf

AUTOSAR(Automotive Open System Architecture)是一种用于汽车电子系统开发的开放式系统架构。MCAL(Microcontroller Abstraction Layer)是AUTOSAR架构中的一部分,用于抽象底层微控制器硬件的接口功能。MCAL提供了一组标准化的API(Application Programming Interface),使上层应用程序可以与不同的微控制器硬件进行交互,而不需要关注底层硬件的细节。 在AUTOSAR MCAL中,Fls_Erase函数用于擦除一个或多个Sectors。它的参数包括起始地址长度,根据这些信息,函数会计算出需要擦除的Sectors,并一次性擦除它们。需要注意的是,起始地址长度的计算需要避免误擦,确保擦除的范围正确。 另外,AUTOSAR MCAL中的异步请求任务(如读、写、擦除、比较)是由主函数来执行的。主函数需要周期性地被调用,如果有任务需要处理,则执行相应的任务。而获取任务结果的函数用于获取最近一次任务的结果状态,但只能获取最后一个读任务的结果,无法获取之前的写任务的结果。 总之,AUTOSAR MCAL是一种用于汽车电子系统开发的开放式系统架构,其中的MCAL模块提供了对底层微控制器硬件的抽象标准化接口。Fls_Erase函数用于擦除Sectors,而异步请求任务的执行结果获取则由主函数来处理。 #### 引用[.reference_title] - *1* *2* *3* [AUTOSAR MCAL详解FLS](https://blog.csdn.net/jsls135/article/details/115231597)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大道生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值