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

RTE是AUTOSAR架构的关键组成部分,负责软件组件间的通信和调度。它包括两个子部分:组件通信和组件调度,并与基本软件调度器紧密关联。配置涉及RTE服务、模式机调度、变量访问和跨核同步等,确保ECU的最优运行。

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

RTE

 

概要

实时运行环境(RTE)是AUTOSAR ECU体系结构的核心。RTE是AUTOSAR接口的实现(对于特定的ECU)虚拟函数总线(VFB)。RTE提供基础设施服务,使AUTOSAR软件组件之间能够进行通信,并充当AUTOSAR软件组件访问包括操作系统和通信服务在内的基本软件模块的手段。

RTE包含系统基础结构的两个变量元素从不同的组件映射到ecu,以及标准化的RTE服务。

RTE在逻辑上可以分为两个子部分:

  1. 软件组件之间的通信
  2. 软件组件的调度

为了完整地描述RTE的概念,还必须考虑基本的软件调度器。基本软件调度器调度基本软件模块的可调度器实体。在某些文档中,可调度实体也称为主处理函数。由于相同的OS任务可能被用于软件组件和基本软件模块的调度,RTE的调度部分与基本软件调度器有着紧密的联系,不能被清晰地分割开来。为每个ECU生成RTE和基本软件调度器,以确保RTE和基本软件调度器对于ECU是最优的。

 

模块配置

ETAS RTA-RTE中主要配置或修改内容如下:

 

 

RteBswGeneral

Bsw的一般配置参数

RteBswModuleInstance

表示在一个ECU上配置的bsw模块的一个实例。

同BSW_SCHEDULER

RteDistributedSharedModeQueue

此容器持有分布式共享模式队列的配置。

RteDistributedSharedModeQueue

RteDSMQModeMachineInstanceRef

引用参与此分布式共享模式队列的模式机实例。

RteDSMQOsTaskRef

参考DSMQ转换ostask,它用于专门调度进入可执行实体,转换ExecutableEntitys、on-exit ExecutableEntitys和ModeSwitchAck这个分布式共享模式队列的模式机实例激活的ExecutableEntity。

RteDSMQResponsibleRipsPluginRef

对RTE配置容器的可选引用实现插件实现对分配给这个分布式共享模式队列的所有模式机实例的保护。

RteGeneration

此容器保存RTE生成配置的参数。

RteBypassSupport

通用开关启用并选择旁路支持方式。

RteCalibrationSupport

RTE生成器应该可以选择关闭对生成的RTE代码校准的支持。此选项将立即影响完整的RTE代码。

RteCodeVendorId

保存生成的Rte代码的供应商ID。

RteDevErrorDetect

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

RteDevErrorDetectUninit

Rte将检测是否在调用其api时启动,并且BSW调度器应检查调用其api时是否已初始化。

RteGenerationMode

切换RTE发生器的两种可用的生成模式。

RteInExclusiveAreaCheckEnabled

启用对rte_e_in_exclusive ve_area用于阻塞的检查api。

RteMeasurementSupport

RTE生成器应该可以选择关闭对生成的RTE代码的测量支持。此选项将立即影响完整的RTE代码。

RteOptimizationMode

切换RTE发生器的两种可用的优化模式。

RteToolChainSignificantCharacters

如果存在,RTE生成器应该提供C RTE标识符的列表,这些标识符的名称在只有第一个标识符时不是惟一的考虑了重要的字符。

RteValueRangeCheckEnabled

如果设置为true, RTE生成器将启用指定的variabledataprototype的值范围检查。

RteVfbTraceClientPrefix

为要生成的所有VFB跟踪函数定义一个附加前缀。使用这种方法,可以同时进行调试和DLT跟踪功能。

RteVfbTraceEnabled

RTE生成器应该在何时全局启用VFB跟踪RteVfbTrace设置为“true”。

RteVfbTraceFunction

当在RTE配置头文件中有钩子函数名的#define并且全局启用跟踪时,RTE生成器应该为给定的钩子函数启用VFB跟踪。

RteImplicitCommunication

要生成的隐式通信行为的配置。

RteCoherentAccess

