如何在项目中创建一个Cdd SWC访问MCAL模块

如何在RTA-CAR项目中创建一个Cdd SWC以访问MCAL模块

介绍
这个示例工作流程描述了如何在RTA-CAR项目中创建一个基础的Cdd。创建和最初配置RTA-CAR项目所需的步骤在本用户指南的其他工作流程中有所覆盖,因此在这个工作流程中,我们采用一个现有的基于VRTA_Standard Starter Kit for RTA-CAR的单核项目,并将其扩展以包含一个Cdd。

条件
下面的工作流程设计为独立使用,它没有任何先决条件,除了导入Starter Kit之外。假设您已经熟悉如何使用ISOLAR-AB创建和配置AUTOSAR项目。如果您尚未这样做,我们建议您回顾(并最好通过)工作流程01、02和03,以更好地理解ISOLAR-AB以及创建和配置AUTOSAR项目的工具。

理解AUTOSAR上下文中的Cdd
复杂驱动器(Cdd)是一个软件实体,不是由AUTOSAR标准化的,可以通过AUTOSAR接口和/或基本软件模块API进行访问或被访问。一个Cdd可能需要与分层软件架构的模块进行接口,分层软件架构的一个模块可能需要与一个Cdd进行接口,一个Cdd可能需要通过Rte与SW-Cs进行接口。项目将由一个应用程序SWC组成,该SWC将与Cdd交换数据。应用程序SWC将有一个接收数据所需的端口和一个传输数据提供的端口。Cdd将是一个Cdd-SWC,其端口与应用程序SWC互补。

工作流程摘要

  1. 创建一个新的接口
  2. 创建一个新的Cdd SWC
  3. 创建新的SWC端口
  4. 创建新的内部行为
  5. 创建一个新的可运行体
  6. 为可运行体添加数据访问点
  7. 为可运行体添加事件
  8. 在MasterSWC中进行相关更改
  9. 将Cdd映射到组合和ECU
  10. 更新ECU提取
  11. 将Cdd可运行体映射到任务
  12. 将Cdd初始化函
