>>>点我返回《AUTOSAR专栏》目录
在APP层面可以分成下面这些SWC
这是一个典型的SWC级联的工作场景,那SWC和SWC之间需要通信,通信需要用到端口Ports。
AUTOSAR中定义了两种类型的端口,后面详细讲述这两种端口:
Sender/Receiver
Client/Server
还有一种分法:
需求端口,Require Ports,R-Ports,有需求的端口,当要接收或要求数据或期望来自其他实体的数据时,使用此类型的端口。
提供端口,Provide Ports,P-Ports,提供服务的端口,当要传输数据或SWC是向其他实体提供某些服务的提供者时,使用此类型的端口。
需求/提供端口,Provide Require Ports,PR-Ports,这只在AUTOSAR4.0以后才有。
Sender/Receiver通过RTE来传输数据(对数据一致性做了处理,比如同时访问这种问题),可以包含多种数据类型,
简单数据类型(int、float)
复杂数据类型(arry、record)
通信方式可以是:1:n(1对多,1个模块发送,多个模块接收)或者n:1(多对1多个模块发送,1个模块接收)
实际代码中如下:
//Receiver
Rte_Read_Door_DoorOpen()
//Sender
Rte_Write_Door_DoorOpen()
模块之前相互调用,Client调用Server,比如A SWC调用B AWC,A就具有一个客户端Client,B具有个服务端Server,如下图:
Client/Server支持有以下特点:
支持同步和异步调用,同步就是相当于B模块的函数嵌入到A模块函数后面调用,相当于A等B运行完,A再运行。异步就是A模块调用B模块,但是A模块自己本身还是可以继续运行的,相当于A和B同时开工,然后B运行完后,把结果返回给A。
一个SWC调用另外一个SWC,代码接口如下
Rte_Call_State_OpenDoor()
>>>点我返回《AUTOSAR专栏》目录
扫描下方的二维码关注“汽车软件攻城狮”可第一时间获取更新!