RTE
概要
实时运行环境(RTE)是AUTOSAR ECU体系结构的核心。RTE是AUTOSAR接口的实现(对于特定的ECU)虚拟函数总线(VFB)。RTE提供基础设施服务,使AUTOSAR软件组件之间能够进行通信,并充当AUTOSAR软件组件访问包括操作系统和通信服务在内的基本软件模块的手段。
RTE包含系统基础结构的两个变量元素从不同的组件映射到ecu,以及标准化的RTE服务。
RTE在逻辑上可以分为两个子部分:
- 软件组件之间的通信
- 软件组件的调度
为了完整地描述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