1、 Create a New Component Type in Davinci Developer
以CDD_SecurityTaskHandler举例,创建ComponentTypes, application ComponentTypes与service ComponentTypes创建过程类似;
1.1 在Object Browser窗口中Application Component Types栏,右键创建New Application Component Type…
添加成功后双击对应component,进入对应component-Software Design
1.2 创建需要的Runnable Entity,runnable通常包含init 和mainfunction等函数
1.2.1 Properties写入对应函数的名称
1.2.2 Triggers创建对应需要的触发点,例如,CDD_SecurityTaskHandler_Main是周期性触发调度,则需要创建trigger类型为periodic,
例如,SetSecAccKey函数是需要被其他事件调用的runnable,则需要创建triggerl类型为On Operation Invoke ,参考1.2.3
1.2.3 Access Points负责配置runnable的调用时机,通常有明确调度周期的函数不需要配置此项(比如初始化或者周期函数),有单独access需求的需要自行添加
以setSecAccKey runnable为例,根据general requirements,setSecAccKey会被其他模块(例如diagservice)或者keyMangement相关函数调用,需要创建access类型为invoke Operations,这里开始需要先引入Application Port Interfaces配置,参考1.3
1.3 Application Port Interfaces
以setSecAccKey runnable为例,对于setSecAccKey,invoke Operations 的trigger通用接口名称沿用If_CS_SetSAKey,在Object Browser窗口Application Port Interfaces栏右键,选择New C/S Port Interface,
1.3.1 Properties写入对应函数的名称,同时遵循AUTOSAR配置返回值
1.3.2 Operation Prototypes负责配置函数实体内容,包含形参、形参类型以及函数返回状态
其中,datatype除通用类型外,允许自定义创建Implementation Data Type,例如创建基础类型为uint8的key数组类型SecAccKey
1.4 C/S port interface创建完成后,为runnable引入接口
回到design窗口,在port prototype list中new时选择from port,引入1.3创建完成的port interface
回到runnable entity list,为setSecAcckey函数添加invoke trigger,此时是可以选择到port interface,也就是If_CS_SetSAKey
Output:获得Config\Developer\ComponentTypes\CDD_SecurityTaskHandler.arxml;可以开始步骤二。
2、Creat a New Application Component in Davinci Configurator
eg.CDD_SecurityTaskHandler,或者命名为SWC_…
2.1 展开左侧Runtime System窗口,找到ECU Software Component,在Application Components 右键点击Add;
在弹出的creadtion窗口Name中找到步骤1中添加的ComponentType,Next;
2.2 配置RTE Module,RteSwComponentInstance,找到自动带出的component,eg.CDD_SecurityTaskHandler_EcuSwComposition
2.3 配置RteEventToTaskMapping,执行周期Task Ref以及position in Task
事件调用类不需要配置Task Ref.
2.4 RTE Module,RteSwComponentTypes,新增对应container