如何在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互补。
工作流程摘要
- 创建一个新的接口
- 创建一个新的Cdd SWC
- 创建新的SWC端口
- 创建新的内部行为
- 创建一个新的可运行体
- 为可运行体添加数据访问点
- 为可运行体添加事件
- 在MasterSWC中进行相关更改
- 将Cdd映射到组合和ECU
- 更新ECU提取
- 将Cdd可运行体映射到任务
- 将Cdd初始化函数添加到EcuM驱动器初始化列表
- 生成项目
- 示例代码
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