文章目录
前言
RTE中的Compostion内部的SWC之间的连接使用Assembly Connector进行连接。这样的连接一般都是一个SWC的Pport对应另一个SWC的Rport。而Autosar软件中往往不只一个Composition(一般可以以核的数量作为Composition的数量)。此时我们考虑另外一种情况,Composition与Composition之前的通信,也是Pport对Rport,而SWC到Composition之间的port实际是同一种类型,此时,Delegation Connector的作用就体现出来了。
Assembly和Delegation的含义
在RTE标准文档中,介绍如下:
For the connections inside a composition the AssemblySwConnector is used, while the Delegation-SwConnector is used to connect ports from the inside of a composition to the outside.对于composition内部的连接,使用AssemblySwConnector,而使用DelegationSwConnector将composition内部的端口连接到外部。
Delegation一般是Pport到Pport,Rport到Rport,不允许从Pport到Rport,也不允许从Rport到Pport,标准中描述如下:
The RTE generator shall reject the configuration violating the [constr_1032], so when an r-port is connected to a p-port or a p-port is connected to an r-port with a DelegationSwConnector(SRS_Rte_00018)
Delegation的使用
当需要组件之前进行数据传递时,组件内的SWC上的Port到组件外部就需要使用DelegationSwConnector
以下示例在组件上创建Delegation:
对于Open的Port,可以使用delega open port功能将SWC上的port传递给composition
勾选所需要的port,点击ok即可
此处我们选择了一个Rport,可以看到对应的Composition出现了一个相对应的Rport
且自动创建了一个DelegationSwConnector
同样的方式,在对应的Pport的SWC和Composition进行DelegationSwConnector的创建
此时Delegation的任务就完成了
Assembly的使用
一般常用的就是Composition内的SWC的port间的连接
手动建立ASC
点击Connect之后,ASC创建如下:
除了SWC之前使用ASC,在Composition与Composition之间也是使用ASC进行数据传递
通过这种方式,即可把Composition内部SWC的port传递给另外一个Composition中的SWC了。
在Connect之后,需要对ECU进行提取,然后生成RTE才会在代码中体现连接关系。
总结
在多Composition(多核)的工程实践中,Delegation的使用场景还是很多的。针对于跨核port的通信,会生成对应的IOC保护。