SWC的类型
一、原子级的SWC(Atomic SWC)
二、集合级的SWC(Composition SWC)
三、特殊的SWC
一、原子级的SWC(Atomic SWC)
原子级的SWC(Atomic SWC):故名思意,就是不可再拆分的SWC,其实之前我们列举的都是Atomic
SWC。它们的特点是对应一个.c文件,这个c文件就是我们的最小单元,不可再分。由有人会问,那可运行实体(runnable)不就是组成SWC的更小
单元吗?确实如此,但是我们将SWC看成原子,那runnable就是其中的电子、质子和中子,它们与原子密不可分。因此将SWC看成是最小单元,
runnable是其中的函数。每个SWC的功能基本都是用来实现特定的算法。
二、集合级的SWC(Composition SWC)
有不可分割的SWC,就肯定有可分割的SWC。所以AutoSAR还规定了一类集合级的SWC(Composition SWC)。它们可以分为一个一个更小的
Atomic SWC。就好像是一个分子由很多原子组成的概念。分子是有实际意义的,很多原子就没有实际意义(但是有些也有,比如金、银和铜等)。
类比来看,我列了一个表:
化学概念 | AutoSAR概念 | C语言概念 |
分子 | Composition SWC | 包含xx.c文件的文件夹 |
原子 | Atomic SWC | xx.c文件 |
电子、中子、质子等 | runnable | 函数 |
还是那个例子,我们可以将功能相近或者需要整合到一处方便观看的SWC(以后Atomic SWC都简称为SWC)利用一个component SWC包含起来。
这样,就可以方便SWC归类。
于是,我们的文件映射也发生了一定的变化:这里将之前的图也放过来,方便大家对比,应该能很快明白composition
SWC是啥了:
注意:
在Vector的DaVinci中其实不会生成Composition的文件夹,这里是博主为了方便大家理解添加的。其实Composition只是一个概念,是用来在配置工
具上方便大家归类整理,看起来顺眼的
三、特殊的SWC
实际上,需要添加代码的不止是应用层的SWC。在BSW中,IO硬件抽象层(IoHwAb,BSW章节中会讲到)和复杂驱动(Cdd)都是需要手动添加代
码的,而这两个地方也可以算作是SWC,在DaVinci Developer中都是可以作为SWC进行配置和加runnable等操作的。因此,我们将其算成是特殊的
SWC来看待