如果设置为真,则此RteImplicitCommunication容器的引用变量访问将位于一个相干组中。连贯隐式读访问的数据值在第一次读RunnbaleEntity之前读取,并且在所有读RunnableEntitys的执行期间是稳定的;除了相干隐式写访问外,es属于同一相干群。当最后一个写RunnableEntity结束后,相干隐式写访问es所写的数据值对不属于相干组的读写器可用。请注意,可以为对相同和不同数据元素的可变访问定义一致的隐式数据访问。然而,一个相干群的所有相干隐式数据访问都必须在同一任务中执行。

RteImmediateBufferUpdate

如果设置为true, RTE将在重新开始(对于角色dataReadAccess中的VariableAccess)之前立即执行抢占区特定缓冲区更新。之后(对于角色dataWriteAccess中的VariableAccess)运行可执行。

RteSoftwareComponentInstanceRef

引用SwComponentPrototype。这表示属于RteImplicitCommunication的变量访问的实例。

RteVariableReadAccessRef

引用dataReadAccess角色中的VariableAccess。

RteVariableWriteAccessRef

引用dataWriteAccess角色中的VariableAccess。

RteInitializationBehavior

指定RTE分配的用于实现的变量的初始化策略VariableDataPrototypes。容器定义了一组RteSectionInitializationPolicys和一个RteInitializationStrategy,适用于这个集合。

RteInitializationRunnableBatch

这个容器对应于Rte_Init_<shortName of this container>函数名称。

RteInitializationBehavior

指定RTE分配的变量的初始化策略,目的是实现variabledataprototype。容器定义了一组RteSectionInitializationPolicys和一个RteInitializationStrategy,适用于这个集合。

RteInitializationStrategy

始化策略的定义,由RteSectionInitializationPolicy选择的sectioninitializationpolicy。

RteSectionInitializationPolicy

此参数描述应用特定RTE初始化策略的sectioninitializationpolicy。

RteOsInteraction

Rte与操作系统的交互。

RteModeToSchedule TableMapping

提供模式的配置输入模式管理器的ModeDeclarionGroupPrototype

OsScheudleTable应该是活动的。模式管理器可以指定为SwComponentPrototype(RteModeSchtblMapSwc)或作为一个bsw模块(RteModeSchtblMapBsw)。

RteModeScheduleTableRef

引用OsScheduleTable,它将在指定的rtemodeschblmapmodeationrefs中激活。

RteModeSchtblMapModeDeclarationRef

参考模式声明。

RteModeSchtblMapBsw

RteModeSchtblMapBswInstanceRef

引用bsw模块的实例规范。

RteModeSchtblMapBswProvidedModeGroupRef

modedeclaration ationgroupprototype实例的引用。

RteModeSchtblMapSwc

RteModeSchtblMapSwcInstanceRef

引用SwComponentPrototype的实例规范。

RteModeSchtblMapSwcPortRef

引用SwComponentPrototype的PPortPrototype。

RteOsTaskChain

此容器持有一个任务链配置的配置。

RtePredecessorOsTaskRef

当一个OsTask终止时,该链接另一个OsTask。

RteSuccessorOsTaskRef

将与前任OsTask链接的OsTask。

RteSyncPoint

RteSyncPoint对于在由相同的事件源触发但映射到不同核上属于不同分区的任务时提供跨核同步是必要的。

RteUsedOsActivation

属性用于激活os task和可运行的实体。

RteExpectedActivationOffset

激活偏移(秒)

RteExpectedTickDuration

预期的滴答持续时间(以秒为单位),应配置为驱动OsScheduleTables或OsAlarm。

RteActivationOsAlarmRef

参考一个OsAlarm。

RteActivationOsSchTblRef

对OsScheduleTable的引用。

RteActivationOsTaskRef

参考OsTask。

RtePostBuildVariantConfiguration

postbuildvariantsetRTE的构建后配置。

RtePostBuildUsedPredefinedVariant

对PredefinedVariant元素的引用,该元素定义了PostBuildVariationCriterion元素的值。引用的PredefinedVariant的短名称定义了RtePostBuildVariant。

RteRips

此容器提供Rte的配置RTE支持的实现插件。如果没有定义容器,则支持Rte全局禁用实现插件(RIPS)。

