目录
前言
这里,我们学习一下如何创建一个SWC。
一、什么是SWC
SWC比较容易理解的就是,你可以把他当做一个【.c】来看。事实上,当我们创建一个SWC,然后生成代码的时候,也会对应的出现一个相同名字的【.c】文件。
根据Davinci的分类,SWC分为2类:Composition,Atomic
其中Atomic又细分为以下几种类型:
类型 | 描述 |
---|---|
Application | 一般只包含应用程序的SWC |
SensorActuator | 专门处理和sensor/actuator相关的SWC |
SensorActuator | 此SWC用于将(其所在的ECU)的Calibration参数共享给外部设备 |
Complex Driver | 用于开发CDD(Complex Device Driver) |
Non-volatile Memory Block | 这种SWC是用于访问NVRAM或Memory的 |
I/O Hardware Abstraction | 这类SWC通过直接与特定的 BSW 模块交互来提供对 I/O 的访问 |
二、如何创建一个SWC
首先我们打开Autosar的Demo工程,找到【S32K144_Start.dpa】,然后双击打开。
在【Davinci Configurator】工具中打开界面如下:
三、打开DaVinci Developer
3.1 打开工程
3.1.1 点击【File】,选择【Open Workspace】
然后选择我们的工程文件【S32K144_Start.dpa】
打开之后界面如下:
3.2 创建一个【CtLedTask】Component
3.2.1 右键【Application Component Types】,选择【New Application Component Type...】
输入一个的名字,这个名字就是后面生成的C文件名字,然后选择【Atomic】类型, 然后点击确认
在这里就会出现一个名为【CtLedTask】的Component
3.3 将【CtLedTask】实例化
点击【CtLedTask】, 然后键盘按【Ctrl + C】进行复制
双击【ECU_Composition】,进入【Software Design】
打开如下:
然后在在中间【Ctrl + V】,进行粘贴。 就是将这个【CtLedTask】进行实例化,只有实例化了之后才能生成【.c】文件
点击保存,然后点击【Check Workspace】, 下面没有报错就行。
3.4 回到【Davinci Configurator】
会自动弹出下面的框框,点击同步就行
然后点击【Task Mapping】,就会发现右边多了一个【CtLedTask】。
但是这个不是task, 这个只是个SWC,可以理解为是一个C文件,目前我们没有在里面创建【runnable】,所以暂时不需要mapping。
3.5 生成【CtLedTask.c】文件
点击【Generate Software Component...】图标。
就会出现下面这个画面, 就是在生成SWC
然后点击【OK】,进行一个保存的动作。
四、查看生成的SWC
打开工程路径,我们发现多了一个【CtLedTask】文件夹, 并且下面生成了【CtLedTask.c】文件, 这时SWC我们就生成好了。
开打【CtLedTask.c】,你会发现里面空空如也,这个C文件的结构,注释,不等修改!!!
下一章我们将继续讲解,如何创建【runnable】,也就是我们所说的函数。