1、Application Component Types(SWC Type)
在Object Browser工具中右键Application Component Types选择New Application Component Type新增一个SWC
可以看到会弹出下面的选项框
- Name:
SWC Type的名称,注意这里是SWC Type,不是SWC,相当于是先创建了一个SWC的模版,后面基于这个模版再创建具体的SWC实例
- Composition / Atomic
Atomic是原子级的SWC,就是不可再拆分的SWC,对应一个单独的.c文件,项目中一般使用这种;Composition是集合级的SWC,它是一种可以分割的SWC,可以分割成一个一个Atomic
- Type:
SWC Type | 介绍 |
---|---|
Application SWC | 应用软件组件,实际项目中使用最多的类型,不直接访问硬件,通过RTE与其他SWC或BSW交互。 |
SensorActuator SWC | 传感器/执行器相关的SWC,直接与ECU抽象层交互,完成原始信号和应用层可读数据之间的转换 |
Calibration SWC | 标定相关的SWC,此SWC用于将其所在的ECU的Calibration Parameters共享给外部设备。 |
Non-Volatile Memory Block SWC | 管理NVRAM的读写操作的SWC |
I/O Hardware Abstraction(application layer) SWC | I/O硬件抽象层的SWC,与IoHwAb模块直接交互来提供对I/O的访问。 |
Complex Driver(application layer) SWC | 用于开发CDD的SWC |
Service Proxy | 作为应用层与基础服务层(BSW Services)的中间代理。充当代理,为一个或多个remote ECU提供内部服务。主要用途是在整个系统中分发车辆的模式信息。简单地说,用于跨ECU |
除了Calibration和Non-Volatile Memory Block两个Type在创建后就被锁定而不可修改,其余5个Type均可在创建后自由修改Type。
- Support multiple instantiation
是否可以重用,创建的SWC Type是否可以实例化出来多个SWC
- Implementation Code Type
在SWC中使用的是源码还是使用的.obj这种编译后不可见的文件。
- Symbol:
这里可以不填,Short Name就是为该SWC Type取一个缩写名;Code是代码生成时使用在c语言中的名字。
2,SWC的属性列表介绍
双击我们创建的Tc_Com_Tx,就进入到对应的Software Design,左侧项目栏有9个项目和1个接口选项卡,从上到下依次是:
Runnable Entity List:可运行实体列表,可以创建函数,并把相关接口映射到具体函数
Exclusion Area List:专属区域列表
Inter-Runnable Variable List:可运行实体内部变量列表
Calibration Parameter List:标定参数列表
Service Needs:服务需求,BSW的内部服务,比如新建NVM块
Per-Instance Memory List:每个实例的存储列表
NV Block Descriptors:NV块描述符,只有当SWC Type是Non-Volatile Memory Block SWC时才能使用
Port Group List:接口组列表,是多个接口的组合
Port Prototype List:接口原型列表
Interface Graphic:接口视图
3,创建一个10ms的函数
按照上述图片操作新增一个10ms的Runnable
4,Software Design实例化一个SWC
在Step1中我们创建了SWC Type:Tc_Com_Tx,但是我们还需要对其初始化,在Software Design右键新增,然后选则我们创建的Tc_Com_Tx模版,就可以实例化一个SWC。
5,同步到CFG并完成Map
在Dev完成前面四步后,保存切换到CFG工程页面,同步Dev引入的变更后,可以看到在Task Mapping界面多了一个Tc_Com_Tx这个Swc及其10ms的Runnable(Tc_Com_Tx_10ms),然后我们需要将其Map到一个Task来消除Rte的报错。