#百人创作先锋团#AUTOSAR CDD 模块解析 --- 设计建议

发布于 2023-1-31 15:12
浏览
0收藏

1. 模块简介

CDD是啥?


首先看字面意思,CDD(Complex Device Driver or Complex Driver)是复杂设备驱动/复杂驱动的缩写,但是它不仅限用于驱动模块,也可以是应用或者与芯片、ECU相关的其他模块。


一个CDD模块是AUTOSAR里面的一个软件实例,属于AUTOSAR的一部分,但是该模块没有被AUTOSAR标准化。它可以通过AUTOSAR接口访问AUTOSAR里面其他基础模块(BSW),同样也可以被其他BSW或者RTE访问,SWCs与CDD之间不能直接进行访问,但可通过RTE进行。


CDD虽然是没有被AUTOSAR标准化的模块,但其可看作AUTOSAR软件架构里面的一种机制或者一种理念。


为啥有CDD?


CDD的主要目标是实现复杂的传感器采集和/或执行器控制,使用特定的中断和/或复杂的微控制器外设,外部设备(通信收发器,ASIC …)直接访问微控制器,以满足特殊的功能和时序要求。


CDD模块ID为2551。

2. CDD设计建议

为了使用户更容易集成一个CDD模块到AUTOSAR软件架构里面,设计者需要考虑下面这些东西。


2.1 用户手册


为简化客户集成工作,你需要提供用户手册,通常用户手册又需要包含如下信息:


  1. 1. CDD模块介绍和概览。
  2. 2. 功能描述,比如初始化,正常模式,关机模式,错误处理等。
  3. 3. 与其他模块的依赖关系描述。比如是否需要使用其他BSW模块,SchM,RTE或者是否需要使用NvM提供存储块,是否需要配置一些关键存储区等等。
  4. 4. 模块文件结构及依赖关系。
  5. 5. 接口描述/功能服务描述:名字,功能简介,是否重入,参数名字,参数类型,参数范围,参数值,返回值类型,返回值范围,参数配置类型等。
  6. 6. 非功能性描述,时间及操作要求,资源使用情况,与其他BSW或SWC的交互情况。
  7. 7. Dem错误描述,Det错误描述(可选项),调试变量(可选项)等。
  8. 8. 配置参数描述:配置参数名字,配置参数类型,配置参数取值范围,配置参数值。
  9. 9. 存储区域(Flash,RAM)映射描述。
  10. 10. 使用限制及已发现但还未解决的问题描述。
  11. 11. 集成约束及对其他模块的依赖。
  12. 12. 示例代码。


2.2 代码实现要求


除了需要满足以下这些要求外,AUTOSAR对CDD的其他实施限制很少。


  • CDD模块必须对关键资源进行保护,需要定义一些关键区(Section),这些区能被SchM或OS操作管理。​


  • CDD的模式能被EcuM及BswM模块进行管理。


  • CDD可能需要使用内存映射机制来使用/操作其相关内存区域。


  • CDD可能需要使用Det或者Dem模块来报告错误信息。


2.3 文件组成


对于文件结构,这里只是一个推荐,并没有完全定义文件结构,可以根据自己实际需求进行定义,但需要遵循下面两个文档里面的规则。


以下是一个CDD模块一些基本的文件组成:


代码文件(Code file):


  • 至少需要一个CDD_<MODULENAME>.c。


  • 如果有中断函数,需要放到CDD_<MODULENAME>_Irq.c。


  • 如果有Callout函数,需要放到CDD_<MODULENAME>_Callout.c。


  • 如果配置中有代码是在链接时(Link time)生成,那么这部分代码放到 CDD_<MODULENAME>_Lcfg.c。


  • 如果配置中有代码是在编译后时(Post Build)生成,那么这部分代码放到CDD_<MODULENAME>_PBcfg.c。


如果需要额外的文件,可自由增加。


头文件(Header file):


  • 你需要提供一个CDD_<MODULENAME>.h文件,通常使用该模块的时候只需要包含该文件即可。


  • 如果有回调函数(Callback)被其他模块(BSW)使用,需要提供CDD_<MODULENAME>_Cbk.h。


  • 你可能还需要提供CDD_<MODULENAME>_Cfg.h,CDD_<MODULENAME>_PBcfg.h,CDD_<MODULENAME>_Lcfg.h,根据配置目标类型来决定。


如果需要包含(include)额外的文件,可自由引用。比如:


  • 通常CDD模块需要包含Det.h/Dem.h来报告错误。


  • 如果定义了内存映射区域,需要包含<Mip>_MemMap.h(Mip是模块缩写前缀,如Com,Adc等)。


  • 如果配置了给Rte使用的接口,那么需要提供Rte_CDD_.h。


推荐文件结构:


下图是文件包含关系的一个概览:

#百人创作先锋团#AUTOSAR CDD 模块解析 --- 设计建议-汽车开发者社区


一致性检查(Coherence checks):


CDD模块需要避免集成一些不兼容的文件。通常是通过检查版本号来实现。


请见AUTOSAR_SWS_BSWGeneral.pdf文档里面Version check章节。


文章转载自公众号:汽车电子与软件

分类
标签
收藏
回复
举报
回复
相关推荐