<think>好的,我现在需要处理用户关于Simulink中封装为复杂驱动(CDD)并通过BSW服务调用的问题。首先,我得回忆一下自己对这个主题的了解。复杂驱动在AUTOSAR架构中属于BSW的一部分,用于处理那些不适合归入标准驱动模块的特殊功能。用户提到的是在Simulink中如何封装CDD并调用BSW服务,这涉及到Simulink与AUTOSAR的集成。 首先,我应该确认复杂驱动(CDD)的基本概念。CDD允许开发者实现自定义的驱动逻辑,通常用于传感器或执行器的特殊处理,或者当需要直接访问硬件资源时。在AUTOSAR分层架构中,CDD位于微控制器抽象层(MCAL)和ECU抽象层之上,但属于BSW的一部分,所以需要正确配置其接口和服务访问。 接下来,用户的问题涉及如何在Simulink中进行封装。Simulink支持通过AUTOSAR Blockset进行建模,生成符合AUTOSAR标准的代码。封装CDD可能涉及到创建对应的Simulink模块,并配置其作为CDD组件,同时设置与BSW服务的接口。 需要分步骤解释:首先在Simulink中创建模型,配置AUTOSAR属性,定义CDD组件。然后,需要处理BSW服务的调用,可能涉及使用AUTOSAR Service Interface或者直接调用BSW模块提供的操作。这里可能需要使用Simulink中的AUTOSAR Service Interface块,或者通过Client-Server接口配置。 另外,代码生成方面需要确保生成的ARXML和C代码符合CDD的要求,正确引用BSW服务,比如NvM、Dem等模块的服务。可能需要配置存储类,确保数据访问正确映射到BSW服务。 还需要考虑用户可能的困惑点,比如如何将Simulink模块与BSW服务连接,如何处理实时环境中的调用,或者如何验证生成的代码是否正确集成。这时候可能需要提到使用AUTOSAR编译器(如EB tresos、Vector DaVinci)进行配置,以及在Simulink中进行模型验证和代码生成后的测试。 最后,要确保回答结构清晰,分步骤说明,可能包含配置步骤的示例,比如如何在Simulink中设置接口,如何生成ARXML描述文件,以及如何在代码中调用BSW服务。同时,提醒用户注意配置时的常见错误,比如接口不匹配或服务调用权限问题,以及如何通过Simulink的AUTOSAR Dictionary进行检查和调试。 总结下来,回答的结构应该是先介绍CDD和BSW的基本概念,再详细说明在Simulink中的实现步骤,包括建模、接口配置、代码生成,最后给出注意事项和验证方法。确保用户能够按照步骤操作,并理解关键点。</think>在Simulink中封装为复杂驱动(Complex Driver, CDD)并通过基础软件(BSW)服务调用,需遵循以下步骤: --- ### **1. CDD与BSW的概念** - **复杂驱动(CDD)**:用于实现AUTOSAR标准未覆盖的特殊硬件操作(如非标传感器/执行器),直接访问MCAL层或硬件资源。 - **BSW服务**:AUTOSAR基础软件层提供的标准化服务(如存储管理`NvM`、诊断事件管理`Dem`等),需通过接口调用。 --- ### **2. Simulink中封装CDD的步骤** #### **步骤1:创建CDD组件模型** 1. 新建Simulink模型,选择**AUTOSAR Component**模板。 2. 在`AUTOSAR Dictionary`中配置组件类型为`Complex Driver`。 3. 定义端口: - **Require Ports**:调用BSW服务(如`Rte_Call_NvM_ReadBlock`)。 - **Sender/Receiver Ports**:与SWC通信。 - **Calibration Parameters**:配置标定参数(如滤波系数)。 #### **步骤2:集成BSW服务接口** 1. **通过Service Interface调用**: - 添加`AUTOSAR Service Interface`模块(如`NvM_ReadBlock`)。 - 绑定到BSW服务操作,配置参数映射: ```matlab % 示例:配置NvM服务调用 arPort = get_param(gcb, 'Port'); set_param(arPort, 'ServiceName', 'NvM_ReadBlock'); ``` 2. **直接代码调用**(需谨慎): - 使用`C Caller`模块或S-Function直接调用BSW API(需启用`AUTOSAR Support`)。 #### **步骤3:配置代码生成** 1. 设置**System Target File**为`autosar.tlc`。 2. 在`Code Mappings`中分配: - 函数到`Runnable`实体。 - 变量到`PerInstanceMemory`或BSW标定区。 3. 生成ARXML描述文件(包含CDD接口与BSW服务绑定)。 --- ### **3. 关键配置项** - **BSW模块依赖声明**: ```xml <!-- ARXML中声明BSW服务依赖 --> <BSW-MODULE-DEPENDENCY> <SHORT-NAME>NvM</SHORT-NAME> <UUID>...<UUID> </BSW-MODULE-DEPENDENCY> ``` - **RTE配置**:确保`Rte_CDD.c`中生成正确的服务调用桩函数。 --- ### **4. 验证与调试** 1. **模型仿真**:使用`AUTOSAR Test Suite`验证服务调用逻辑。 2. **代码验证**: - 检查生成的`Rte_CDD.h`是否包含BSW服务头文件(如`NvM.h`)。 - 确认生成的代码中服务调用参数匹配(如`NvM_ReadBlock(BlockId, DataPtr)`)。 3. **集成测试**:在目标ECU上验证CDD与BSW的交互时序和资源占用。 --- ### **注意事项** - **权限问题**:CDD可能需访问特权指令(如关闭中断),需在OS配置中分配`EXCLUSIVE_AREA`。 - **实时性**:避免在CDD中调用阻塞式BSW服务(如`Dem_SetEventStatus`可能触发复位)。 - **工具链兼容性**:ARXML需与BSW配置工具(如Vector DaVinci)兼容。 通过以上步骤,可在Simulink中实现CDD开发,并安全调用BSW服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

美好生活丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值