Autosar4.4:软件组件模板-基础概念(3/4)

为了对相关的元模型元素进行简洁的描述,本章集中讨论和解释了概念方面的内容。

阅读本章并不是理解后面章节的先决条件。

它只是为本文档其他各章中使用的概念方面的详细描述提供了一个中心位置。

基础概念分8节:

1、测量和校准

2、运行时和数据一致性方面

3、软件组件模板中的变量处理

4、组成组件类型的通信规范

5、PRPortPrototype

6、假装联网

7、可变大小的数组数据类型

8、结构中的可选元素

 

基础概念分四部分讲述,本章讲述:

4、组成组件类型的通信规范

5、PRPortPrototype

6、假装联网

 

4、组成组件类型的通信规范

由CompositionSwComponentTypes定义的ComSpec:
应当可以将ComSpecs附加到CompositionSwComponentTypes拥有的PortPrototypes。

基本原理

附加到AtomicSwComponentType拥有的PortPrototype的ComSpecs对RTE的生成有直接影响。 另一方面,RTE生成器不考虑CompositionSwComponentTypes的存在。

但是,在某些情况下,CompositionSwComponentType拥有的附加到PortPrototype的ComSpec的定义确实有意义。

也就是说,如果OEM要向供应商提交CompositionSwComponentType的定义以添加更多详细信息并实现行为,则OEM可能需要指出,从OEM的角度来看,发送方initValues和接收方initValues适用于以下元素: PortInterfaces用于键入委托PortPrototypes。

这个想法是供应商接管附加在委托PortPrototypes上的initValues,并将它们复制到CompositionSwComponentType的SwComponentPrototypes拥有的PortPrototypes。

根据所有权考虑使用RPortComSpec或PPortComSpec

RTE生成器应采用AtomicSwComponentTypes或ParameterSwComponentType拥有的PortPrototypes的RPortComSpec或PPortComSpec的属性,并忽略附加到CompositionSwComponentType拥有的PortPrototypes的RPortComSpec或PPortComSpec的属性。

因此,委托PortPrototype的initValues将仅用作模板,用于详细说明与委托PortPrototypes连接的PortPrototype。
不需要委托的PortPrototype的initValues和通过委托SWConnector连接的PortPrototype的initValues匹配。

尽管在很多情况下这当然是有意义的,但最终还是由供应商来决定在CompositionSwComponentType内部适用的特定initValues。
另一方面,在任何情况下都要求在CompositionSwComponentType的表面上定义的initValues与CompositionSwComponentType的内部保持一致的要求可能有效地阻止了现有AtomicSwComponentTypes的重用。

请注意,在CompositionSwComponentType上下文中定义ComSpec的能力意味着应该可以定义PortInterface中使用的ApplicationDataTypes与其对应的ImplementationDataTypes的映射。

为此,CompositionSwComponentType在角色DataTypeMapping中拥有一个DataTypeMappingSet,在角色ConstantValueMapping中拥有一个ConstantSpecificationMappingSet。

CompositionSwComponentType的数据类型映射的规范

 

5、PRPortPrototype

在某些情况下,SwComponentTypes需要读取和写入相同的数据。

该用例最突出的示例之一是NvBlockSwComponentType,它实际上已准备好并写入NvRAM块。

由于无法在支持读和写语义的PortPrototype中组合读写语义,因此必须实现一些变通方法,这些解决方法会占用一定的内存和处理时间。

用例1

如果没有定义组合的读写语义的能力,则需要RPortPrototype和PPortPrototype的定义才能读写适用的数据。

使用调用需求关系来实现端口

从技术上讲,这种读取和写入访问与NVRAM块中的相同数据项有关。 这需要NvBlockSwComponentType和ApplicationSwComponentType之间的PortPrototypes保持一致连接,以及NvBlockSwComponentType和RamBlock的相关元素的相应RPortPrototype和PPortPrototype的一致映射

用例2

SwComponentType可能需要消耗其产生的相同数据。 如果实现此目的的唯一方法是将PPortPrototype连接到相同SwComponentType的RPortPrototype,则SwComponentType的创建者将无法强制执行此连接,因为它是在CompositionSwComponentType上下文中以更高的抽象级别创建的。

换句话说,不可能完全指定其他自包含的SwComponentType的语义。

使用缓冲区的方式实现端口通信

这意味着在最佳情况下,仅需要一个数据缓冲区。 但是,根据RunnableEntity到OS任务的映射,RTE可能需要分配其他缓冲区以完全实现隐式通信模式。

作为替代方案,ApplicationSwComponentType可以利用可相互运行的变量,但是不幸的是,这会抑制RTE中的任何优化,并会消耗额外的RAM。 与以前的方法相比,至少需要两个缓冲区。

用例3

在这种情况下,几个ApplicationSwComponentTypes遍历相同的大数据集。 这意味着,每个ApplicationSwComponentType都会实现应用于同一数据的复杂数据处理算法的多个步骤中的一个。

每个SWC处理数据的一部分实现串行实现输入输出

例如,这种情况可能适用于相机应用程序中的视频信号处理。 通常,此类应用程序不会分布在多个ECU上。

很明显,在这种情况下,需要在RTE中分配几个缓冲区才能实现ApplicationSwComponentTypes之间的各个连接。
在大多数情况下,必须在特定时间点以专用顺序执行处理。

解决方案

上述用例的解决方案是能够定义可以读取和写入相同数据的PortPrototype。 这既解决了上述资源消耗问题,又解决了必须将多个PortPrototypes定义为同一数据项的出口的问题。

6、假装联网

假装联网的作用

假装联网是通过以称为“Pretended Networking”的模式切换ECU来降低ECU能耗的功能。在这种模式下,通信网络上的通信会减少,ECU可以进入省电模式。

当需要通过通信网络进行通信时,应通过将模式更改为标准模式的请求来保留“假装联网”模式。

配置选项编码为ModeDeclaration

假装网络的不同配置选项的标识应编码到ModeDeclarationGroup内部的专用ModeDeclarations的定义中。

例如,假设假装网络的实现支持三个配置选项:

•PRETENDED_NW_MODE_OFF

•PRETENDED_NW_MODE_ONE

•PRETENDED_NW_MODE_TWO

在此示例情况下,应定义一个由三个ModeDeclaration组成的ModeDeclarationGroup,其中每个ModeDeclaration均应代表上述配置选项之一。 ModeDeclaration的短名称应从上述列表中获取。

请求更改假装联网模式

一个需要能够请求更改“假装联网”操作模式的SwComponentType应提供一个由SenderReceiverInterface键入的PPortPrototype,以(朝BswM)请求更改“伪装网络”模式。

定义适用的SenderReceiverInterface的特定属性超出了本文的范围。可以在BswM的规范中找到此

pecificSenderReceiverInterface的详细信息。

对假装联网模式的更改做出反应

需要能够对“假装联网”模式的更改做出反应的SwComponentType应提供一个由ModeSwitchInterface键入的RPortPrototype,以对“伪装网络”模式的更改(由BswM 发起)做出反应。
定义适用的ModeSwitchInterface的特定属性超出了本文的范围。可以在BswM的规范中找到此特定ModeSwitchInterface的详细信息。

 

 

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值