版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
AutoSAR系列讲解(实践篇)7.4-实验:配置SWC&RTE(上)
实验:配置SWC&RTE(上)
阅读建议: 实验篇是重点,有条件的同学最好跟着做一遍,然后回头对照着7.1-7.3理解其配置的目的和意义。实验下篇将在7.7节中继续做
一、实验概览
1、实验目的
通过本次实验,主要是让大家对Dev的配置有一个全流程的学习。这里会用到前两节的内容,将其串联起来,让大家能完整的知道Dev打开后如何配置,和这么配置的意义是什么。
2、实验内容
本次实验主要做下图的配置,搭建下面的框架,并且将线都连上,将数据都映射上
二、步骤一:配置SWC
1、在Cfg中新建工程并在Dev中打开
- 打开DaVinci Configurator(Cfg),点击File->new,出现如下界面,配置好后点击next
- 这里选默认即可,如需配置,下图有说明,看不懂的还请回头看看4.9节。其中的标定a2l文件是标定中需要用的标准文件,包含有变量在ram的地址信息
- 选择芯片和编译器
- 最后不需要改变,点击Finish即可生成工程。需要配置的话说明如下图
- 保存工程,打开Dev,点击File->Open Workspace,选中之前Cfg配置路径下的.dpa工程(注意这个.dpa工程用Dev和Cfg都能打开,是公用的工程,也是总工程)
- 打开后,应该能出现如下界面,这样就算是新建好一个工程了
2、创建各种类型定义
这里如何配置前两节已经介绍过了,这里不再赘述,有不同的地方博主再截图说明
- 创建SWC Types(注意观察这里的命名都是有规则的)
- CtCoApplication (Type: Composition) 这里定义了一个Composition型的SWC Type
- CtApMySwc (Type: Application; Support Multiple Instantiation: off) 这里定义了Application型的SWC Type,并且申明不可以被重用
- CtSaDoor (Type: SensorActuator; Support Multiple Instantiation: on) 定义为传感器/执行器型的SWC
- CtSaInteriorLight (Type: SensorActuator; Support Multiple Instantiation: on)
- 创建ADT Types
- AdtDoorState (新建成boolean类型)
- AdtLightState (新建成boolean类型)
- 创建Interface定义(这里用的S/R接口)
- PiDoorState with data element DeDoorState (Application Data Type: AdtDoorState) 创建Interface的同时,关联上相应的ADT数据类型
- PiLightState with data element DeLightState (Application Data Type: AdtLightState)
3、通过Interface创建SWC上的Port实体
- 双击CtApMySwc,进入其编辑界面,选中左下角的Interface Graphic图标(如图),进入图形编辑界面
- 点击导航栏的Graphic选项卡,切换到图形界面编辑工具
- 添加三个端口,方法如图(图中是添加Sender接口的方法,其他同理)
- Sender -> PiLightState
- Receiver -> PiDoorState
- Receiver -> PiDoorState
- 添加常量定义,就是为常量取个名字
- CDoorClosed = 0
- CLightOff = 0
- 双击端口,修改其属性
- PiDoorState -> PpDoorStateFrontLeft (Init value: CDoorClosed)
- PiDoorState -> PpDoorStateFrontRight ( Init value: CDoorClosed)
- PiLightState -> PpLightStateFront (Init value: CLightOff)
完成后如下图:
4、SWC的连接
- 首先同3中的步骤建立其他SWC的接口实体,并配置其属性
- CtSaDoor
- piDoorState -> PpDoorState (Sender, Init value: CDoorClosed) - CtSaInteriorLight
- PiLightState -> PpLightState (Receiver, Init value: CLightOff)
- 双击CtCoApplication,进入其配置页面。然后将三个Atomic SWC拖放入Composition SWC中
- 修改各实例化后的SWC的名字。注意这里的名字格式是CpApMySwc::CtApMySwc,就是说实例化后的CpApMySwc继承于CtApMySwc的意思
- CpApMySwc
- CpSaDoorFrontLeft
- CpSaDoorFrontRight
- CpSaInteriorLight
- 最后使用连接工具将对应的线连接起来即可
5、创建IDT
- 创建两个IDT
- IdtDoorState (Data Type:boolean;Compu Method:boolean_CompuMethod)
- IdtLightState (Data Type:boolean;Compu Method:boolean_CompuMethod)
注意这里的计算方法,代码生成里就是简单的将1和0用#define定义成了TRUE和FLASE,用的是查表的方式。这里是默认的方法,如果各位想要进一步定制化,可以自己定义计算方法:比如将1定义为DoorOpen,将0定义为DoorClosed
6、建立数据映射模板
- 创建Data Mapping Set,并取名为DemoTypeMapping
- 定义Data Type Map,按照图中的方式将我们定义好的两种ADT和IDT映射上
- AdtDoorState -> IdtDoorState
- AdtLightState -> IdtLightState
7、使用数据映射
- 在我们的三个Atomic SWC(CtApMySwc、CtSaDoor和CtSaInteriorLight )中右键Properties,打开后点击Mapping Sets选项卡
- 使用我们之前定义好的Data Mapping Sets,将所有的Atomic SWC都添加上
- 然后点击检查,确认都映射上了
如果没有映射上会出现如下警号
8、在ECU中添加我们的SWC
- 双击打开ECU_Composition
- 按照下图,我们定义的SWC集合拖动到ECU中,这样就算是完成了我们的实验上篇的内容了
附:返回总目录的传送门如下
->返回总目录<-