RteRipsSupport

全局启用或禁用对Rte实现的支持插件

RteRipsPluginConfigurationRef

引用RTE实现的配置容器持有RTE相关设置的插件。所有引用的RTE实现插件用于RTE生成。

RteRipsInvocationHandler

定义RTE实现插件的调用处理程序的配置容器内容。

RteRipsPlugin

定义包含Rte相关设置的RIPS插件的配置容器内容。

RteRipsPluginFillFlush Routine

定义由RTE实现插件实现的填充刷新例程的配置容器内容。

RteSwComponentInstance

位于要配置的ECU上的SwComponentPrototype的表示。所有子容器配置方面都与此相关SwComponentPrototype。

RteSoftwareComponentInstanceRef

引用SwComponentPrototype。

RteEventToTaskMapping

将RunnableEntity实例映射到一个OsTask基于激活的RTEEvent。在a的情况下RunnableEntity通过一个直接的函数调用来执行仍然指定了RteEventToTaskMapping,但是没有包含RteMappedToTask元素的RtePositionInTask参数是必要的由相同的RTE API调用的事件的顺序。

RteActivationOffset

激活偏移(秒)

RteImmediateRestart

当rteimmediate estart被设置为true时,如果runnableentiy被激活,则在终止后应立即重新启动。

RteOsSchedulePoint

通过在ExecutableEntity执行后显式调用Os schedule服务来引入调度点。如果可执行实体的执行被跳过,Rte生成器可以将对操作系统调度的几个连续调用优化为一个调用。

RtePositionInTask

每个映射到OsTask的RunnableEntity在任务执行中都有一个特定的位置。对于周期性激活,这是执行的顺序。对于事件驱动程序激活,这是实际的RunnableEntity必须执行的计算顺序。在直接函数调用的情况下,当同一个RTE调用多个ExecutableEntities时,需要使用此参数来提供事件的顺序API。

RteServerQueueLength

指定服务器调用序列化的队列长度。该值覆盖ServerComSpec中指定的queueLength。

RteEventPredecessorSyncPointRef

rteeventorsyncpointref是必要的,它可以在由同一事件源触发的RteEvents被映射到不同核上不同分区的任务时,提供跨核同步。所有引用都必须到达同步点在执行所有相关任务之前,将继续执行RteEvents。对于rteeventorsyncpointref,被映射的RteEvent激活的RunnableEntity在同步点通过后执行。

RteEventRef

引用指向的RTEEvent的描述RunnableEntity被映射。这允许一个细粒度的映射RunnableEntites基于正在激活的RTEEvent。

RteEventSuccessorSyncPointRef

RteEventSuccessorSyncPointRef是必要的,它可以在由相同的事件源触发的RteEvents被映射到不同核上属于不同分区的任务时提供跨内核的同步。所有引用都必须到达同步点在执行所有相关任务之前,将继续执行RteEvents。对于RteEventSuccessorSyncPointRef,由映射的RteEvent激活的RunnableEntity在进入同步点之前执行。

RteMappedToTaskRef

对象激活的RunnableEntity引用RteEventRef被映射到。

RteRipsFillRoutineRef

引用由RTE实现的缓冲区填充例程实现插件。方法之前直接调用此例程ExecutableEntity已启动。

RteRipsFlushRoutineRef

引用由RTE实现的缓冲区刷新例程实现插件。方法后直接调用此例程ExecutableEntity已经终止。

RteRipsInvocationHandlerRef

引用由RTE实现的缓冲区填充例程实现插件。方法之前直接调用此例程ExecutableEntity已启动。

RteUsedInitFnc

RunnableEntity在Rte_Init_<InitContainer>函数的上下文中初始化时执行。

RteUsedOsAlarmRef

如果一个OsAlarm被用来激活OsTask,这个RteEvent被映射到它应该在这里被引用。

RteUsedOsEventRef

如果一个OsEvent被用来激活OsTask,这个RteEvent被映射到它应该在这里被引用。

RteUsedOsSchTblExpiryPointRef

如果OsScheduleTableExpiryPoint被用来激活OsTask,那么可以这样做这里应该引用RteEvent映射到它。

