BswScheduler
概要
基本软件调度器提供集成基本软件模块的服务所有层的所有模块。因此,基本软件调度器提供了以下功能:
将基本的软件模块实现嵌入到AUTOSAR操作系统中
触发BswSchedulableEntitys的基本软件模块
为基本软件模块应用数据一致性机制
集成工程师的任务是应用给定的方法(AUTOSAR操作系统)来装配在项目特定的上下文中以定义良好且有效的方式使用BSW模块。这也意味着BSW调度器只使用AUTOSAR操作系统。
RTE可以分为两个子部分: 软件组件之间的通信和软件组件的调度。
基础软件调度器与RTE的调度部分交叉,它是由RTE生成器与RTE一起生成,文档只讨论BSW Scheduler的配置内容。
根据ECU的复杂性和不同软件供应商的合作模式,可能需要单独集成基本软件而不需要软件组件。因此,RTE生成器必须支持基本软件的生成调度程序没有软件组件相关的RTE片段。基本的软件调度程序生成阶段只适用于不包含任何软件组件的软件构建。
为了能够生成基础软件模块的链接头文件以及基本软件的定义和声明与单个基本软件模块实例相关的Scheduler API,需要提供下列输入,在“基本软件调度器契约阶段”生成。
基本的软件模块说明和说明
基本的软件模块和内部行为
基本软件模块实现
在基本软件调度器生成阶段,RTE生成器将生成没有RTE功能的基本软件调度器。主要包含:逻辑概念的映射(例如,可运行实体、BSW可调度实体)到技术架构(即AUTOSAR OS);将挂起中断(在基本软件中)与通知解耦的AUTOSAR软件组件;解决的数据一致性问题。
模块配置
ETAS ISOLAR中主要配置或修改内容如下:
RteBswModuleInstance
RteBswImplementationRef
对配置了Rte /SchM的BswImplementation的引用。
RteBswModuleConfigurationRef
引用为此提供的ECU配置值
BswImplementation。
RteBswGeneral
RteSchMVersionInfoApi
允许生成SchM_GetVersionInfo() API。
RteBswExclusiveAreaImpl
RteExclusiveAreaImplMechanism
用于指定独占区域的实现机制。
RteBswExclusiveAreaOsResourceRef
可选的OsResource引用将RteExclusiveAreaImplMechanism配置为OS_RESOURCE用于这个独占区域。
RteBswExclusiveAreaOsSpinlockRef
可选引用一个OsSpinlock将RteExclusiveAreaImplMechanism配置为OS_SPINLOCK用于这个独占区域。
RteBswExclusiveAreaRef
指应指定实施机制的独占区域。
RteBswExclusiveAreaResponsibleRipsPluginRef
对RTE配置容器的可选引用实现插件实现排他性区域。如果RteExclusiveAreaImplMechanism被配置为这个排他性区域的RTE_PLUGIN。
RteBswEventToTaskMapping
RteBswActivationOffset
激活偏移时间(秒)
RteBswImmediateRestart
当rtebswimmediate属性被设置为true时如果BswSchedulableEntitiy在已经启动时被此BswEvent激活,则在终止后应立即重新启动。
RteBswPositionInTask
每个映射到OsTask的BswSchedulableEntity激活在任务执行中都有一个特定的位置。对于周期性激活,这是执行的顺序。对于事件驱动程序激活,这是实际执行的BswSchedulableEntity的计算顺序。对于直接函数调用,当同一个RTE API调用多个ExecutableEntities时,需要使用此参数来提供事件的顺序。
RteBswServerQueueLength
指定服务器调用序列化的队列长度。
RteOsSchedulePoint
通过在ExecutableEntity执行后显式调用Os schedule服务来引入调度点。如果可执行实体的执行被跳过,Rte生成器可以将对操作系统调度的几个连续调用优化为一个调用。
RteBswEventPredecessorSyncPointRef
rtebsweventorsyncpointref可以在由同一个事件源触发的BswEvents被映射到不同核上不同分区的任务时,提供一个跨核的同步。
所有引用都必须到达同步点在执行所有相关任务之前,将继续执行BswEvents。被映射的BswEvent激活的BswModuleEntity在传递同步点之后执行。
RteBswEventRef
对BswEvent的引用。
RteBswEventSuccessorSyncPointRef
RteBswEventSuccessorSyncPointRef对于在BswEvents由相同的事件源触发,但是被映射到属于不同核上不同分区的任务时,提供跨内核的同步。
所有引用都必须到达同步点在执行所有相关任务之前,将继续执行BswEvents。对于RteBswEventSuccessorSyncPointRef,由映射的BswEvent激活的BswModuleEntity在进入同步点之前执行。
RteBswMappedToTaskRef
对应BswSchedulableEntity中RteBswEventRef被映射到TASK。如果没有指定对OsTask的引用,则由此BswEvent激活的BswSchedulableEntity将被调用执行。
RteBswUsedOsAlarmRef
如果一个OsAlarm被用来激活OsTask,这个BswEvent被映射到它应该在这里被引用。
RteBswUsedOsEventRef
如果一个OsEvent被用来激活OsTask,这个BswEvent被映射到它应该在这里被引用。
RteBswUsedOsSchTblExpiryPointRef
如果OsScheduleTableExpiryPoint被用来激活OsTask,映射到它的BswEvent将在这里引用。
RteRipsFillRoutineRef
引用由RTE实现的缓冲区填充例程实现插件。方法之前直接调用此例程ExecutableEntity已启动。
RteRipsFlushRoutineRef
引用由RTE实现的缓冲区刷新例程实现插件。方法后直接调用此例程ExecutableEntity已经终止。
RteBswRequiredTriggerConnection
RteBswReleasedTriggerModInstRef
引用RteBswModuleInstance配置容器,该容器标识BSW模块的实例。使用的RteBswReleasedTriggerRef明确地标识触发器实例。
RteBswReleasedTriggerRef
引用被释放的触发器,这个被释放的触发器将被连接到这个被释放的触发器上。
RteBswRequiredTriggerRef
引用一个需要连接到释放触发器的触发。
RteBswRequiredModeGroupConnection
RteBswProvidedModeGrpModInstRef
引用RteBswModuleInstance配置容器,该容器标识BSW模块的实例。使用的rtebswvidedmodegroupref明确地标识ModeDeclarationGroupPrototype实例。
RteBswRequiredModeGroupRef
引用需要连接到提供的modegroupprototype。
RteModeDeclarationMappingSetRef
定义了有效的modeationmappingset,如果提供了modeationgroupprototype和required modeationgroupprototype不兼容。
RteBswRequiredClientServerConnection
RteBswProvidedClientServerEntryModInstRef
引用RteBswModuleInstance配置容器,该容器标识BSW模块的实例。使用的rtebswvidedclientserverentryref明确地标识BswModuleClientServerEntry实例。
RteBswProvidedClientServerEntryRef
引用providedClientServerEntry。
RteBswRequiredClientServerEntryRef
引用requiredClientServerEntry
RteBswRequiredSenderReceiverConnection
RteBswProvidedDataModInstRef
引用RteBswModuleInstance配置容器,该容器标识BSW模块的实例。使用的rtebswvidedvariabledataprototyperef明确标识VariableDataPrototype实例。
RteBswProvidedVariableDataPrototypeRef
引用providedData
RteBswRequiredVariableDataPrototypeRef
引用requiredData
RteBswModeMachineInstanceConfig
无
RteBswExternalTriggerConfig
RteBswTriggerSourceQueueLength
触发器源端的触发器队列的长度。
队列由RTE实现。大于或等于1的值请求队列行为。设置RteTriggerSourceQueueLength to 0请求触发器通信的无队列实现。
RteBswTriggerSourceRef
在相关BSW模块实例的角色releasedTrigger中引用触发器实例。
引用的触发器必须与拥有该参数配置的RteBswModuleInstance属于相同的BSW模块实例。
RteBswInternalTriggerConfig
RteBswTriggerSourceRef
引用相关BSW模块实例的BswInternalTriggeringPoint。
引用的BswInternalTriggeringPoint必须属于相同的将BSW模块实例作为拥有此参数的RteBswModuleInstance进行配置。
自动配置生成
无
参考文档
[1] AUTOSAR_SWS_Rte.pdf
[2] RTA-RTE User Guide.pdf
[3] AUTOSAR_SRS_Rte.pdf