Files
autosar_standard_spec_v4.4/BSWGeneral/AUTOSAR_EXP_CDDDesignAndIntegrationGuideline.md
T

307 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 复杂驱动设计与集成指南
> **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 | 初始发布 |
---
## 目录
1. 文档范围
2. 缩略语与简称
3. 使用的约定
4. 相关文档
5. CDD 介绍
6. CDD 设计建议
7. 与其他模块的接口
8. 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 应包含**版本检查**和**编译时检查**:
```c
#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 接口
**示例**
```c
/* 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 集成步骤
1. **生成**:从 BSWMD 生成配置器
2. **配置**:使用工具配置 CDD
3. **编译**:将 CDD 加入编译
4. **链接**:链接到 RTE 和 BSW
5. **测试**:单元测试、集成测试
### 8.2 集成检查清单
- [ ] CDD 的 BSWMD 完整
- [ ] 内存映射正确
- [ ] 配置参数生成正确
- [ ] 初始化顺序正确
- [ ] 与 OS 任务/中断集成正确
- [ ] 开发错误处理集成(Det
- [ ] 运行时错误处理集成(Dem
- [ ] 模式管理集成(BswM/ComM/EcuM
- [ ] 测试覆盖完整
---
## 翻译说明
- 本文档为**指南性文档(EXP)**,提供 CDD 设计与集成的最佳实践
- CDD 是 AUTOSAR 中**最灵活**的 BSW 类型,可绕过标准架构直接访问硬件
- 设计 CDD 时应权衡灵活性与可维护性
---
*翻译:opencode-translator / Step 3 P0 批量翻译*