RTE(Run-Time Environment),是AutoSAR架构的核心,是AUTOSAR虚拟功能总线(Virtual Function Bus,VFB)接口的实现。
RTE可以分为两个子部分:
RTE的主要目的是使SWC与ECU的映射无关,为Application和BSW之间提供通信服务的中间层。
01—软件组件(SWC)
AutoSAR软件组件SWC可以分为以下3个大的类别:
原子组件,无法再分。
多个SWC的集合。
如下图所示:
02—端口(Ports)
端口(Ports)是属于SWC的一部分,用于SWC之间的通信。
可以分为2种:
基于数据的端口,传递数据。
Sender:提供数据
Receiver:请求数据
Sender和Receiver之间的数据传输,可以有1:n或者n:1的情况,即一个Sender可以发送数据给多个Receiver,也可以是多个Sender发送数据给同一个Receiver。
基于操作的端口,可以理解为函数接口的调用。
Client:请求服务
Server:提供服务
Client和Server之间的操作调用,只有n:1而没有1:n的情况,即可以有多个Client请求一个Server,没有一个Client请求多个Server的。
03—连接器(Connector)
连接器可以理解为接口,即SWC之间,SWC与Composition之间的接口,分为:
SWC之间的连接器。
Composition与外部模块之间的接口。
04—运行实体(Runnables)
Runnables在OS的任务(task)或者2类中断(ISR2)中执行,它们的执行是由RTE Event触发的。一个SWC可提供一个或多个Runnables,Runnables就是一段可执行代码(函数)。
1)对于Sender/Receiver之间的通信,RTE支持两种模式的通信:
SWC使用显式RTE API来发送和接收数据。
Explicit Read:
Explicit Read是直接访问数据地址,会跟着数据的变化而变化。
Explicit Write:
此处假设Runnable写操作时没有其他Runnable写这块数据。
RTE在Runnable被调用之前先自动读取数据,并且在Runnable终止后自动写入(另一组)数据,Runnable不会主动发起数据的传输。
Implicit Read:
进入Runnable之前RTE为数据建立副本,Runnable运行结束后,RTE会把副本数据拷贝到数据实际地址中,Runnable运行过程中只操作副本。
Implicit Write:
如果一个Runnable运行期间对同一个数据进行了多次写访问,只会把Runnable运行期间的最后一个数值写回数据地址中。
2)对于Client/Server之间的通信,RTE也支持两种模式的通信:
Runnable Client端会因为等待Server端的响应而被阻塞。
非阻塞。
05—SWC内部通信
为保证同一SWC内部,不同task上运行的Runnable通信数据的一致性,有两种方法:
仅变量被保护,使用接口Rte_IrWrite_xxx。
整个专有区域将会被保护。
接口Rte_Enter_xxx放在被保护区域的开始处;
接口Rte_Exit_xxx放在被保护区域的结束处。
06—总结
RTE配置将Runnables对应到OS的task中,通过RTE事件来触发task,以实现SWC之间的通信。这种做法抽象了OS,防止SWC直接访问OS。
END
参考文献:
AUTOSAR_CP_SWS_RTE.pdf
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有