7.7 KiB
复杂驱动设计与集成指南
AUTOSAR CP Release 4.4.0
原文:Complex Driver design and integration guideline(文档 ID 622)
翻译状态:已完成 v1
对应原文 PDF:
BSWGeneral/AUTOSAR_EXP_CDDDesignAndIntegrationGuideline.pdf
文档标识
| 字段 | 值 |
|---|---|
| 文档标题 | 复杂驱动设计与集成指南(Complex Driver design and integration guideline) |
| 文档标识号 | 622 |
| 文档状态 | 正式版(Final) |
| 所属标准 | Classic Platform |
| 所属版本 | 4.4.0 |
文档变更历史(节选)
| 日期 | 版本 | 变更说明 |
|---|---|---|
| 2018-10-31 | 4.4.0 | 移除 4.1 和 7.3.2 章节的 SWS_EcuMfixed |
| 2016-11-30 | 4.3.0 | 新增与 StbM 模块的接口章节;更新模块 ID |
| 2015-07-31 | 4.2.2 | 更新 Default Error Tracer;接口的可重入性 |
| 2014-10-31 | 4.2.1 | 更新 TcpIp |
| 2014-03-31 | 4.1.3 | 更新 CDD 代码文件章节;移除变更文档章节 |
| 2013-03-15 | 4.1.1 | 初始发布 |
目录
- 文档范围
- 缩略语与简称
- 使用的约定
- 相关文档
- CDD 介绍
- CDD 设计建议
- 与其他模块的接口
- CDD 集成
1 文档范围
复杂驱动(CDD, Complex Device Driver) 是 AUTOSAR 架构中最灵活的 BSW 模块类型,用于实现:
- 高度硬件相关的功能
- 专有算法(如自定义加密、信号处理)
- 标准 AUTOSAR 栈未覆盖的功能
- 高性能要求的代码
CDD 可以访问所有AUTOSAR 层,包括直接访问微控制器硬件。本文档提供 CDD 设计与 AUTOSAR 集成的指南。
2 缩略语与简称
| 缩略语 | 描述 |
|---|---|
| CDD | Complex Device Driver(复杂驱动) |
| MCAL | Microcontroller Abstraction Layer |
| RTE | Runtime Environment |
| SW-C | Software Component(软件组件) |
| StbM | Synchronized Time-Base Manager(同步时基管理器) |
| TcpIp | TCP/IP Stack |
| EcuM | ECU State Manager |
| BswM | BSW Mode Manager |
| ComM | Communication Manager |
| Dem | Diagnostic Event Manager |
| Det | Default Error Tracer |
3 使用的约定
- CDD 命名约定:
<Vendor>_<Function>或类似 - 文档使用
shall表示强制要求
4 相关文档
| 编号 | 名称 | 文件 |
|---|---|---|
| [1] | Layered Software Architecture | AUTOSAR_EXP_LayeredSoftwareArchitecture.pdf |
| [2] | General Specification of Basic Software Modules | AUTOSAR_SWS_BSWGeneral.pdf |
| [3] | General Requirements on Basic Software Modules | AUTOSAR_SRS_BSWGeneral.pdf |
| [4] | Specification of ECU State Manager | AUTOSAR_SWS_ECUStateManager.pdf |
| [5] | Specification of BSW Mode Manager | AUTOSAR_SWS_BSWModeManager.pdf |
| [6] | Specification of Default Error Tracer | AUTOSAR_SWS_DefaultErrorTracer.pdf |
| [7] | Specification of Synchronized Time-Base Manager | AUTOSAR_SWS_SynchronizedTimeBaseManager.pdf |
| [8] | Specification of TCP/IP Stack | AUTOSAR_SWS_TcpIp.pdf |
5 CDD 介绍
5.1 CDD 在 AUTOSAR 架构中的位置
CDD 是 BSW 的一部分,位于复杂驱动层(Complex Driver Layer)。它可以直接调用:
- 微控制器硬件(绕过 MCAL)
- MCAL(标准外设驱动)
- ECU 抽象层
- 服务层(OS、EcuM、ComM 等)
- RTE(与 SW-C 通信)
- 复杂驱动库
5.2 CDD 的特殊性
| 特性 | 标准 BSW 模块 | CDD |
|---|---|---|
| 由 AUTOSAR 规范 | ✅ 详细规范 | ❌ 仅指南 |
| 标准化 | ✅ 所有 ECU 一致 | ❌ 实现特定 |
| 可调用硬件 | 通过 MCAL | 可直接 |
| 性能 | 通用优化 | 可高度优化 |
| 可移植性 | 高 | 低(与具体 ECU 耦合) |
| 复杂度 | 中等 | 可高 |
5.3 CDD 的典型用例
- 专用加密算法(如 OEM 专有的认证协议)
- 复杂信号处理(如音频 DSP 接口)
- 专有通信协议(OEM 自定义)
- 高精度定时控制(如发动机控制)
- 特殊传感器接口
6 CDD 设计建议
6.1 文档
6.1.1 用户手册
CDD 应提供用户手册,包括:
- 功能描述
- API 文档
- 配置参数说明
- 集成步骤
- 限制和已知问题
6.2 实现
CDD 实现应:
- 遵循
AUTOSAR_SWS_BSWGeneral中的通用规范 - 遵循 MISRA C 2012
- 使用编译器抽象(
Compiler.h) - 使用内存映射(
MemMap.h) - 包含版本检查
6.3 CDD 文件
6.3.1 代码文件
Cdd_<Vendor>_<Name>.c # 主实现
Cdd_<Vendor>_<Name>_Cfg.c # 配置数据
6.3.2 头文件
Cdd_<Vendor>_<Name>.h # 公共 API
Cdd_<Vendor>_<Name>_Cfg.h # 配置类型
Cdd_<Vendor>_<Name>_MemMap.h # 内存映射
Cdd_<Vendor>_<Name>_Version.h # 版本信息
6.3.3 推荐的文件结构
| 文件 | 内容 |
|---|---|
.c |
实现 + 静态变量定义 |
.h |
API 函数声明、类型定义、宏 |
_Cfg.c |
配置数据数组 |
_Cfg.h |
配置类型结构体定义 |
_MemMap.h |
内存段映射(自动生成) |
_Version.h |
版本宏 |
_Bswmd.arxml |
BSW 模块描述(XML) |
6.3.4 一致性检查
CDD 应包含版本检查和编译时检查:
#if (CDD_VENDOR_ID != EXPECTED_VENDOR_ID)
#error "CDD vendor ID mismatch"
#endif
6.4 行为和接口描述
CDD 应在 BSWMD 中声明:
- 提供/需要的接口
- 触发的事件
- 依赖的其他模块
- 内存映射段
6.5 参数配置
CDD 配置参数应在 BSWMD 中以 XML 形式声明。工具可基于 BSWMD 生成配置器 UI。
7 与其他模块的接口
7.1 与 RTE 和 SW-C 的接口
CDD 可以:
- 通过 RTE 与 SW-C 通信(推荐)
- 使用 RTE 的 sender-receiver、client-server 接口
示例:
/* SW-C 端调用 CDD */
* Rte_Call_<Port>_<Operation>(/* args */);
/* CDD 端实现 RTE 调用 */
Std_ReturnType Cdd_<Vendor>_<Name>(/* RTE 生成的参数 */) {
/* 实现 */
}
7.2 与库的接口
CDD 可调用复杂驱动库(如 OEM 专有算法库)。
7.3 与标准 BSW 模块的接口
7.3.1 与 MCAL 模块的接口
CDD 可调用 MCAL 驱动(Mcu、Port、Dio、Adc 等)。这比直接访问硬件更可移植。
7.3.2 与 EcuM 的接口
CDD 可调用 EcuM API(如 EcuM_GetState),实现状态相关的行为。
7.3.3 与 BswM 的接口
CDD 可调用 BswM API,不推荐直接实现 BswM 逻辑。
7.3.4 与 OS 的接口
CDD 可调用 OS API(任务、事件、资源、计数器)。
7.3.5 与 ComM 的接口
CDD 可调用 ComM API 监控通信状态。
7.3.6 与 Dem 的接口
CDD 可调用 Dem_ReportErrorStatus 报告事件给 DEM。
7.3.7 与 Det 的接口
CDD 可调用 Det_ReportError 报告开发错误。
7.3.8 与 StbM 的接口
CDD 可调用 StbM API 访问同步时基。
7.3.9 与 TcpIp 的接口
CDD 可调用 TcpIp API 实现网络通信。
8 CDD 集成
8.1 集成步骤
- 生成:从 BSWMD 生成配置器
- 配置:使用工具配置 CDD
- 编译:将 CDD 加入编译
- 链接:链接到 RTE 和 BSW
- 测试:单元测试、集成测试
8.2 集成检查清单
- CDD 的 BSWMD 完整
- 内存映射正确
- 配置参数生成正确
- 初始化顺序正确
- 与 OS 任务/中断集成正确
- 开发错误处理集成(Det)
- 运行时错误处理集成(Dem)
- 模式管理集成(BswM/ComM/EcuM)
- 测试覆盖完整
翻译说明
- 本文档为指南性文档(EXP),提供 CDD 设计与集成的最佳实践
- CDD 是 AUTOSAR 中最灵活的 BSW 类型,可绕过标准架构直接访问硬件
- 设计 CDD 时应权衡灵活性与可维护性
翻译:opencode-translator / Step 3 P0 批量翻译