AUTOSAR CDD 模块解析 --- 设计建议

作者:Stephen Du

免责声明: 本文为个人学习笔记及总结,仅代表个人观点,尽可能保证内容准确性。复制/转发请注明来源/作者。

欢迎添加微信交流学习。

在这里插入图片描述

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

2.2 代码实现要求

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

  • CDD模块开发需要遵循以下文档里面描述的规则:
    • AUTOSAR Layered Software Architecture:AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf
    • AUTOSAR General Requirements on Basic Software Modules:AUTOSAR_SRS_BSWGeneral.pdf
    • General Specification on BSW modules:AUTOSAR_SWS_BSWGeneral.pdf
    • Specification of Standard Types:AUTOSAR_SWS_StandardTypes.pdf
    • Specification of Platform Types:AUTOSAR_SWS_PlatformTypes.pdf
    • Model Persistence Rules for XML:AUTOSAR_TR_XMLPersistenceRules.pdf
    • Specification of BSW Module Description Template:AUTOSAR_TPS_BSWModuleDescriptionTemplate.pdf
    • Specification of ECU Configuration:AUTOSAR_TPS_ECUConfiguration.pdf
  • CDD模块必须对关键资源进行保护,需要定义一些关键区(Section),这些区能被SchM或OS操作管理。
  • CDD的模式能被EcuM及BswM模块进行管理。
  • CDD可能需要使用内存映射机制来使用/操作其相关内存区域。
  • CDD可能需要使用Det或者Dem模块来报告错误信息。

2.3 文件组成

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

  • AUTOSAR General Requirements on Basic Software Modules:AUTOSAR_SRS_BSWGeneral.pdf
  • General Specification on BSW modules:AUTOSAR_SWS_BSWGeneral.pdf

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

代码文件(Code file):

  • 至少需要一个CDD_.c。
  • 如果有中断函数,需要放到CDD__Irq.c。
  • 如果有Callout函数,需要放到CDD__Callout.c。
  • 如果配置中有代码是在链接时(Link time)生成,那么这部分代码放到CDD__Lcfg.c。
  • 如果配置中有代码是在编译后时(Post Build)生成,那么这部分代码放到CDD__PBcfg.c。

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

头文件(Header file):

  • 你需要提供一个CDD_.h文件,通常使用该模块的时候只需要包含该文件即可。
  • 如果有回调函数(Callback)被其他模块(BSW)使用,需要提供CDD__Cbk.h。
  • 你可能还需要提供CDD__Cfg.h,CDD__PBcfg.h,CDD__Lcfg.h,根据配置目标类型来决定。

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

  • 通常CDD模块需要包含Det.h/Dem.h来报告错误。
  • 如果定义了内存映射区域,需要包含_MemMap.h(Mip是模块缩写前缀,如Com,Adc等)。
  • 如果配置了给Rte使用的接口,那么需要提供Rte_CDD_.h。

推荐文件结构:

下图是文件包含关系的一个概览:
AUTOSAR CDD 模块解析 --- 设计建议_第1张图片

一致性检查(Coherence checks):

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

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


  1. AUTOSAR每个模块都分配一个ID,该信息在AUTOSAR_TR_BSWModuleList.pdf里面描述。 ↩︎

你可能感兴趣的:(AUTOSAR)