如何在项目中创建一个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初始化函数添加到EcuM驱动器初始化列表
  13. 生成项目
  14. 示例代码

1. 创建一个新的接口
首先右键点击软件,选择“创建接口”→“创建端口接口”→“发送者接收者接口”。将这个新接口命名为"Data Buffer"并放入现有的arxml文件Interfaces.arxml中。接下来双击新创建的接口,并通过首先选择表中的MySRInterface接口然后点击“添加VariableDataPrototype”来创建4个VariableDataPrototypes:

2. 创建一个新的Cdd SWC
现在我们已经创建了所需的接口,我们需要为Cdd创建SWC以与RTE和其他SWC交互。点击软件,选择“创建组件”→“复杂设备驱动器sw组件类型”。在这个指南中,我们将SWC命名为MyCdd,并创建了一个新的AR包/ARXML文件来存储这个(Cdd.arxml)。

3. 创建新的SWC端口
双击新创建的Cdd SWC MyCdd,这将在组件编辑器中打开它。由于我们已经创建了所需的接口,我们现在可以在Cdd SWC中创建端口来使用它。点击RPorts…链接。

4. 创建新的内部行为
要在SWC中创建可运行体,需要一个内部行为容器。点击打开的组件编辑器右上角的绿色’+'图标:

5. 创建一个新的可运行体
类似于应用程序SWC,我们需要创建可运行体来运行我们的Cdd中的代码。在这种情况下,我们需要为设置MCAL中的Pin值创建一个可运行体。

6. 为可运行体添加数据访问点
点击我们创建的新可运行体的数据访问点选项卡,然后按“+访问点…”链接。

7. 为可运行体添加事件
现在,最后对于我们的Cdd,我们需要设置一个事件,这将触发可运行体的执行。在这个例子中,我们将系统配置为在接收到特定的CAN信号时,通过我们的Cdd改变引脚的值。这意味着我们的可运行体应该由数据接收事件触发。

8. 在MasterSWC中进行相关更改
现在我们已经在Cdd SWC中设置了RPort - 我们现在需要设置相应的PPort。MasterSWC是应用程序软件的入口点,用于接收通过Can发送的测试代码。从这里我们可以检查某个测试代码,然后与我们的Cdd通信以设置引脚的值。

9. 将Cdd映射到组合和ECU
由于Cdd SWC是新的,在我们连接新端口之前,我们需要将Cdd SWC映射到组合和ECU。导航到系统→系统信息,右键点击系统项目,选择“打开方式”→“组合编辑器”:

10. 更新ECU提取
导航到系统→系统信息,右键点击系统,选择“创建ECU提取”。然后在弹出窗口中选择“确定”:

11. 将Cdd可运行体映射到任务
现在,为了我们的可运行体得到执行,我们需要将其映射到一个任务。在ECU配置器中导航到Bsw模块→Ecuc值收集,并双击以下项目:

12. 将Cdd初始化函数添加到EcuM驱动器初始化列表
我们的Cdd将需要一个初始化函数,以便Port Mcal模块被初始化/反初始化。为此,我们需要在EcuM中添加这两个项目。

13. 生成项目
打开RTA代码生成器对话框,导航到RTE "Include AR文件"并选择我们创建的Cdd.arxml。现在点击RTA代码生成器并选择“生成全部”。

14. 示例代码
由于我们已将Cdd初始化函数添加到EcuM驱动器初始化列表,我们需要这个函数的实现。在这个例子中这非常简单(直接映射),因为我们只是访问MCAL Dio模块,所以我们在这个函数中所要做的就是调用Port_Init。

具体内容参考以下文档链接

https://download.csdn.net/download/qq_36750998/89614621

  • 5
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

美好生活丶

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

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

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

打赏作者

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

抵扣说明:

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

余额充值