RteVirtuallyMappedToTaskRef

对OsTask的可选引用,此RteEvent的激活应在何处进行评估。可运行实体的实际执行将在RteMappedToTaskRef引用的OsTask中发生。

RteExclusiveArea Implementation

指定用于此独占区域的数据一致性的实现。

RteExclusiveAreaImplMechanism

用于指定专属区域的实现机制。

RteExclusiveAreaOsResourceRef

可选的OsResource引用将RteExclusiveAreaImplMechanism配置为OS_RESOURCE用于这个独占区域。

RteExclusiveAreaRef

专属区域引用。

RteExclusiveAreaResponsibleRipsPluginRef

对RTE配置容器的可选引用实现插件实现排他性区域。如果RteExclusiveAreaImplMechanism被配置为这个排他性区域的RTE_PLUGIN。

RteExternalTriggerConfig

定义外部触发器事件的配置软件组件通信。

RteInternalTriggerConfig

定义软件组件的可运行间触发的配置。

RteSwcTriggerSourceRef

引用相关组件实例的pPortPrototype中的触发器实例。引用的触发器实例必须与拥有该参数配置的RteSwComponentInstance属于相同的软件组件实例。

RteTriggerSourceQueueLength

触发器源端的触发器队列的长度。队列由RTE实现。大于或等于1的值请求队列行为。设置RteTriggerSourceQueueLength to 0请求触发器通信的无队列实现。如果没有配置为触发器的RteTriggerSourceQueueLength发射器默认值0也适用。

RteSwcTriggerSourceRef

引用相关组件实例的内部触发点。引用的InternalTriggeringPoint必须属于与拥有该参数配置的RteSwComponentInstance相同的软件组件实例。

RteModeMachine InstanceConfig

定义分配的RTE配置模式机器实例。

RteModeMachineQueueLength

触发器源端的模式机实例队列的长度。如果没有为模式机实例配置rtemodemacheuelength,则在ModeSwitchSenderComSpec。queueLength适用。

RteModeMachineInstanceResponsibleRipsPluginRef

对RTE配置容器的可选引用实现插件实现对模式机实例的保护。

RteSwcModeManagerRef

在相关组件实例提供的PortPrototype (AbstractProvidedPortPrototype)中引用modeationgroupprototype实例。引用的modedeclaration ationgroupprototype实例必须与拥有此参数的RteSwComponentInstance配置。

RteNvRamAllocation

AtomicSwComponentType的NVRAMMapping / NVRAM和NvM模块配置。

RteNvmRamBlockLocationSymbol

这是链接器对象的名称,其中NVRam块将由Nvm镜像。该符号将解析为参数“NvmRamBlockDataAddress”“NvmBlockDescriptor”。

RteNvmRomBlockLocationSymbol

这是链接器对象的名称,Nvm将在其中访问NVRom块。该符号将解析为参数“NvmRomBlockDataAddress”“NvmBlockDescriptor”。

RteNvmBlockRef

引用用于存储NVRAMMapping信息的NvM块。

RteSwNvBlockDescriptorRef

在RTE需要调用时引用NvBlockDescriptor直接调用NvM(例如,用于supportDirtyFlag特性、stoclic特性、用于NV数据管理的服务器调用或基于模式切换的NvM服务调用)。

RteSwNvRamMappingRef

引用的SwSeriveDependency,该依赖项用于指定NvBlockNeeds。

RteSwComponentType

表示一个SwComponentType作为所有配置参数的基础,这些配置参数影响整个类型而不是特定实例。

RteBypassSupportEnabled

为该软件组件类型启用旁路支持的单个开关。

RteComponentTypeRef

引用AtomicSwComponentType或ParameterSwComponentType。

RteImplementationRef

分配给SwComponentType的实现。

RteComponentType Calibration

RteCalibrationSupportEnabled

启用对指定的校准支持ParameterSwComponentType或AtomicSwComponentType。

RteCalibrationSwAddrMethodRef

参考SwAddrMethod,该方法应启用软件校准支持。

自动配置生成

参考文档

[1] AUTOSAR_SWS_Rte.pdf

[2] AUTOSAR_SRS_Rte.pdf

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大道生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值