引入
复杂驱动程序(CDD,CDD曾经是复杂设备驱动程序或复杂驱动程序的缩写,但不限于驱动程序)是未经 AUTOSAR 标准化的软件实体,可以通过 AUTOSAR 接口和/或基本软件模块 API 访问或访问。根据AUTOSAR 分层软件架构,CDD 是位于BSW层级的复杂驱动程序层中的特定模块,它与标准BSW 模块或RTE交互。
- CDD可能需要与分层软件架构的模块进行接口连接交互
- 分层软件架构的某个模块可能需要与CDD进行接口连接交互
- CDD可能需要通过RTE与SWC进行接口交互
CDD在AUTOSAR软件架构中的层级
CDD的主要目标是使用特定的中断和/或复杂的微控制器外设、外部设备(通信收发器、ASIC等)直接访问微控制器,以执行复杂的传感器和执行器控制,从而满足特定的功能和时序要求。
此外,它还可以用于实现增强的服务/协议,或封装非AUTOSAR系统的遗留功能。CDD的实现可能依赖于应用程序、微控制器和ECU。
最后,CDD可以作为迁移机制,将现有或新的概念引入到AUTOSAR软件架构中。
CDD设计建议
为了在AUTOSAR架构中接口和简化CDD集成,设计者应考虑以下几点。
用户手册
为了简化集成过程并向客户提供充分的信息,CDD设计师应编制一份用户手册,内容涵盖以下方面:
1、CDD介绍与概述:
对CDD的基本概念、用途和重要性进行简要介绍。
2、功能操作描述:
详细说明CDD的初始化、正常运行、关机以及故障处理等操作流程。
3、与其他BSW模块、SchM和RTE的关系与需求:
阐述CDD与BSW模块、调度管理器(SchM)和RTE之间的相互作用和依赖关系,例如从NvM获取内存块,以及需要配置的关键部分。
4、文件结构与依赖关系:
描述CDD相关文件的组织结构、文件间的依赖关系以及文件命名规范。
5、接口描述(包括服务):
列出CDD提供的接口(服务)名称、功能描述、重入性、参数(名称、类型、范围和值)、返回值(名称、类型、范围和值)以及配置类别。
6、非功能性需求描述:
说明CDD的定时要求、行为要求、资源使用情况以及与其他BSW模块或SWC的交互行为。
7、Dem错误(可选Det错误)及调试变量描述:
描述CDD可能遇到的诊断错误(Dem)、可选的检测错误(Det)以及相关的调试变量。
8、配置参数描述:
列出CDD的配置参数名称、类型、范围和值,以便用户根据需求进行配置。
9、内存映射需求描述:
说明CDD对Flash和RAM等内存资源的需求。
10、使用限制与开放问题:
指出CDD在使用过程中可能遇到的限制条件以及当前尚未解决的问题。
11、集成约束与其他模块要求:
阐述CDD在集成到其他系统或模块时可能遇到的约束条件以及需要满足的要求。
12、示例:
提供具体的CDD使用示例,帮助用户更好地理解CDD的功能和使用方法。
这份用户手册旨在为用户提供全面而详细的CDD使用指南,确保用户能够正确、高效地集成和使用CDD。
实现
在CDD的实施方面,AUTOSAR提出的约束较少,但至少包括以下几点:
1、遵守输入规范:
CDD必须遵守《General Requirements on Basic Software Modules AUTOSAR_CP_SRS_BSWGenera》、《Layered Software Architecture AUTOSAR_CP_EXP_LayeredSoftwareArchitecture》等输入规范。这意味着CDD的设计和实现必须基于这些规范进行,以确保其与其他AUTOSAR组件的兼容性和互操作性。
2、保护关键资源:
CDD需要定义关键区域,这些区域可以通过SchM或OS机制进行处理,以保护其关键资源。这是为了确保在并发环境下,CDD的关键数据不会被意外修改或破坏。
3、管理模式:
CDD的模式可能由EcuM和BswM模块进行管理。这意味着EcuM和BswM可以监控和控制CDD的运行状态,以确保其按照预期工作。
4、内存处理:
CDD可以使用内存映射机制来处理其内存区域。这允许CDD更有效地管理其内存资源,确保数据的正确存储和访问。
5、错误报告:
CDD可以使用Det或Dem模块来报告其错误。这有助于及时发现和解决问题,提高系统的可靠性和稳定性。
通过遵守这些约束,可以确保CDD在复杂的车载系统中稳定运行,为车辆提供可靠的控制和诊断功能。
CDD文件
代码文件
CDD模块的代码文件结构并非固定不变,除了需满足文档《General Requirements on Basic Software Modules》和文档《General Specification on Basic Software Modules》中的要求外。
至少,应提供一个名为CDD_<MODULENAME>_Irq.c的文件。其中,<MODULENAME>代表具体的模块名称。
中断函数可以放置在名为CDD_<MODULENAME>_Irq.c的文件中。这样,与中断处理相关的代码可以集中管理,便于维护和调试。
回调函数可以放置在名为CDD_<MODULENAME>_Callout.c的文件中。回调函数通常用于在特定事件发生时执行特定操作,将其单独放置在一个文件中有助于保持代码的清晰和模块化。
根据需求,链接时从配置生成的C对象可以放置在名为CDD_<MODULENAME>_Lcfg.c的文件中。这些对象可能包括在链接阶段根据配置生成的静态数据或代码。
同样地,根据需求,构建后从配置生成的C对象可以放置在名为CDD_<MODULENAME>_PBcfg.c的文件中。这些对象可能包括在构建后的某个阶段根据配置生成的额外数据或代码。
如果CDD模块的实现需要额外的代码文件,则可以自由地包含它们。这意味着CDD模块的代码结构具有一定的灵活性,可以根据具体需求和实现方式进行调整。
头文件
以下图示包含了CDD模块所定义的AUTOSAR头文件层次结构。CDD模块应提供一个头文件结构,这样,CDD模块的用户就只需包含CDD_<MODULENAME>.h文件即可。其中,<MODULENAME>代表具体的模块名称。
CDD头文件层次结构
如果某些回调函数需要由其他BSW模块处理,CDD模块可能会提供一个
CDD_<MODULENAME>_Cbk.h头文件。
根据需求,从配置中生成的C对象声明可能会被放置在
CDD_<MODULENAME>Cfg.h、CDD<MODULENAME>PBcfg.h、CDD<MODULENAME>_Lcfg.h文件中。这些文件分别用于存储配置、构建后配置和链接时配置的相关信息。
如果CDD模块的实现需要额外的头文件,那么可以自由地包含它们。这些头文件是自包含的,即它们会包含所有它们自身所需要的其他头文件。
CDD模块可能会包含Det.h和Dem.h头文件来报告错误。这些头文件通常用于错误检测和报告机制。
如果某些内存映射区域需要定义,CDD模块可能会包含<Mip>_MemMap.h头文件。其中,<Mip>是模块实v现前缀。这个头文件用于定义内存映射的详细信息。
如果配置了与RTE的接口,CDD模块可能会包含Rte_CDD_<MODULENAME>.h头文件。这个头文件用于定义与RTE交互的接口和函数。
CDD的行为与接口描述
某些CDD不仅具有与其他BSW模块或集群的接口,还通过RTE具有可从应用SWC访问的更抽象的接口。
在这些情况下,需要一个CDD SWC类型来连接RTE,并且CDD应遵循文档《Basic Software Module Description Template》中的要求。
该描述文件应包含以下内容:
1、CDD服务描述:
对CDD所提供的服务进行描述,这些服务可能是数据处理、通信等。
2、类型和端口接口:
列出CDD所使用的数据类型和端口接口,这些接口定义了与其他组件的交互方式。
3、内部行为和可运行实体的描述:
描述CDD的内部逻辑和行为,以及可运行实体的状态和转换。
4、可运行实体所需触发事件的描述:
详细说明哪些事件会触发CDD中的可运行实体执行特定操作。
5、共享资源保护的独占区域描述:
描述CDD如何管理对共享资源的访问,以避免冲突和数据损坏。
6、内存映射:
提供CDD在内存中的布局和地址分配信息。
这里所需的更抽象的接口被称为AUTOSAR接口,它们通过软件组件模板(SWCT)进行描述,由端口、端口接口及其进一步详细信息组成。
小结
首先,CDD模块作为AUTOSAR中的一个软件实例,虽然未被AUTOSAR标准化,但也要遵循相应的模板规范和设计开发建议。
其次,文档是CDD开发过程中不可或缺的一部分。开发者需要提供详细的用户手册,包括CDD的介绍、功能描述、与其他模块的依赖关系、接口描述、非功能性需求以及配置参数等信息。这些文档将有助于简化客户集成工作,并提供必要的信息以支持后续的开发和维护。
在接口设计方面,CDD可能需要与其他BSW模块、库以及标准模块接口进行交互。因此,开发者需要确保CDD的接口设计符合AUTOSAR标准,并能够与其他模块进行无缝连接。此外,对于需要通过RTE访问的抽象接口,开发者还需要遵循相应的文档要求,并确保CDD SWC类型与RTE的兼容性。
在内部行为和接口描述方面,开发者需要清晰地定义CDD的内部逻辑和行为,以及可运行实体的状态和转换。这将有助于确保CDD的正确性和可靠性,并为其他开发者提供清晰的参考。
最后,开发者还需要遵循AUTOSAR的相关文档和规范,以确保CDD的开发过程符合标准要求。这包括但不限于AUTOSAR分层软件架构、基础软件模块一般要求、基础软件模块规范等文档。
作者:不可说
来源:汽车电子与软件
推荐阅读:
更多汽车电子干货请关注汽车电子与软件专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入技术交流群,请备注研究方向。