【AUTOSAR】 项目和代码详解(六)----AUTOSAR BswScheduler

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

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

大道生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值