设计需求
用个实例来讲解会比较好理解,我们要设计这个车灯控制部件,需求是这样的,靠两个门和一个开关控制最后的灯,左门右门当中只要有一个门打开,Door Contact就会把信号传给Dimmer,同时根据开关的状态控制灯光的开关和亮度。关上所有的门,灯就会灭。
需求分析
下图每一个灰色的框就是一个SWC(software components),不可再分的。
Port是SWC之间的交互端口,Port之间的链接叫Connect,Port也能提供或者获取到BSW里面的模块。
每个SWC实际上是通过Virtual Function Bus进行连接和交互的,是所有Connect的集合。
进一步看具体分布到不同的ECU当中,这里分了两个ECU。一个是Roof ECU,一个是Front ECU。RTE是Virtual Function Bus的一个典型代表。
左右门开关的信号通过IO传输到左门和右门两个SWC,然后通过RTE传递给Door Contact,在通过Bus传递给Dimmer。同时开关信号通过本地IO传输给开关模块,再通过RTE传递给Dimmer,两边的信号集中到Dimmer后通过RTE去控制灯光模块,灯光模块的信号再通过Bus传输出去。
设计概念
处于框架位置
Application在整个Autosar架构的最上层,也就是Application Layer下面是RTE。
原子级SWC
是不可再分的
应用型:有算法功能(Dimmer、Door Contact)
传感器/执行机构:纯输入输入数据(Switch、Light、Left Door、Right Door)
组合级SWC
实际上是原子级SWC的功能组合,不会生成代码,会生成代码的还是原子级SWC。
端口
Sender和Receiver:传输数据元素,相当于数据处理。
Client和Server:根据参数进行操作,相当于函数调用。
还有种特别的端口:
Sender/Receiver双向端口:既可以发也可以收。
Sender和Receiver在我们实例当中是这么用的,Dimmer将使用数据Light_Dimm通过Sender端口发出到RTE,Light使用Receiver端口从RTE获取到数据Light_Dimm。Dimmer获取的DoorOpen还可以mapping到总线上的DoorLeft_Open信号。还可以支持多种数据类型,整形、浮点型、数组、结构体等。譬如它生成给到Dimmer获取的接口函数就是Rte_Read_Door_DoorOpen(),格式为Rte_方向(write或者read)_端口名(提供SWC)_数据/信号名。可以一对一、一对多、多对一。
Client和Server
可以一对一、多对一。可以同步和异步处理。同步就是Server在处理的时候Client一直等着,等到Server提供到为止。异步就是Client自己做自己的事情,等到Server处理完了能提供的时候就获取。
Runnable
可执行实体,描述内部行为,里面是真有点事情干才行,相当于C函数。
由RTE来触发,一收到数据就调用。
整体框图
每个深色灰框是组合级SWC,浅色灰框是原子级SWC。
SA_Left每隔20ms调度一次,mapping到Task A,对应有个OS application。
SA_Contact是RTE触发的,mapping到另一个Task A。
Dimmer里面有两个Runnable,AP_Init是Init模式触发的,AP_Dim则是RTE触发的。
端口之间需要定义数据元素data element也就是DoorOpen。
标签:RTE,Autosar,Door,SWC,端口,Server,Application,Dimmer,设计 From: https://blog.csdn.net/qiu421/article/details/136972777