S/R、C/S是什么?
S/R是sender receiver的缩写,C/S是client server的缩写,这是AUTOSAR在定义接口模板里比较常用的两种类型。当然我们还有用于多个软件组件之间标定变量共享的calibration port interface,这里就不做介绍了。通信应发生于组件之间、应用软件和基础软件之间。主动请求或者发送数据的就是Client端/sender端;被动完成服务或被动提供数据接受数据的就是receiver或者server端。
C/S和S/R最大的不同就在于C/S通过operation prototye实现交互,而S/R通过Data Element Prototypes进行交互。
从生成代码来看:C/S采用的是函数的方式传递数据;S/R采用的是全局变量的方式传递数据。
Port interface C/S 中的operation Prototypes是什么,用来做什么?
在swc和swc之间 每一个operation都是一个函数,这个函数在Server端实现,在client端调用。
在swc和service之间每一个operation对应一个宏,指向runnable。
Port interface S/R 中的Data Element Prototypes是什么,用来做什么?
Data Element是一个全局变量,通过Rte_Write_<name>,Rte_Read_<name>对全局变量进行读写。
可以支持 1:n (i.e. one sender, multiple receivers) or n:1 (i.e. many senders, one receiver)
Interface在定data element需要指定类型 ,由data types完成。
data types 中的Application data types和implementation data types有什么区别呢?
Application data types 提供给应用层使用,是一种功能定义,并不会生成实质代码,需要配合Implementation data type使用。
Implementation data type 则引用了实际上的数据类型,这个数据类型为 base type,还可以设置相应的设计方法和限制条件。
Application data type 在autosar中是可选的,可以直接使用implementation data type。如果使用了application data type 需要增加application data type 和implementation data type之间的映射,这样应用层才有了确切的数据类型。Data type 还可以定义数据单位(unit),数据计算方法(compu method)、数据约束(data constraint),library其实是为了创建不同的package。