重新认识AUTOSAR Interface

文章详细描述了三种主要的IT接口——dataelement/C/S接口、modeswitchinterface和Clientserverinterface,它们的核心在于用户定义的数据元素、操作和模式组。文章介绍了如何创建和使用这些接口进行模块间的数据交换,包括数据类型映射和通信流程示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

核心:

  • S/R interface: data element
  • C/S interface: operation (with arguement)
  • M/S interface: mode group (macro) 

其实 data element,operation,mode group 才是核心,他们可以看作是用户自定义的变量类型。当定义了对应的interface以后,他们才实例化【为全局变量】,各个module可以通过该interface去 读/写 这些个data element,operation,mode group

Mode switch interface:

mode switch interface的架构:

  • mode switch interface

    • mode group
      • mode_1
      • mode_2

【这里的mode_1/ mode_2 可以看作是enum(就很像是state machine),但之后仍需声明对应的implementation data type】 

 

mode switch interface的创建流程:

1 新建mode group,并声明下面有哪几种mode

在desired arxml 文件中右键创建mode group

2 创建mode switch interface,并把该mode group绑定在该interface下面

在desired arxml 文件中右键打开data dictronary 界面,创建mode switch interface,可以看到会实例化一个modegroup_hao 类型的(全局变量)ModeDeclarationGroupPrototype_Hao

至此: 任何module都可以通过声明一个port,通过该mode switch interface来对该ModeDeclarationGroupPrototype_Hao 赋值为mode_1 / mode_2,或者读取当前ModeDeclarationGroupPrototype_Hao 的值是 mode_1 / mode_2

3 DataType Mapping 里面 声明该 mode group 下面的mode 是什么implementation data type

Client server interface:

Client server interface的架构:

  • Client server interface
    • operation_1
    • operation_2

【这里的operation可以看作是一个macro/flag,所以之后不需要声明implementation data type】

Client server interface的创建流程:

1 直接创建Client server interface,并申明下面有几个operation即可

至此: 任何module都可以通过声明一个port,通过该client server interface设定指定runnable由该operation【event】触发运行,或者触发产生该operation【event】

Sender receiver interface:

Sender receiver interface的架构:

  • Sender receiver interface
    • data element_1
    • data element_2

【这里的data element_1/ data element_2 是靠ADT定义的全局变量,所以之后需声明对应的implementation data type】 

Sender receiver interface的创建流程:

1 创建需要使用的application data type

直接创建application data type即可(需要创建compuMethod吗)

2 创建Sender receiver interface,并声明data element

上一步的application data type在这里用上了,而且产生了实例化的DataElements_VariableDataPrototype_0 和 DataElements_VariableDataPrototype_1

至此: 任何module都可以通过声明一个port,通过该 sender receiver interface对 DataElements_VariableDataPrototype_0 /DataElements_VariableDataPrototype_1 进行读写

3 DataType Mapping 里面 声明application data type 对应什么implementation data type

举例:

当BswM想读取 DCM的 EcuReset 的mode,然后传递/通知给SWC的时候,具体流程是:

1 当DCM模块里面配置了相应的0x11 EcuReset service之后,就会在DCM_BSWMD.arxml文件内自动生成对应mode group数据类型,并且在DCM_Cfg_SWCD.arxml生成相应的mode switch interface,以及实例化的ModeGroupPrototype_DcmEcuReset,以及相应的Pport

而且DCM的mainfunction里面会去对ModeGroupPrototype_DcmEcuReset进行赋值

【也就是说,DCM模块自己在通过ModeSwitchPoint不断的更新ModeGroupPrototype_DcmEcuReset这个全局变量,别的模块想得知该消息的话,通过该port去查询即可】

 

2 因为DCM在DCM_Cfg_SWCD.arxml已经生成了相应的mode switch interface,所以BswM直接查询该实例化的ModeGroupPrototype_DcmEcuReset的值即可

 

3 SWC是最终的接收端,于是SWC需要自己定义所需的mode group,然后定义相应的mode switch interface。然后BswM先创建一个与该mode switch interface下面mode group所对应的port,然后在action list 里面去对该mode switch interface赋值即可

【从上面的截图可以看出来,BswM对所有的(BSW和SWC)mode group prototype都有直接读取的权力(会自动生成相应的port和interface,user不用管),唯一要做的就是要告诉BswM输出的action 是 switch port 还是 request port】


 

### Simulink与AUTOSAR接口配置及使用 #### 配置方法 在Simulink环境中实现与AUTOSAR标准的对接,主要通过MATLAB工具箱中的特定功能来完成。为了使模型能够遵循AUTOSAR规范,需安装并激活相应的支持包[^1]。 对于具体配置过程而言,在创建新的Simulink模型时可以选择基于AUTOSAR的应用模板作为起点。这一步骤简化了后续操作流程,并自动设置了必要的参数以满足AUTOSAR的要求。当选择了合适的模板之后,可以利用Model Configuration Parameters对话框进一步调整设置项,比如定义软件组件(SWC)、端口属性以及信号映射关系等重要细节[^2]。 ```matlab % 设置AUTOSAR相关参数示例代码 set_param(gcs, 'SystemTargetFile', 'ert.tlc'); set_param(gcs, 'TemplateMakefile', 'grt_default_tmf'); set_param(gcs, 'GenCodeOnly', 'on'); set_param(gcs, 'CustomPayloadTransport','off'); % 关闭自定义传输层选项 ``` #### 使用教程 官方提供了详细的指南帮助开发者掌握如何有效地运用这些特性。通常情况下,建议先阅读《Getting Started with AUTOSAR》手册,该资源涵盖了从基础概念介绍到高级特性的全面讲解。此外,《Generate C Code from MATLAB Function Blocks Using Embedded Coder® Support Package for AUTOSAR》一文中也包含了关于生成符合AUTOSAR标准的C代码的具体步骤说明。 #### 兼容性问题 考虑到不同版本间的差异可能带来的影响,确保所使用的MathWorks产品组合——即Simulink及其附加件——同目标ECU平台上的AUTOSAR实施保持一致非常重要。如果遇到不兼容的情况,则应查阅发行说明或技术支持文档寻找解决方案;有时也可能需要更新至最新版的产品以便获得更好的互操性保障。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值