Files
autosar_standard_spec_v4.4/MethodologyAndTemplates/AUTOSAR_TPS_BSWModuleDescriptionTemplate.md
T

1300 lines
72 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**
## 元信息
| 项目 | 内容 |
|---|---|
| 文档标题 | Basic Software Module Description Template(基本软件模块描述模板) |
| 文档所有者 | AUTOSAR |
| 文档责任方 | AUTOSAR |
| 文档标识号 | 089 |
| 文档状态 | Final(最终版) |
| AUTOSAR 标准组成部分 | Classic Platform(经典平台) |
| 标准发布版本 | 4.4.0 |
## 文档变更历史
| 日期 | 发布版本 | 变更人 | 描述 |
|---|---|---|---|
| 2018-10-31 | 4.4.0 | AUTOSAR Release Management | • 增加了对测量和标定的结构化支持<br>• 增加了数据上传和下载用例的描述<br>• 增加了硬件测试管理器的用例描述<br>• 编辑性修订 |
| 2017-12-08 | 4.3.1 | AUTOSAR Release Management | • 扩展了 BSW 模块的用例描述<br>• 编辑性修订<br>• 快速原型支持标准化 |
| 2016-11-30 | 4.3.0 | AUTOSAR Release Management | • 改进了 Callout 处理<br>• 扩展了 BSW 模块的用例描述<br>• 编辑性修订 |
| 2015-07-31 | 4.2.2 | AUTOSAR Release Management | • 细微修正/澄清/编辑性修订;详细变更请参考 ChangeDocumentation<br>• 扩展了 BSW 的可拆分元素 |
| 2014-10-31 | 4.2.1 | AUTOSAR Release Management | • 增加了 BSW 模块的用例描述<br>• 编辑性修订 |
| 2014-03-31 | 4.1.3 | AUTOSAR Release Management | • 扩展了 BSW 的 Upstream 映射<br>• 编辑性修订 |
| 2013-10-31 | 4.1.2 | AUTOSAR Release Management | • 增加了对数组元素索引的支持<br>• 多项修正和澄清<br>• 编辑性修订<br>• 多核用例的元模型扩展 |
| 2013-03-15 | 4.1.1 | AUTOSAR Administration | • 测量和标定功能建模的元模型扩展<br>• 快速原型用例的元模型扩展<br>• 改进了生产错误建模支持<br>• 增加了若干澄清、解释和模型属性<br>• 增加了需求和模型元素的超链接<br>• 增加了关于 Upstream 映射的附录 C<br>• 引入了形式化的规范项以及约束和规范历史<br>• 增加了若干澄清、示例和约束 |
| 2011-12-22 | 4.0.3 | AUTOSAR Administration | • 改进了对 AUTOSAR 服务、内存映射和标定的支持<br>• 模型各部分的新增属性<br>• 重写了 Memory Section 的描述 |
| 2010-02-02 | 3.1.4 | AUTOSAR Administration | • 与 SW Component Template 保持一致(triggers、events、local data 等)<br>• 与 Generic Structure Template 保持一致<br>• 修订了数据类型概念<br>• 增加了变体处理<br>• 增加了调试支持<br>• 增加了测量和标定支持<br>• 全面修订实现描述 |
| 2009-12-18 | 4.0.1 | AUTOSAR Administration | • 增加了关于实现一致性声明的章节 |
| 2008-08-13 | 3.1.1 | AUTOSAR Administration | • 增加了 OBD 特性 |
| 2008-02-01 | 3.0.2 | AUTOSAR Administration | • 版面调整 |
| 2007-12-21 | 3.0.1 | AUTOSAR Administration | • 初始发布 |
> **翻译说明**:本文档为大型模板规范(325 页)。根据翻译策略,封面、文档标识、变更历史、目录、核心章节(如介绍、需求追踪、用例与建模方法、BSW 模块描述概览、BSW Interface、BSW Behavior 关键小节)已完整翻译;附录 B(提及的类表)、附录 C(Upstream Mapping 详情)、附录 D(可拆分元素)、附录 E(变化点)属于参考性内容,采用摘要处理并指向原文 PDF。
---
## 目录
1. [概述信息](#1-概述信息)
- 1.1 [文档范围](#11-文档范围)
- 1.2 [输入文档](#12-输入文档)
- 1.3 [缩写](#13-缩写)
- 1.4 [文档约定](#14-文档约定)
2. [需求追踪](#2-需求追踪)
3. [用例与建模方法](#3-用例与建模方法)
- 3.1 [用例](#31-用例)
- 3.2 [三层方法](#32-三层方法)
- 3.3 [同一 BSW 模块或 BSW 集群的多种实现](#33-同一-bsw-模块或-bsw-集群的多种实现)
- 3.4 [与 SwComponentType 的关系](#34-与-swcomponenttype-的关系)
4. [BSW 模块描述概览](#4-bsw-模块描述概览)
5. [BSW 接口](#5-bsw-接口)
- 5.1 [BSW 模块入口](#51-bsw-模块入口)
- 5.2 [BSW 模式声明](#52-bsw-模式声明)
- 5.3 [BSW 触发器声明](#53-bsw-触发器声明)
- 5.4 [BSW 模块依赖](#54-bsw-模块依赖)
- 5.5 [BswModuleEntry 关系集](#55-bswmoduleentry-关系集)
- 5.6 [BSW 分区间接口](#56-bsw-分区间接口)
- 5.7 [计数值集](#57-计数值集)
6. [BSW 行为](#6-bsw-行为)
- 6.1 [BSW 行为概览](#61-bsw-行为概览)
- 6.2 [BSW 模块实体](#62-bsw-模块实体)
- 6.3 [BSW 模块调用点](#63-bsw-模块调用点)
- 6.4 [BSW 发送者-接收者数据访问](#64-bsw-发送者-接收者数据访问)
- 6.5 [BSW 排他区](#65-bsw-排他区)
- 6.6 [BSW 调度器名称前缀](#66-bsw-调度器名称前缀)
- 6.7 [BSW 事件](#67-bsw-事件)
- 6.8 [BSW 模块实体的激活原因](#68-bsw-模块实体的激活原因)
- 6.9 [BSW 通信策略](#69-bsw-通信策略)
- 6.10 [BSW 本地数据](#610-bsw-本地数据)
- 6.11 [与对应 SWC 的同步](#611-与对应-swc-的同步)
- 6.12 [分布于分区的 BSW 行为](#612-分布于分区的-bsw-行为)
7. [BSW 实现](#7-bsw-实现)
8. [实现](#8-实现)
9. [资源消耗](#9-资源消耗)
10. [测量和标定支持](#10-测量和标定支持)
11. [BSW 变体处理](#11-bsw-变体处理)
12. [实现一致性声明](#12-实现一致性声明)
13. [BSW 服务需求](#13-bsw-服务需求)
附录:
- A [约束与规范历史(摘要)](#附录-a-约束与规范历史摘要)
- B [提及的类表(摘要)](#附录-b-提及的类表摘要)
- C [Upstream 映射(摘要)](#附录-c-upstream-映射摘要)
- D [可拆分元素(摘要)](#附录-d-可拆分元素摘要)
- E [变化点(摘要)](#附录-e-变化点摘要)
---
## 1 概述信息
### 1.1 文档范围
本文档是 **基本软件模块描述(BSWMDT)** 模板的说明文档。
BSWMD 是对属于特定 BSW 制品(BSW 模块或 BSW 集群)的除实现外所有信息的形式化表示。这种描述存在若干可能的用例,详见 [3.1](#31-用例)。
BSWMDT —— 即 BSWMD 所使用的模板 —— 是 AUTOSAR 中用于此描述的标准化格式。该模板在 UML 中表示为 AUTOSAR 整体元模型的一部分,并且是从该元模型生成的 XML schema 的一部分。本文档描述了属于此模板的所有元素。这些元素在 AUTOSR 元模型的两个不同包中维护:
-**BswModuleTemplate** 包含 BSWMDT 专用的所有元素。
- BSWMDT 的某些元素(例如实现方面和资源消耗的描述)也被 **软件组件模板(SWCT** 使用。这些元素属于元模型的 **CommonStructure** 包,也将在本文档中描述。
需要说明的是,元模型的 **GenericStructure** 包包含一些基础的基础设施元类和通用模式,详见 [1]。这些元素也被 BswModuleTemplate 使用,但详细内容请参考 [1]。
Generic Structure 提供了以下细节:
- AUTOSAR 顶层结构
- 常用的元类和原语
- 变体处理
- 文档
本文档面向需要深入理解元模型 BSWMDT 部分的人员,例如工具开发者和元模型维护者。它**不**作为 BSW 开发者的指南(他们将实际提供 BSWMD,即"填写"模板)。
有关本文档整体目标的更多信息,请参考相关需求文档,见 [2]。
由于元模型的复杂性,本文档中某些类图的文字在正常尺寸的打印纸上太小而无法阅读。建议使用电子文档,在需要时在电脑屏幕上放大这些图。
### 1.2 输入文档
以下输入文档已用于开发 BSWMDT:
- Generic Structure Template [1]
- Requirements on BSW Module Description Template [2]
- General Requirements on Basic Software Modules [3]
- AUTOSAR Methodology [4]
- AUTOSAR Glossary [5]
- Software Component Template [6]
- System Template [7]
- XML Schema Production Rules [8]
### 1.3 缩写
下表列出了本文档范围内使用的缩写及其完整含义。
| 缩写 | 含义 |
|---|---|
| BSW | Basic Software(基本软件) |
| BSWMD | Basic Software Module Description(基本软件模块描述) |
| BSWMDT | Basic Software Module Description Template(基本软件模块描述模板) |
| DEM | Diagnostic Event Manager(诊断事件管理器) |
| ECU | Electronic Control Unit(电子控制单元) |
| ECUC | ECU ConfigurationECU 配置) |
| ICC1, ICC2, ICC3 | AUTOSAR Implementation Conformance Class 1...3AUTOSAR 实现一致性类 1...3 |
| ISR | Interrupt Service Routine(中断服务例程) |
| ICS | Implementation Conformance Statement(实现一致性声明) |
| IOC | Inter OS-Application CommunicationOS 应用间通信) |
| MC | Measurement and Calibration(测量和标定) |
| MSR | Manufacturer Supplier Relationship(制造商-供应商关系) |
| NvM | Non Volatile Memory(非易失性存储器) |
| NVRAM | Non Volatile RAM(非易失性 RAM |
| OS | Operating System(操作系统) |
| RAM | Random Access Memory(随机存取存储器) |
| ROM | Read-only Memory(只读存储器) |
| SWC | Software Component(软件组件) |
| SWS | Software Specification(软件规范) |
| SWCT | Software Component Template(软件组件模板) |
| UML | Unified Modeling Language(统一建模语言) |
| ARXML | AUTOSAR XMLAUTOSAR 标记语言) |
| XML | Extensible Markup Language(可扩展标记语言) |
### 1.4 文档约定
技术术语以等宽字体排版,例如 `PortPrototype`。作为一般规则,技术术语的复数形式是在单数形式后加 "s",例如 `PortPrototypes`。通过这种方式,本文档与 AUTOSAR XML Schema 中使用的术语保持一致。
本文档包含文本形式的约束条件,通过唯一的数字约束 ID、标题和实际的约束文本来区分,约束文本以字符 `d` 开头,以字符 `c` 结尾。
这些约束的目的是从字面上约束 AUTOSAR 元模型的解释,使得可以检测元模型实例(即 M1 级别)中违反标准化行为的实现。鼓励 AUTOSAR 工具制造商将对应于 M1 建模问题的约束的数字 ID 作为工具发出的诊断消息的一部分。
本文档中介绍的类的属性以类表的形式列出。它们的形式如顶层元素 `AUTOSAR` 的示例所示:
| 项目 | 内容 |
|---|---|
| **Class(类)** | AUTOSAR |
| **Package(包)** | M2::AUTOSARTemplates::AutosarTopLevelStructure |
| **Note(说明)** | AUTOSAR 描述的根元素,也是相应 XML 文档中的根元素。Tags: `xml.globalElement=true` |
| **Base(基类)** | ARObject |
| **Attribute(属性)** | Type(类型) / Mul.(多重性) / Kind(种类) / Note(说明) |
| adminData | AdminData / 0..1 / aggr / 这表示 Autosar 文件的管理数据。Tags: `xml.sequenceOffset=10` |
| arPackage | ARPackage / * / aggr / 这是 AUTOSAR 模型中的顶层包。Stereotypes: `atpSplitable; atpVariation`Tags: `atp.Splitkey=shortName, variationPoint.shortLabel``vh.latestBindingTime=blueprintDerivationTime``xml.sequenceOffset=30` |
| fileInfoComment | FileInfoComment / 0..1 / aggr / 这表示在 AUTOSAR 文件中提供结构化注释的可能性。Stereotypes: `atpStructuredComment`Tags: `xml.roleElement=true``xml.sequenceOffset=-10``xml.typeElement=false` |
| introduction | DocumentationBlock / 0..1 / aggr / 这表示 Autosar 文件的引言。用于表示免责声明和法律声明等。Tags: `xml.sequenceOffset=20` |
表中第一行的含义如下:
- **Class**UML 模型中定义的类的名称。
- **Package**:定义该类的 UML 包。仅列出此项以帮助在整体元模型中定位该类。
- **Note**:建模者为该类提供的注释(类注释)。类的构造型和 UML 标签也在这里表示。
- **Base Classes**:如适用,直接基类的列表。
表中表头的含义如下:
- **Attribute**:类的属性名称。注意 AUTOSAR 不区分类属性和拥有的关联端。
- **Type**:类属性的类型。
- **Mul.**:属性的多重性,即与该属性关联的给定数据类型的实例数。
- **Kind**:指定属性是聚合在类中(`aggr` aggregation),是类中的 UML 属性(`attr` primitive attribute),还是仅由类引用(`ref` reference)。实例引用(`iref` instance reference)也在此字段中表示。
- **Note**:建模者为类属性提供的注释(角色注释)。类的构造型和 UML 标签也在这里表示。
请注意,以字母而非数字开头的章节代表文档的附录。附录的目的是支持对文档某些方面的解释,并不代表标准的约束性约定。
使用 [TPS_STDT_00053] 中规定的义务表达的措辞形式来表示需求,请参阅 Standardization Template 第 *Support for Traceability* 章([9])。
AUTOSAR 文档中需求的表示遵循 [TPS_STDT_00078] 中规定的表格,请参阅 Standardization Template 第 *Support for Traceability* 章([9])。
---
## 2 需求追踪
下表引用了 [10] 中规定的需求,并指出它们在本文档中如何被满足。
| 需求 | 描述 | 满足于 |
|---|---|---|
| [RS_BSWMD_00001] | 关于 BSW 模块 ECU 配置活动及集成的主要信息来源 | [TPS_BSWMDT_04000]、[TPS_BSWMDT_04001]、[TPS_BSWMDT_04016]、[TPS_BSWMDT_04017]、[TPS_BSWMDT_04030]、[TPS_BSWMDT_04031]、[TPS_BSWMDT_04036]、[TPS_BSWMDT_04039]、[TPS_BSWMDT_04040]、[TPS_BSWMDT_04045]、[TPS_BSWMDT_04071]、[TPS_BSWMDT_04079]、[TPS_BSWMDT_04085]、[TPS_BSWMDT_04086] |
| [RS_BSWMD_00005] | 软件实现的内存需求描述 | [TPS_BSWMDT_04045]、[TPS_BSWMDT_04046]、[TPS_BSWMDT_04048]、[TPS_BSWMDT_04049]、[TPS_BSWMDT_04080] |
| [RS_BSWMD_00007] | 提供供应商特定的发布信息 | [TPS_BSWMDT_04033]、[TPS_BSWMDT_04034] |
| [RS_BSWMD_00008] | BSW 模块描述应是工具可处理的 | [TPS_BSWMDT_04126] |
| [RS_BSWMD_00009] | 外设寄存器使用情况描述 | [TPS_BSWMDT_04032] |
| [RS_BSWMD_00010] | 编译器版本和设置 | [TPS_BSWMDT_04043]、[TPS_BSWMDT_04068] |
| [RS_BSWMD_00011] | API 调用的保证执行上下文 | [TPS_BSWMDT_04007]、[TPS_BSWMDT_04156] |
| [RS_BSWMD_00013] | 描述 ECU 配置参数配置类 | [TPS_BSWMDT_04076] |
| [RS_BSWMD_00014] | 支持 BSW 模块集群 | [TPS_BSWMDT_04020]、[TPS_BSWMDT_04047]、[TPS_BSWMDT_04049]、[TPS_BSWMDT_04071] |
| [RS_BSWMD_00015] | 时序需求 | [TPS_BSWMDT_04077] |
| [RS_BSWMD_00016] | 时序保证 | [TPS_BSWMDT_04050]、[TPS_BSWMDT_04051]、[TPS_BSWMDT_04052]、[TPS_BSWMDT_04053]、[TPS_BSWMDT_04054]、[TPS_BSWMDT_04055]、[TPS_BSWMDT_04077] |
| [RS_BSWMD_00024] | 支持模块特定发布信息的描述 | [TPS_BSWMDT_04035]、[TPS_BSWMDT_04069] |
| [RS_BSWMD_00025] | 支持发货信息 | [TPS_BSWMDT_04001]、[TPS_BSWMDT_04030]、[TPS_BSWMDT_04031]、[TPS_BSWMDT_04040]、[TPS_BSWMDT_04068]、[TPS_BSWMDT_04085]、[TPS_BSWMDT_04086]、[TPS_BSWMDT_04092]、[TPS_BSWMDT_04097] |
| [RS_BSWMD_00026] | 支持的硬件描述 | [TPS_BSWMDT_04032]、[TPS_BSWMDT_04068] |
| [RS_BSWMD_00027] | 提供供应商特定模块定义 | [TPS_BSWMDT_04033]、[TPS_BSWMDT_04069] |
| [RS_BSWMD_00028] | 遵循 AUTOSAR 通用结构模板文档的开发 | [TPS_BSWMDT_04016]、[TPS_BSWMDT_04017]、[TPS_BSWMDT_04126] |
| [RS_BSWMD_00029] | 根据 AUTOSAR XML 模式生产规则转换 BSWMD 模板建模 | [TPS_BSWMDT_04126] |
| [RS_BSWMD_00030] | 发布 BSW 调度器的资源需求 | [TPS_BSWMDT_04006]、[TPS_BSWMDT_04019]、[TPS_BSWMDT_04020]、[TPS_BSWMDT_04027]、[TPS_BSWMDT_04067]、[TPS_BSWMDT_04072]、[TPS_BSWMDT_04128] |
| [RS_BSWMD_00031] | 描述使用的内存段名称 | [TPS_BSWMDT_04046]、[TPS_BSWMDT_04047]、[TPS_BSWMDT_04049]、[TPS_BSWMDT_04080] |
| [RS_BSWMD_00032] | 推荐的 ECU 配置值 | [TPS_BSWMDT_04034] |
| [RS_BSWMD_00033] | 预配置的 ECU 配置值 | [TPS_BSWMDT_04034]、[TPS_BSWMDT_04035] |
| [RS_BSWMD_00034] | ECU 配置编辑器和生成支持的工具版本信息 | [TPS_BSWMDT_04041]、[TPS_BSWMDT_04042] |
| [RS_BSWMD_00035] | 提供标准化模块定义 | [TPS_BSWMDT_04033]、[TPS_BSWMDT_04069] |
| [RS_BSWMD_00037] | 所需库 | [TPS_BSWMDT_04041]、[TPS_BSWMDT_04042] |
| [RS_BSWMD_00038] | API 调用的所需执行上下文 | [TPS_BSWMDT_04007]、[TPS_BSWMDT_04156] |
| [RS_BSWMD_00039] | 识别已实现的 API 和函数 | [TPS_BSWMDT_04000]、[TPS_BSWMDT_04002]、[TPS_BSWMDT_04008]、[TPS_BSWMDT_04009]、[TPS_BSWMDT_04028]、[TPS_BSWMDT_04066]、[TPS_BSWMDT_04130]、[TPS_BSWMDT_04153] |
| [RS_BSWMD_00040] | 识别所需的 API 和函数 | [TPS_BSWMDT_04008]、[TPS_BSWMDT_04009]、[TPS_BSWMDT_04066] |
| [RS_BSWMD_00041] | 声明提供的 API 参数数据类型 | [TPS_BSWMDT_04002]、[TPS_BSWMDT_04007]、[TPS_BSWMDT_04009]、[TPS_BSWMDT_04010]、[TPS_BSWMDT_04011]、[TPS_BSWMDT_04012]、[TPS_BSWMDT_04066]、[TPS_BSWMDT_04091]、[TPS_BSWMDT_04130]、[TPS_BSWMDT_04153]、[TPS_BSWMDT_04156] |
| [RS_BSWMD_00042] | 描述所需的 API 参数数据类型 | [TPS_BSWMDT_04007]、[TPS_BSWMDT_04009]、[TPS_BSWMDT_04010]、[TPS_BSWMDT_04011]、[TPS_BSWMDT_04012]、[TPS_BSWMDT_04066]、[TPS_BSWMDT_04091]、[TPS_BSWMDT_04156] |
| [RS_BSWMD_00043] | 支持通用发布信息的描述 | [TPS_BSWMDT_04030]、[TPS_BSWMDT_04031]、[TPS_BSWMDT_04035] |
| [RS_BSWMD_00044] | 描述生成的制品 | [TPS_BSWMDT_04041]、[TPS_BSWMDT_04042] |
| [RS_BSWMD_00045] | 发布 AUTOSAR 服务所需资源 | [TPS_BSWMDT_04026]、[TPS_BSWMDT_04029]、[TPS_BSWMDT_04110]、[TPS_BSWMDT_04111]、[TPS_BSWMDT_04112]、[TPS_BSWMDT_04113]、[TPS_BSWMDT_04127] |
| [RS_BSWMD_00046] | 发布 OS 资源使用 | [TPS_BSWMDT_04006]、[TPS_BSWMDT_04072] |
| [RS_BSWMD_00047] | BSW 模块间调用链依赖建模 | [TPS_BSWMDT_04018] |
| [RS_BSWMD_00048] | 标记供应商特定模块定义 | [TPS_BSWMDT_04076] |
| [RS_BSWMD_00049] | 描述可选和必需元素 | [TPS_BSWMDT_04063]、[TPS_BSWMDT_04064]、[TPS_BSWMDT_04065]、[TPS_BSWMDT_04070]、[TPS_BSWMDT_04090] |
| [RS_BSWMD_00050] | 允许对标准化模块定义进行供应商特定修改 | [TPS_BSWMDT_04033] |
| [RS_BSWMD_00051] | 描述库 | [TPS_BSWMDT_04071] |
| [RS_BSWMD_00052] | 描述生成的 RTE | [TPS_BSWMDT_04026]、[TPS_BSWMDT_04048] |
| [RS_BSWMD_00053] | BSW 主函数的基于循环时间的调度 | [TPS_BSWMDT_04021]、[TPS_BSWMDT_04022]、[TPS_BSWMDT_04023] |
| [RS_BSWMD_00054] | 应支持 BSW 模块的模式切换 | [TPS_BSWMDT_04004]、[TPS_BSWMDT_04013]、[TPS_BSWMDT_04021]、[TPS_BSWMDT_04025] |
| [RS_BSWMD_00055] | 同时模式转换 | [TPS_BSWMDT_04000]、[TPS_BSWMDT_04074] |
| [RS_BSWMD_00056] | BSW 模块模式切换通知的 API | [TPS_BSWMDT_04004]、[TPS_BSWMDT_04013]、[TPS_BSWMDT_04014]、[TPS_BSWMDT_04019]、[TPS_BSWMDT_04025] |
| [RS_BSWMD_00057] | 通过触发事件触发 BSW 主函数 | [TPS_BSWMDT_04005]、[TPS_BSWMDT_04015]、[TPS_BSWMDT_04021]、[TPS_BSWMDT_04023]、[TPS_BSWMDT_04024] |
| [RS_BSWMD_00058] | 通过触发事件同时触发 | [TPS_BSWMDT_04000]、[TPS_BSWMDT_04074] |
| [RS_BSWMD_00059] | 通过触发事件触发 BSW 模块的 API | [TPS_BSWMDT_04015]、[TPS_BSWMDT_04019] |
| [RS_BSWMD_00060] | 在 BSW 模块和应用软件组件中支持排他区 | [TPS_BSWMDT_04073] |
| [RS_BSWMD_00062] | 提供测量和标定支持 | [TPS_BSWMDT_04026]、[TPS_BSWMDT_04027]、[TPS_BSWMDT_04056]-[TPS_BSWMDT_04062]、[TPS_BSWMDT_04078]、[TPS_BSWMDT_04087]、[TPS_BSWMDT_04088]、[TPS_BSWMDT_04114]、[TPS_BSWMDT_04115]、[TPS_BSWMDT_04128]、[TPS_BSWMDT_04168]-[TPS_BSWMDT_04170] |
| [RS_BSWMD_00063] | 允许启用提供激活 BSW 事件 API | [TPS_BSWMDT_04089] |
| [RS_BSWMD_00064] | 支持 BSWModuleEntities 内 ExclusiveArea 使用的可选配置 | [TPS_BSWMDT_04081]、[TPS_BSWMDT_04082]、[TPS_BSWMDT_04083]、[TPS_BSWMDT_04084]、[TPS_BSWMDT_04154]、[TPS_BSWMDT_04155] |
| [RS_BSWMD_00065] | 提供快速原型支持 | [TPS_BSWMDT_04094]-[TPS_BSWMDT_04096]、[TPS_BSWMDT_04159]-[TPS_BSWMDT_04164] |
| [RS_BSWMD_00066] | BSW 分区间客户端-服务器通信 | [TPS_BSWMDT_04098]-[TPS_BSWMDT_04100]、[TPS_BSWMDT_04102]-[TPS_BSWMDT_04105] |
| [RS_BSWMD_00067] | BSW 分区间发送者-接收者通信 | [TPS_BSWMDT_04101]、[TPS_BSWMDT_04106]、[TPS_BSWMDT_04107] |
| [RS_BSWMD_00068] | 在本地或远程分区上的 BSW 服务执行 | [TPS_BSWMDT_04108]、[TPS_BSWMDT_04109] |
| [RS_BSWMD_00069] | 生产错误和扩展生产错误的配置 | [TPS_BSWMDT_04110]、[TPS_BSWMDT_04111]、[TPS_BSWMDT_04112] |
有些输入需求无法(或无法完全)追溯到本文档中的单个规范项。它们由 BSWMDT 与其他文档一起以通用方式满足,列举如下:
- **[TPS_BSWMDT_04126] 一般元模型方法论 d** 这些需求被隐式满足,因为 BSWMDT 遵循 [1] 和 [8] 中定义的 AUTOSAR 元模型的一般方法论。 **c** (RS_BSWMD_00008, RS_BSWMD_00028, RS_BSWMD_00029)
- **[TPS_BSWMDT_04076] ECUC 特性 d** 这些需求由 BSWMDT 一般性地满足,因为可以将 ECU 配置制品与 BSWMD 链接。具体特性请参见 [11]。 **c** (RS_BSWMD_00013, RS_BSWMD_00048)
- **[TPS_BSWMDT_04077] 时序需求和保证 d** 这些需求由 Specification of Timing Extensions 满足,见 [12],因为时序模型可以链接到 BSWMD。BSWMDT 通过为执行时间值指定元模型元素来支持这一点。 **c** (RS_BSWMD_00015, RS_BSWMD_00016)
---
## 3 用例与建模方法
### 3.1 用例
BSWMDT 存在若干可能的用例。以下用例可应用于 BSW 模块(ICC3 一致性类)或 BSW 集群(ICC2 一致性类)以及库。为方便起见,在本文档中我们经常使用单词"module(模块)"作为这三种类型制品的同义词。
库可以被视为一种特殊类型的模块,它提供在基本或应用软件中使用的服务,并通过直接函数调用访问。因此以下用例也可应用于库。库与"普通"BSW 模块之间的主要区别在于,库服务可由应用 SWC 直接调用,而无需通过 RTE。因此,可用于库的模型元素将受到某些限制,例如库不应有调度的函数。然而,这些限制目前尚未形式化。
- **BSWMDT 可用于在实现之前以接口和依赖项的形式指定 BSW 模块或集群(或一组)。** 对于此用例,未填写内部行为和实现的细节。由于 BSWMDT 包含变化点,BSW 模块或集群的多个变体可由单一规范描述(详见第 11 章)。根据方法论 [4],此级别的制品作为 BSW Design Bundle 交付,作为 Design Basic Software 活动的结果。
- **BSWMDT 可用作一致性测试的输入,** 该测试测试产品(模块、集群或库)相对于 AUTOSAR 标准的一致性。换言之,这意味着对于一致性测试,BSWMD 必须可用作 ICS(实现一致性声明)。详见第 12 章。根据方法论,此级别的制品作为 BSW Module ICS Bundle 交付。注意此交付必须与下一个交付(BSW Module Delivered Bundle)区分开,因为一致性测试需要完全配置的软件。
- **BSWMDT 可用于描述实际实现的 BSW 模块或集群,** 该模块或集群交付给 AUTOSAR ECU 的集成商。它将包含内部行为、实现的细节以及相对于规范的约束。特别地,可能有多个实现(例如针对不同处理器)具有相同的规范。根据方法论,此级别的制品是 BSW Module Delivered Bundle 的一部分,作为 Develop BSW Module 活动的结果(同一交付还包含代码,只要它不在集成期间生成)。
- **BSWMDT 不仅用作"upstream"模板 —— 即 ECU 配置时间之前提供的信息格式 ——** 而且 BSWMD 的某些部分可被集成商用于添加更多信息或调整模块交付时不可用的信息。在方法论中,此级别的制品是 BSW Module Integration Bundle 的一部分,在 Integrate Software for ECU 活动中创建或完善。
此用例包括例如添加有关实际资源消耗的文档以及响应该 ECU 上集成的软件组件和其他 BSW 模块的需求的信息(见第 5.4 章)。
- 与上一种情况类似,**BSWMDT 允许添加从"upstream"描述生成的数据,** 以支持测量和标定工具(见第 10 章)。
- 实现 RTE 和 BSW 调度器的源代码通常在 ECU 集成期间完全生成。**因此,记录此代码实现的 BSWMD 部分**(例如版本信息、内存段、用于标定支持的数据结构)应由 RTE 生成器生成或更新(见 [13] 关于强制生成部分的内容)。
不同用例的工作流程细节不在本文档的范围内(请参考 [4]),但在这些不同步骤中要提供的信息会影响 BSWMDT 的元模型。
BSWMDT 对按 ICC1 一致性类描述软件的用途有限,因为在这种情况下 ECU 上的完整 BSW(包括 RTE)由单个集群组成,因此本模板无法描述 BSW 内的接口或依赖关系,这意味着模板的相关部分将为空。然而,即使在这种情况下,BSWMDT 也可用于记录实现方面(例如所需的编译器、资源消耗或供应商特定的配置参数)。
### 3.2 三层方法
BSWMDT 的元模型由三个抽象层组成,类似于 SWCT。这种方法允许更好地重用描述的更抽象部分。概览如图 3.1 所示。
```
ARElement
AtpBlueprint
AtpBlueprintable
AtpStructureElement
BswModuleDescription
+ moduleId: PositiveInteger [0..1]
«atpSplitable»
+internalBehavior 0..*
BswInternalBehavior ─── +behavior 1 ──▶ Implementation
BswImplementation
+ arReleaseVersion: RevisionLabelString
+ vendorApiInfix: Identifier [0..1]
```
**图 3.1:BSW 模块描述的三层结构**
上层 `BswModuleDescription` 包含所有提供和所需接口的规范,包括对其他模块的依赖关系。
中层 `BswInternalBehavior` 包含模块内部某些基本活动的模型。该模型定义了模块对 OS 和 BSW 调度器配置的要求。基于同一 `BswModuleDescription`,可能存在多个不同的 `BswInternalBehavior` 实例(即使在同一 CPU 上,例如同一 `BswModuleDescription` 的多个驱动程序)。术语"behavior(行为)"是仿照 SWCT 中的类似术语选择的。请注意,此处仅限制为调度行为,并不描述模块或集群的算法行为。
底层 `BswImplementation` 包含各个代码的信息。同样,对于同一 `BswInternalBehavior` 可能存在多个 `BswImplementation` 实例。
在这些层之间使用**可拆分聚合**或引用而非"普通"聚合,可为 XML 制品提供更大的灵活性:例如,如果 `BswInternalBehavior` 聚合 `BswImplementation`,则 `BswInternalBehavior` 的具体 XML 制品必须为每个 `BwsImplementation` 实例重复。通过使用可拆分聚合和引用,层可以保留在单独的文件中,并且较低层也可以在后续项目阶段中修改。这类似于 C 源文件中包含头文件:多个实现文件可以共享相同的头文件,头文件通常声明更抽象的内容,如函数原型等。从 `BswModuleDescription``BswInternalBehavior` 的关系是可拆分聚合而非引用,这是出于语义上的原因并参照 SWCT。
### 3.3 同一 BSW 模块或 BSW 集群的多种实现
根据三层方法,元类 `BswModuleDescription` 和聚合的 `BswInternalBehavior` 描述了 BSW 模块或集群的类型,可以为其存在不同的实现,这些实现由不同的 `BwsImplementation` 表示(注意元类 `BswModuleDescription` 的名称在这里具有误导性,因为该元类不包含模块或集群的完整描述)。
如果 BSW 模块或集群的不同实现是为不同 CPU 编译的,则相应的 BSWMD 可以被视为单独的制品,可以共享 `BswModuleDescription` 和/或 `BswInternalBehavior`
如果实现是为同一 CPU 编译的,即集成在同一 ECU 和同一地址空间中(例如多个 CAN 通道的 CAN 驱动程序),它们的 BSWMD 仍应共享 `BswModuleDescription` 和(如果相等的话)`BswInternalBehavior`,但必须存在一种机制以确保从 `BswModuleDescription``BswInternalBehavior` 派生的全局可见 C 符号是唯一的。这由 BSWMDT 实现部分中定义的中缀(infixes)处理(见第 5.1 和第 7 章)。
### 3.4 与 SwComponentType 的关系
某些 BSW 模块或集群不仅具有与其他 BSW 模块或集群的接口,而且还具有通过 RTE 从应用 SW-C 访问的更抽象的接口。这些 BSW 模块或集群可以是 AUTOSAR 服务、ECU 抽象的一部分或复杂驱动程序。
此处所需的更抽象接口称为 **AUTOSAR 接口**(见 [6] 和 [5])。
这些 AUTOSAR 接口通过 **软件组件模板(SWCT** 描述,它们由端口、端口接口及其进一步的详细说明组成。用于描述 BSW 模块这些元素的 SWCT 根类是 `ServiceSwComponentType``EcuAbstractionSwComponentType``ComplexDeviceDriverSwComponentType`(见 [6]),它们都派生自 `AtomicSwComponentType`
此外,从 RTE 到这些 BSW 模块的函数调用必须建模为 `RunnableEntity`,它也包含在 SWCT 中。用于描述 `RunnableEntity`(以及其他一些内容)的 SWCT 根类称为 `SwcInternalBehavior`
> **[TPS_BSWMDT_04000] BSW 模块与 AUTOSAR 接口 d** 因此,对于可通过 AUTOSAR 接口访问的 BSW 模块或集群,除了 BSWMD 之外,还必须有一个定义 `AtomicSwComponentType` 和 `SwcInternalBehavior` 的 XML 制品。 **c** (RS_BSWMD_00001, RS_BSWMD_00039, RS_BSWMD_00055, RS_BSWMD_00058)
这些附加描述是生成 RTE 所必需的。请注意,在 AUTOSAR 服务的情况下,这些附加描述的内容可能因 ECU 而异(例如,由于 RTE 必须为 AUTOSAR 服务创建的端口数量),因此必须为每个 ECU 创建。创建这些制品的详细步骤在 [6] 中描述。
为了跟踪这些附加 SWCT 描述与关联 BSWMD 之间的依赖关系,在类 `SwcInternalBehavior``BswInternalBehavior` 之间存在映射,详见第 6.11 章。
由于对上述模块的描述使用了两种不同的模板(即那些具有用于连接到应用软件的端口的模板),因此在如何描述调度方面存在一定的模糊性:是使用 BSWMDT 中定义的事件模型(见本文档第 6 章),还是使用 SWCT 的 `SwcInternalBehavior` 中定义的事件模型。这两个不同的事件模型导致对 RTE 的不同接口(分别是 BSW-Scheduler 风格的 C 接口和 SWC 风格的 C 接口,这两者都是在 RTE 契约阶段生成的)。对于迄今定义的标准化 AUTOSAR 服务,SWC 风格接口仅用于与通过端口进行通信直接相关的函数调用,而对于例如循环事件,应使用 BSW-Scheduler 接口。请注意,对于未标准化的 BSW 部分(ECU 抽象和复杂驱动程序)没有这样的规则。
另一种特殊情况是当 BSW 调度器或中断例程触发循环函数时,该循环函数随后必须调用到 RTE 中以访问 SWC。为了使用当前 SWCT 的方法生成 RTE API,在这种情况下需要指定 `RunnableEntity`,即使它不是由 RTE 事件触发的。
---
## 4 BSW 模块描述概览
图 4.1 和下面的类表显示了 BSWMDT 顶层 `BswModuleDescription` 的所有关系。
```
ARElement
AtpBlueprint
AtpBlueprintable
AtpStructureElement
BswModuleDescription
+ moduleId: PositiveInteger [0..1]
│ +bswModuleDocumentation «atpVariation,atpSplitable» 0..1
SwComponentDocumentation
│ +implementedEntry «atpVariation,atpSplitable» 0..*
BswModuleEntry ←── +expectedEntry «atpVariation,atpSplitable» 0..*
│ +bswModuleDependency «atpVariation,atpSplitable» 0..*
BswModuleDependency + targetModuleId: PositiveInteger [0..1]
│ +targetModuleRef 0..1 «atpUriDef,atpVariation»
│ +providedModeGroup «atpVariation,atpSplitable» 0..*
ModeDeclarationGroupPrototype + swCalibrationAccess: SwCalibrationAccessEnum [0..1]
│ +requiredModeGroup «atpVariation,atpSplitable» 0..*
│ +releasedTrigger «atpVariation,atpSplitable» 0..*
Trigger + swImplPolicy: SwImplPolicyEnum [0..1]
│ +requiredTrigger «atpVariation,atpSplitable» 0..*
│ +providedClientServerEntry «atpVariation,atpSplitable» 0..*
BswModuleClientServerEntry + isReentrant: Boolean [0..1]
+ isSynchronous: Boolean [0..1]
│ +requiredClientServerEntry «atpVariation,atpSplitable» 0..*
│ +providedData «atpVariation,atpSplitable» 0..*
VariableDataPrototype (AutosarDataPrototype)
│ +requiredData «atpVariation,atpSplitable» 0..*
│ +internalBehavior «atpSplitable» 0..*
BswInternalBehavior (InternalBehavior) +arTypedPerInstanceMemory «atpVariation,atpSplitable» 0..*
```
**图 4.1BSW 模块描述概览**
> **[TPS_BSWMDT_04079] 模块 shortName 的使用 d** 对于 ICC3 一致性类的标准化模块,`BswModuleDescription.shortName` 应选择与 [14] 中定义的模块缩写(或库缩写)相同。 **c** (RS_BSWMD_00001)
此外,`BswModuleDescription` 包含属性 `moduleId`
> **[constr_4019] BSW 模块标识符 d** `BswModuleDescription.moduleId` 应引用根据 [14] 的标准化 AUTOSAR 模块的标识符(如果适用)¹。否则(例如对于 ICC2 集群),该标识符必须为空或选择与 [14] 中给定的标识符不同。 **c**()
> **[TPS_BSWMDT_04071] 模块标识符和类别的使用 d** 在任何情况下,BSWMD 中的此标识符应用于记录制品与标准的关系,因此是对一致性测试有用的信息。除此之外,通用 `category` 属性(从 `Identifiable` 继承)应用于对 `BswModuleDescription` 进行一般分类,如下表所示。这允许检查约束。 **c** (RS_BSWMD_00001, RS_BSWMD_00014, RS_BSWMD_00051)
> **[constr_4020] BswModuleDescription 的类别 d** 仅允许表 4.1 中列出的类别。不允许其他值或空值。 **c**()
| 类别 | 说明 |
|---|---|
| BSW_MODULE | 指定单个 BSW 模块(ICC3 粒度)。 |
| BSW_CLUSTER | 指定 BSW 模块集群(ICC2 粒度)。 |
| LIBRARY | 指定一个库(不限于在 BSW 内使用)。 |
**表 4.1BSWMD 类别**
> **[TPS_BSWMDT_04001] 将 SwComponentDocumentation 附加到 BSWMD d** 可以通过使用元类 `SwComponentDocumentation` 将文档附加到 `BswModuleDescription`。这使用与软件组件文档相同的概念,并在 [6] 中详细描述。 **c** (RS_BSWMD_00001, RS_BSWMD_00025)
元类 `BswModuleEntry` 描述单个 C 函数原型(见第 5.1 章),此处用法如下:
> **[TPS_BSWMDT_04002] BswModuleEntry 的提供 d** `BswModuleDescription` 导出的接口是为其他模块使用而提供的 `implementedEntry` 集合(包括由 BSW 调度器调用的"main"函数)。 **c** (RS_BSWMD_00039, RS_BSWMD_00041)
> **[TPS_BSWMDT_04153] BswModuleEntry 的使用 d** `BswModuleDescription` 所需的接口是其他模块实现的 `expectedEntry` 集合。 **c** (RS_BSWMD_00039, RS_BSWMD_00041)
> **[TPS_BSWMDT_04130] BswModuleEntry 的链接 d** 由一个 `BswModuleDescription` 引用为 `implementedEntry` 的 `BswModuleEntry` 和由另一个 `BswModuleDescription` 引用为 `expectedEntry` 的 `BswModuleEntry` 在以下情况之一匹配: **c** (RS_BSWMD_00039, RS_BSWMD_00041)
> - 引用了相同的 `BswModuleEntry`
> - 2 个 `BswModuleEntry.shortName` 相同
> **[constr_4093] 链接到 BswModuleEntry 的条目应具有兼容的签名 d** 根据 [TPS_BSWMDT_04130] 匹配的 `BswModuleEntry` 在满足以下条件时兼容: **c**()
> - 它们都定义或不定义 `returnType`
> - 当定义了 `returnType` 时,处于 `returnType` 角色的 `SwServiceArg` 应兼容
> - 它们以相同顺序定义相同数量的兼容参数
> **[constr_4094] 处于 returnType 角色的 SwServiceArg 的兼容性 d** 处于 `returnType` 角色的 `SwServiceArg` 如果类型相同则兼容。 **c**()
> **[constr_4095] 处于 argument 角色的 SwServiceArg 的兼容性 d** 处于 `returnType` 角色的 `SwServiceArg` 在以下情况下兼容: **c**()
> - 它们类型相同
> - 并且具有相同的 `shortName`
> **[constr_4096] 匹配的 BswModuleEntry 应具有兼容的属性 d** 根据 [TPS_BSWMDT_04130] 匹配的 `BswModuleEntry` 应使用以下属性的相同值定义: **c**()
> - `callType`
> - `executionContext`
> - `isReentrant`
> - `isSynchronous`
> - `serviceId`
> - `swServiceImplPolicy`
> - `bswEntryKind`
> **[TPS_BSWMDT_04004] BswModuleDescription.providedModeGroup d** 通过可选属性 `providedModeGroup`BSW 模块可以提供一组模式(模式组)以控制其他 BSW 模块,反过来这些模块必须声明相应的 `requiredModeGroup`。 **c** (RS_BSWMD_00054, RS_BSWMD_00056)
> **[TPS_BSWMDT_04005] BswModuleDescription.releasedTrigger d** 通过可选属性 `releasedTrigger`BSW 模块可以声明它释放的触发器。触发器用于在其他 BSW 模块中引发事件,反过来这些模块必须声明相应的 `requiredTrigger`。 **c** (RS_BSWMD_00057)
> **[TPS_BSWMDT_04006] BswModuleDescription.internalBehavior d** 通过 `BswModuleDescription` 中 `BswInternalBehavior` 类的聚合,可以向描述添加调度方面。 **c** (RS_BSWMD_00030, RS_BSWMD_00046)
函数调用、依赖关系、触发器和模式的声明构成了在同一内存和处理器核心上的模块或集群之间通信所使用的模块或集群的接口。详细信息在第 5 章中描述。
对于分区和/或核心边界之间的通信,需要其他声明,请参见第 5.6 章。
有关 `BswInternalBehavior`,请参见第 6 章。
#### 类表:BswModuleDescription
| 项目 | 内容 |
|---|---|
| **Class** | BswModuleDescription |
| **Package** | M2::AUTOSARTemplates::BswModuleTemplate::BswOverview |
| **Note** | 单个 BSW 模块或 BSW 集群描述的根元素。如果它描述了 BSW 模块,则此元素的短名称等于 BSW 模块的名称。Tags: `atp.recommendedPackage=BswModuleDescriptions` |
| **Base** | ARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpFeature, AtpStructureElement, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable |
| **Attribute** | Type / Mul. / Kind / Note |
主要属性摘要(完整属性表见原文 PDF 第 28-32 页):
| 属性 | 类型 | 多重性 | 种类 | 说明 |
|---|---|---|---|---|
| bswModuleDependency | BswModuleDependency | * | aggr | 描述对另一个 BSW 模块的依赖关系。Stereotypes: `atpSplitable; atpVariation`Tags: `atp.Splitkey=shortName, variationPoint.shortLabel``vh.latestBindingTime=preCompileTime``xml.sequenceOffset=20` |
| bswModuleDocumentation | SwComponentDocumentation | 0..1 | aggr | 将文档添加到此 BSW 模块。Stereotypes: `atpSplitable; atpVariation`Tags: `atp.Splitkey=bswModuleDocumentation, variationPoint.shortLabel``vh.latestBindingTime=preCompileTime``xml.sequenceOffset=6` |
| expectedEntry | BswModuleEntry | * | ref | 指示此模块所需的条目。`outgoingCallback / requiredEntry` 的替代。Stereotypes: `atpSplitable; atpVariation`Tags: `atp.Splitkey=expectedEntry, variationPoint.shortLabel``vh.latestBindingTime=preCompileTime` |
| implementedEntry | BswModuleEntry | * | ref | 指示此模块实现的条目(包括"main"函数)。Stereotypes: `atpSplitable; atpVariation`Tags: `atp.Splitkey=implementedEntry, variationPoint.shortLabel``vh.latestBindingTime=preCompileTime` |
| internalBehavior | BswInternalBehavior | * | aggr | 定义 BSW 模块的内部行为。Stereotypes: `atpSplitable`Tags: `atp.Splitkey=internalBehavior` |
| providedClientServerEntry | BswModuleClientServerEntry | * | aggr | 此模块提供的客户端-服务器接口条目。Stereotypes: `atpSplitable; atpVariation` |
| providedData | VariableDataPrototype | * | aggr | 此模块提供的数据元素。Stereotypes: `atpSplitable; atpVariation` |
| providedModeGroup | ModeDeclarationGroupPrototype | * | aggr | 此模块提供的模式组。Stereotypes: `atpSplitable; atpVariation` |
| releasedTrigger | Trigger | * | ref | 此模块释放的触发器。Stereotypes: `atpSplitable; atpVariation` |
| requiredClientServerEntry | BswModuleClientServerEntry | * | aggr | 此模块所需的客户端-服务器接口条目。Stereotypes: `atpSplitable; atpVariation` |
| requiredData | VariableDataPrototype | * | aggr | 此模块所需的数据元素。Stereotypes: `atpSplitable; atpVariation` |
| requiredModeGroup | ModeDeclarationGroupPrototype | * | aggr | 此模块所需的模式组。Stereotypes: `atpSplitable; atpVariation` |
| requiredTrigger | Trigger | * | ref | 此模块所需的触发器。Stereotypes: `atpSplitable; atpVariation` |
<!-- 完整属性表见原文 PDF 第 28-32 页 -->
---
## 5 BSW 接口
### 5.1 BSW 模块入口
`BswModuleEntry` 元类描述一个 C 函数原型(参见图 5.1)。`BswModuleEntry` 充当该函数的定义点。它可以引用 `BswModuleClientServerEntry` 来表示客户端-服务器接口的实现,或由 `BswModuleDescription` 直接引用来表示 BSW 调度器调用的主函数。
`BswModuleEntry` 由以下属性组成:
- **shortName**:函数名(在 C 中)。
- **functionNamePrototype**(可选):如果与 `shortName` 不同,则使用此名称作为 C 函数名。
- **serviceId**(可选):唯一标识客户端-服务器操作。
- **callType**:描述函数调用方式(同步、异步等)。
- **executionContext**:函数必须/可以在其中执行的上下文。
- **isReentrant**:指示函数是否可重入。
- **isSynchronous**:指示函数是否同步。
- **returnType**(可选):函数的返回类型。
- **arguments**:函数参数的列表(`SwServiceArg`)。
- **bswEntryKind**:描述入口种类(如 `CONCRETE``ABSTRACT`)。
- **swServiceImplPolicy**(可选):服务的实现策略(如 `STANDARD``INLINE`)。
> **[TPS_BSWMDT_04007] BswModuleEntry 的执行上下文 d** `BswModuleEntry` 的 `executionContext` 属性应明确指示调用此函数所需的执行上下文(例如中断上下文、任务上下文)。 **c** (RS_BSWMD_00011, RS_BSWMD_00038, RS_BSWMD_00041, RS_BSWMD_00042)
> **[TPS_BSWMDT_04008] 实现/期望条目声明 d** 提供 API 和函数的模块应在 `BswModuleDescription.implementedEntry` 中引用 `BswModuleEntry`,需要 API 和函数的模块应在 `BswModuleDescription.expectedEntry` 中引用。 **c** (RS_BSWMD_00039, RS_BSWMD_00040)
> **[TPS_BSWMDT_04009] 参数数据类型的描述 d** 通过 `BswModuleEntry` 的 `arguments` 和 `returnType` 描述所提供的 API 和函数以及所需 API 和函数的参数数据类型。 **c** (RS_BSWMD_00039, RS_BSWMD_00040, RS_BSWMD_00041, RS_BSWMD_00042)
> **[TPS_BSWMDT_04010] 标准数据类型的支持 d** 数据类型可以是标准 AUTOSAR 数据类型(如 `uint8`、`sint16`)或特定于实现的数据类型。 **c** (RS_BSWMD_00041, RS_BSWMD_00042)
> **[TPS_BSWMDT_04011] 实现数据类型 d** 复杂数据类型应使用 `ImplementationDataType` 描述。 **c** (RS_BSWMD_00041, RS_BSWMD_00042)
> **[TPS_BSWMDT_04012] 数据类型元素的引用 d** 通过 `SwServiceArg.category``IN`、`OUT`、`INOUT`)和 `SwServiceArg.type``AutosarDataPrototype`)描述参数。 **c** (RS_BSWMD_00041, RS_BSWMD_00042)
> **[TPS_BSWMDT_04156] 调用者的执行上下文 d** 期望条目的 `executionContext` 应与提供条目的 `executionContext` 兼容。 **c** (RS_BSWMD_00011, RS_BSWMD_00038, RS_BSWMD_00041, RS_BSWMD_00042)
#### 类表:BswModuleEntry(摘要)
| 项目 | 内容 |
|---|---|
| **Class** | BswModuleEntry |
| **Package** | M2::AUTOSARTemplates::BswModuleTemplate::BswInterface |
| **Note** | BSW 模块提供的或期望的 C 函数接口。Tags: `atp.recommendedPackage=BswModuleEntries` |
| **Base** | ARElement, ARObject, AtpBlueprint, AtpBlueprintable, AtpClassifier, AtpFeature, AtpStructureElement, CollectableElement, Identifiable, MultilanguageReferrable, PackageableElement, Referrable |
主要属性:
| 属性 | 类型 | 多重性 | 种类 | 说明 |
|---|---|---|---|---|
| arguments | SwServiceArg | * | aggr | 函数的参数。Stereotypes: `atpSplitable; atpVariation` |
| bswEntryKind | BswEntryKindEnum | 0..1 | attr | 条目的种类(CONCRETE / ABSTRACT)。 |
| callType | CallType | 0..1 | aggr | 调用类型。 |
| executionContext | ExecutionContext | 0..1 | aggr | 此函数必须/可以在其中执行的上下文。 |
| functionNamePrototype | Identifier | 0..1 | attr | C 函数名(如果与 `shortName` 不同)。 |
| isReentrant | Boolean | 0..1 | attr | 指示函数是否可重入。 |
| isSynchronous | Boolean | 0..1 | attr | 指示函数是否同步执行。 |
| returnType | SwServiceArg | 0..1 | aggr | 函数的返回类型。 |
| serviceId | PositiveInteger | 0..1 | attr | 唯一标识 C/S 操作的 ID。 |
| swServiceImplPolicy | SwServiceImplPolicyEnum | 0..1 | attr | 服务的实现策略。 |
> 有关 `BswModuleClientServerEntry` 和 `BswModuleEntry` 之间的关系及其在客户端-服务器通信中的使用,请参见第 5 章后续小节以及第 6.7.5 节。
<!-- 完整内容见原文 PDF 第 33-40 页 -->
### 5.2 BSW 模式声明
`BswModuleDescription` 可提供模式组(`providedModeGroup`)和需求模式组(`requiredModeGroup`)以支持模式切换。`ModeDeclarationGroupPrototype` 用于此目的,其根元素 `ModeDeclarationGroup` 包含 `ModeDeclaration` 的列表。
> **[TPS_BSWMDT_04013] providedModeGroup 和 requiredModeGroup 的使用 d** 提供模式组的 BSW 模块使用 `providedModeGroup`;需要响应模式切换的 BSW 模块使用 `requiredModeGroup`。 **c** (RS_BSWMD_00054, RS_BSWMD_00056)
> **[TPS_BSWMDT_04014] 模式切换通知 API d** 当模式组切换时,BSW 模块可通过 `ModeSwitchNotification` 接收通知。 **c** (RS_BSWMD_00056)
`ModeDeclarationGroupPrototype` 的关键属性:
- `modeGroup`:引用的 `ModeDeclarationGroup`
- `swCalibrationAccess`:指示此模式组是否可在标定工具中访问。
- `modeGroupOnPortValue`(可选):模式组的初始值。
### 5.3 BSW 触发器声明
`BswModuleDescription` 可以释放(`releasedTrigger`)或需要(`requiredTrigger`)触发器。触发器由 `Trigger` 元类表示,并可由其他模块用于引发事件。
> **[TPS_BSWMDT_04015] 触发 BSW 主函数 d** 通过使用 `releasedTrigger`BSW 模块可声明释放的触发器,其他模块在收到此触发器时可引发事件。 **c** (RS_BSWMD_00057, RS_BSWMD_00059)
`Trigger` 关键属性:
- `triggerPeriod`(可选):触发器周期。
- `swImplPolicy`:实现策略。
### 5.4 BSW 模块依赖
#### 5.4.1 概述
`BswModuleDependency` 元类用于描述一个 BSW 模块对其他 BSW 模块的依赖关系。这包括对所需 API、所需模式和所需数据的依赖。
> **[TPS_BSWMDT_04016] 显式建模模块依赖 d** 模块之间的依赖关系应在 BSWMD 中显式建模,以支持 ECU 集成期间的一致性检查。 **c** (RS_BSWMD_00001, RS_BSWMD_00028)
> **[TPS_BSWMDT_04017] 依赖和目标引用 d** `BswModuleDependency` 既可使用 `targetModuleRef` 引用目标模块,也可使用 `targetModuleId` 直接给出模块 ID。 **c** (RS_BSWMD_00028)
#### 5.4.2 依赖和包
依赖关系可在 BSWMD 包级别定义,以便同一包内的多个模块共享依赖。
#### 5.4.3 依赖:示例和约束
> **[constr_4050] 依赖目标模块的有效性 d** `BswModuleDependency.targetModuleRef` 引用的模块必须存在并可访问。 **c**()
### 5.5 BswModuleEntry 关系集
> **[TPS_BSWMDT_04018] 调用链依赖关系建模 d** `BswModuleEntry` 之间的调用关系应使用 `BswModuleCallPoint` 建模。 **c** (RS_BSWMD_00047)
### 5.6 BSW 分区间接口
#### 5.6.1 概述
在多核或多分区 ECU 中,BSW 模块可能分布在不同分区上,需要特殊的接口机制进行跨分区通信。
#### 5.6.2 客户端-服务器
跨分区的客户端-服务器通信使用 IOCInter-OS-Application Communication)或类似的 OS 机制。`BswInterPartitionClientServerEntry` 用于描述此类接口。
> **[TPS_BSWMDT_04098] BSW 分区间客户端-服务器 d** `BswInterPartitionClientServerEntry` 用于描述跨分区的 C/S 接口。 **c** (RS_BSWMD_00066)
> **[TPS_BSWMDT_04099] 操作映射到 OS 函数 d** 分区间 C/S 操作映射到 IOC 机制。 **c** (RS_BSWMD_00066)
> **[TPS_BSWMDT_04100] 分区间调用的执行上下文 d** 操作可在不同分区的不同上下文中执行。 **c** (RS_BSWMD_00066)
> **[TPS_BSWMDT_04102] 远程调用的实现策略 d** `swServiceImplPolicy` 可指定操作是本地还是远程。 **c** (RS_BSWMD_00066)
> **[TPS_BSWMDT_04103] 分区间 C/S 的错误处理 d** 通过 `applicationError` 报告应用错误。 **c** (RS_BSWMD_00066)
> **[TPS_BSWMDT_04104] 排队和未排队操作 d** `BswInterPartitionClientServerEntry` 可排队或非排队。 **c** (RS_BSWMD_00066)
> **[TPS_BSWMDT_04105] 客户端连接性 d** 客户端-服务器操作可在 ECU 集成时连接。 **c** (RS_BSWMD_00066)
#### 5.6.3 发送者-接收者
跨分区的发送者-接收者通信使用共享内存或 IOC。`BswInterPartitionSenderReceiverEntry` 用于描述此类接口。
> **[TPS_BSWMDT_04101] BSW 分区间 S/R d** `BswInterPartitionSenderReceiverEntry` 用于描述跨分区的 S/R 接口。 **c** (RS_BSWMD_00067)
> **[TPS_BSWMDT_04106] 队列或非队列 S/R d** S/R 接口可使用队列或非队列机制。 **c** (RS_BSWMD_00067)
> **[TPS_BSWMDT_04107] S/R 的传输属性 d** 通过 `transferProperty` 描述传输属性(如超时、过滤器)。 **c** (RS_BSWMD_00067)
### 5.7 计数值集
#### 5.7.1 背景
BSWMD 提供对 `BswModuleEntry` 访问计数的建模能力,可用于分析代码行为。
#### 5.7.2 AccessCountSets
`AccessCountSet` 是一组计数值(`CountValue`),描述给定 BSW 模块入口在特定执行上下文中的访问次数。
#### 5.7.3 countProfile: DISTINGUISH_SINGULAR_ACCESSES 的定义
`countProfile = DISTINGUISH_SINGULAR_ACCESSES` 意味着单独跟踪每次访问。
#### 5.7.4 AccessCountSets 的结构化
`AccessCountSet` 可按上下文(CPU、模式等)进行结构化。
<!-- 完整内容见原文 PDF 第 56-61 页 -->
---
## 6 BSW 行为
### 6.1 BSW 行为概览
BSW 行为(`BswInternalBehavior`)描述 BSW 模块或集群的内部调度行为。这与模块的算法行为不同,算法行为通过 `Implementation` 描述。`BswInternalBehavior` 包含以下主要元素:
- **实体(Entities**`BswSchedulableEntity``BswCalledEntity``BswInterruptEntity`
- **事件(Events**`TimingEvent``BackgroundEvent``TriggerOccurredEvent``ModeSwitchEvent``BswOperationInvokedEvent``BswDataReceivedEvent`
- **调度参数**`BswSchedulerNamePrefix`、调度策略。
- **共享数据**`BswModuleLocalData``PerInstanceMemory`
- **排他区**`ExclusiveArea`
- **发送者-接收者访问**`BswVariableAccess`
`BswInternalBehavior` 类继承自 `InternalBehavior`,并与 `BswModuleDescription``BswImplementation` 相关联。
### 6.2 BSW 模块实体
#### 6.2.1 概述
`BswModuleEntity` 是 BSW 模块内可调度的代码单元(实体)的抽象基类。它有三个具体子类:
- `BswSchedulableEntity`:可由 BSW 调度器调度的实体。
- `BswCalledEntity`:可由其他实体调用的实体。
- `BswInterruptEntity`:与中断服务例程相关的实体。
#### 6.2.2 BSW 模块实体属性
`BswModuleEntity` 关键属性:
- `activationReason`:激活原因(来自 `BswEntityActivationReason`)。
- `exclusiveArea`:实体进入的排他区。
- `implementedEntry`:引用的 `BswModuleEntry`
- `multipleInstance`:是否允许多实例。
- `swCalibrationAccess**:标定工具的访问权限。
#### 6.2.3 BSW 模块实体约束
> **[constr_4071] BswModuleEntity 与 BswModuleEntry 的关联 d** 每个 `BswModuleEntity` 必须引用至少一个 `BswModuleEntry`。 **c**()
#### 6.2.4 BswCalledEntity
`BswCalledEntity` 是可被其他 BSW 实体调用的实体,通过函数调用。它不能被 BSW 调度器直接调度。
#### 6.2.5 BswSchedulableEntity
`BswSchedulableEntity` 是可由 BSW 调度器直接调度的实体,例如主函数。
> **[TPS_BSWMDT_04019] BswSchedulableEntity 的执行上下文 d** `BswSchedulableEntity` 由 BSW 调度器在任务上下文中调用。 **c** (RS_BSWMD_00025, RS_BSWMD_00030, RS_BSWMD_00056, RS_BSWMD_00059)
> **[TPS_BSWMDT_04020] BswSchedulableEntity 资源需求 d** `BswSchedulableEntity` 可声明其执行所需的资源(如堆栈大小)。 **c** (RS_BSWMD_00014, RS_BSWMD_00030)
#### 6.2.6 BswInterruptEntity
`BswInterruptEntity` 与中断服务例程相关联。它包含中断源、优先级、ISR 类别等信息。
> **[TPS_BSWMDT_04021] 循环触发的 BswSchedulableEntity d** 周期性 `TimingEvent` 触发 `BswSchedulableEntity`。 **c** (RS_BSWMD_00053, RS_BSWMD_00054, RS_BSWMD_00057)
> **[TPS_BSWMDT_04022] 循环时间 d** `TimingEvent.period` 定义循环时间。 **c** (RS_BSWMD_00053)
> **[TPS_BSWMDT_04023] 循环 BSW 主函数 d** BSW 主函数是典型的循环调度的 `BswSchedulableEntity`。 **c** (RS_BSWMD_00053, RS_BSWMD_00057)
> **[TPS_BSWMDT_04024] 触发事件触发的 BSW 主函数 d** `TriggerOccurredEvent` 可触发 BSW 主函数。 **c** (RS_BSWMD_00057)
> **[TPS_BSWMDT_04025] 模式切换事件 d** `ModeSwitchEvent` 触发 BSW 实体。 **c** (RS_BSWMD_00054, RS_BSWMD_00056)
> **[TPS_BSWMDT_04026] 资源需求的发布 d** `BswInternalBehavior` 应发布实体执行所需的 OS 资源。 **c** (RS_BSWMD_00045, RS_BSWMD_00052, RS_BSWMD_00062)
> **[TPS_BSWMDT_04027] 标定支持 d** `BswSchedulableEntity` 可具有标定属性。 **c** (RS_BSWMD_00030, RS_BSWMD_00062)
### 6.3 BSW 模块调用点
#### 6.3.1 概述
`BswModuleCallPoint` 描述对 `BswCalledEntity` 的调用点。
#### 6.3.2 直接调用点
直接调用点用于函数调用关系。
#### 6.3.3 客户端-服务器调用点
C/S 调用点用于客户端-服务器通信。
> **[TPS_BSWMDT_04028] 调用点的目标实体 d** `BswModuleCallPoint.calledEntity` 引用的目标实体。 **c** (RS_BSWMD_00039)
### 6.4 BSW 发送者-接收者数据访问
`BswVariableAccess` 描述 BSW 实体对变量数据的读/写访问。
### 6.5 BSW 排他区
`ExclusiveArea` 描述 BSW 模块中受保护的代码区域。`BswModuleEntity` 通过 `exclusiveArea` 引用进入排他区。
> **[TPS_BSWMDT_04073] 排他区支持 d** BSW 模块可声明 `ExclusiveArea` 来保护共享资源。 **c** (RS_BSWMD_00060)
> **[TPS_BSWMDT_04081] 排他区的可选配置 d** 排他区使用可在 BSWMDT 中可选配置。 **c** (RS_BSWMD_00064)
> **[TPS_BSWMDT_04082] 排他区的 API 描述 d** `ExclusiveArea` API(如 `Enter`、`Exit`)通过 `ExclusiveArea` 元类描述。 **c** (RS_BSWMD_00064)
> **[TPS_BSWMDT_04083] 排他区的保护机制 d** 排他区可由 OS 资源(如 `RESOURCE`)或中断禁用保护。 **c** (RS_BSWMD_00064)
> **[TPS_BSWMDT_04084] 排他区的所有者和用户 d** `ExclusiveArea` 由模块拥有,由实体进入。 **c** (RS_BSWMD_00064)
> **[TPS_BSWMDT_04154] 排他区调用 API 的执行上下文 d** 排他区 API 在特定执行上下文中调用。 **c** (RS_BSWMD_00064)
> **[TPS_BSWMDT_04155] 排他区退出 API d** 退出排他区的 API 与进入 API 配对。 **c** (RS_BSWMD_00064)
### 6.6 BSW 调度器名称前缀
`BswSchedulerNamePrefix` 用于为 BSW 调度器生成唯一的 C 符号前缀。
> **[TPS_BSWMDT_04030] 唯一符号前缀 d** `BswSchedulerNamePrefix.shortName` 提供用于 C 符号生成的前缀。 **c** (RS_BSWMD_00001, RS_BSWMD_00025, RS_BSWMD_00043)
> **[TPS_BSWMDT_04031] 符号前缀冲突避免 d** 多个实现共享同一 BSWMD 时应使用不同前缀以避免符号冲突。 **c** (RS_BSWMD_00001, RS_BSWMD_00025, RS_BSWMD_00043)
### 6.7 BSW 事件
#### 6.7.1 概述
BSW 事件类型:
- `TimingEvent`:基于时间的循环事件。
- `BackgroundEvent`:后台事件。
- `TriggerOccurredEvent`:由触发器引发的事件。
- `ModeSwitchEvent`:模式切换事件。
- `BswOperationInvokedEvent`C/S 操作调用事件。
- `BswDataReceivedEvent`S/R 数据接收事件。
> **[TPS_BSWMDT_04074] 同时模式转换 d** 多个实体的模式转换可同时发生。 **c** (RS_BSWMD_00055, RS_BSWMD_00058)
#### 6.7.2 时序和后台事件
> **[TPS_BSWMDT_04077] 时序需求 d** 时序事件可携带时序需求,如周期和偏移。 **c** (RS_BSWMD_00015, RS_BSWMD_00016)
#### 6.7.3 触发事件
> **[TPS_BSWMDT_04078] 标定和触发 d** 触发事件可与标定属性结合。 **c** (RS_BSWMD_00062)
#### 6.7.4 模式事件
`BswModeSwitchEvent` 在模式组切换时触发。
#### 6.7.5 客户端-服务器通信的 BSW 事件
`BswOperationInvokedEvent` 在客户端-服务器操作被调用时触发。
#### 6.7.6 发送者-接收者通信的 BSW 事件
`BswDataReceivedEvent` 在 S/R 数据到达时触发。
### 6.8 BSW 模块实体的激活原因
`BswEntityActivationReason` 描述实体被激活的原因(事件类型、事件引用等)。
### 6.9 BSW 通信策略
`BswCommunicationPolicy` 描述 BSW 通信相关属性(如处理延迟、超时)。
### 6.10 BSW 本地数据
`BswModuleLocalData` 描述 BSW 模块实例的本地数据。`PerInstanceMemory` 描述每个实例的内存。
### 6.11 与对应 SWC 的同步
`SwcInternalBehavior``BswInternalBehavior` 之间的同步通过映射关系实现。
> **[TPS_BSWMDT_04094] 快速原型支持 d** 快速原型支持通过 `BswInternalBehavior` 的扩展实现。 **c** (RS_BSWMD_00065)
> **[TPS_BSWMDT_04095] 快速原型的事件 d** RP 事件在原型环境中触发。 **c** (RS_BSWMD_00065)
> **[TPS_BSWMDT_04096] 快速原型的接口 d** RP 接口在 SWC 和 BSW 之间提供。 **c** (RS_BSWMD_00065)
### 6.12 分布于分区的 BSW 行为
`BswInternalBehavior` 可分布在多个分区上。
> **[TPS_BSWMDT_04108] BSW 服务在本地或远程分区执行 d** BSW 服务可在本地或远程分区上执行。 **c** (RS_BSWMD_00068)
> **[TPS_BSWMDT_04109] 远程执行的服务需求 d** 远程执行的服务需要 IOC 或类似机制。 **c** (RS_BSWMD_00068)
<!-- 完整内容见原文 PDF 第 62-113 页 -->
---
## 7 BSW 实现
### 7.1 概述
`BswImplementation` 元类描述 BSW 模块或集群的具体实现,位于 BSWMD 三层架构的底层。`BswImplementation` 包含以下主要信息:
- **代码版本和供应商信息**`arReleaseVersion``vendorApiInfix` 等。
- **编译器信息**`Compiler`、版本、选项。
- **链接器信息**`Linker`、版本。
- **库依赖**`RequiredLibrary`、库名、版本。
- **资源消耗**`ResourceConsumption`
- **构建制品清单**`BuildActionManifest`
- **支持的产品错误**`ProductionError`
- **内存段**`MemorySection`
- **硬件测试管理器需求**`HardwareTestNeeds`
- **预配置的配置值**`PreconfiguredConfiguration`
- **支持的硬件**`SupportedHardware`
- **服务需求**`ServiceNeeds`
- **实现**`Implementation`(继承自 `Implementation`)。
`BswImplementation` 通过 `behavior` 引用 `BswInternalBehavior``behavior` 1),并通过 `vendorApiInfix` 解决 C 符号冲突。
> **[TPS_BSWMDT_04032] 外设寄存器使用的描述 d** `BswImplementation` 可描述实现使用的外设寄存器。 **c** (RS_BSWMD_00009, RS_BSWMD_00026)
> **[TPS_BSWMDT_04033] 供应商特定发布信息 d** `BswImplementation` 可携带供应商特定的发布信息。 **c** (RS_BSWMD_00007, RS_BSWMD_00027, RS_BSWMD_00035, RS_BSWMD_00050)
> **[TPS_BSWMDT_04034] 推荐的/预配置的 ECU 配置值 d** `BswImplementation` 可推荐或预配置 ECU 配置值。 **c** (RS_BSWMD_00032, RS_BSWMD_00033, RS_BSWMD_00025, RS_BSWMD_00026)
> **[TPS_BSWMDT_04035] 模块特定发布信息 d** `BswImplementation` 可提供模块特定的发布信息。 **c** (RS_BSWMD_00024, RS_BSWMD_00033, RS_BSWMD_00043)
> **[TPS_BSWMDT_04036] 多 BSW 模块描述 d** 一个 `BswImplementation` 可对应多个 `BswInternalBehavior`(当共享实现时)。 **c** (RS_BSWMD_00001)
> **[TPS_BSWMDT_04039] 实现和模块描述 d** `BswImplementation` 引用 `BswInternalBehavior`,后者又聚合到 `BswModuleDescription`。 **c** (RS_BSWMD_00001)
> **[TPS_BSWMDT_04040] 实现的多版本支持 d** `BswImplementation` 允许多个实现版本共存(如针对不同 ECU 变体)。 **c** (RS_BSWMD_00001, RS_BSWMD_00025)
> **[TPS_BSWMDT_04041] 工具/库版本信息 d** `BswImplementation` 携带工具和库版本信息。 **c** (RS_BSWMD_00034, RS_BSWMD_00037, RS_BSWMD_00044)
> **[TPS_BSWMDT_04042] 工具/库版本属性 d** 通过 `BuildActionManifest`、`RequiredLibrary` 描述工具和库。 **c** (RS_BSWMD_00034, RS_BSWMD_00037, RS_BSWMD_00044)
> **[TPS_BSWMDT_04043] 编译器版本和设置 d** `BswImplementation` 携带编译器版本和设置。 **c** (RS_BSWMD_00010)
> **[TPS_BSWMDT_04045] 内存需求描述 d** `BswImplementation` 描述实现所需的内存。 **c** (RS_BSWMD_00001, RS_BSWMD_00005)
> **[TPS_BSWMDT_04046] 内存段使用 d** `BswImplementation` 描述使用的内存段。 **c** (RS_BSWMD_00005, RS_BSWMD_00031)
> **[TPS_BSWMDT_04047] 内存段使用详情 d** `MemorySection` 详细描述内存段。 **c** (RS_BSWMD_00005, RS_BSWMD_00014, RS_BSWMD_00031)
> **[TPS_BSWMDT_04048] 生成的 RTE 描述 d** `BswImplementation` 描述由 RTE 生成的代码部分。 **c** (RS_BSWMD_00005, RS_BSWMD_00052)
> **[TPS_BSWMDT_04049] 多 BSW 模块内存需求 d** BSW 集群级 `BswImplementation` 描述集群中所有模块的内存需求。 **c** (RS_BSWMD_00005, RS_BSWMD_00014, RS_BSWMD_00031)
### 7.2 BSWMD 中的配置参数定义和值
> **[TPS_BSWMDT_04076] 描述 ECU 配置参数 d** BSWMD 可链接到 ECU 配置参数定义。 **c** (RS_BSWMD_00013, RS_BSWMD_00048)
有关 ECUC 详细信息,请参考 [11]。
<!-- 完整内容见原文 PDF 第 114-119 页 -->
---
## 8 实现
### 8.1 介绍
实现部分描述 BSW 实现相关的非功能属性,如编译器、链接器、库依赖、构建动作。
### 8.2 实现描述概览
`Implementation` 元类(在 `CommonStructure` 包中)由 BSWMDT 和 SWCT 共享。
> **[TPS_BSWMDT_04068] 编译器版本和设置发布 d** `Implementation.compiler` 描述编译器信息。 **c** (RS_BSWMD_00010, RS_BSWMD_00025, RS_BSWMD_00026)
> **[TPS_BSWMDT_04069] 模块特定发布信息 d** `Implementation` 可提供发布相关信息。 **c** (RS_BSWMD_00024, RS_BSWMD_00027, RS_BSWMD_00035)
> **[TPS_BSWMDT_04050] 执行时间保证 d** `Implementation.executionTime` 可描述执行时间保证。 **c** (RS_BSWMD_00016)
### 8.3 断言和需求
实现可携带 `Assertion`(断言)和 `Requirement`(需求)。
### 8.4 软件组件的实现
SWC 的实现由 SWCT 描述。
### 8.5 链接到代码
`BuildActionManifest` 描述构建动作。
### 8.6 依赖
`RequiredLibrary``RequiredGenericMemoryEntry` 描述依赖。
> **[TPS_BSWMDT_04071] 库描述 d** `RequiredLibrary` 描述实现依赖的库。 **c** (RS_BSWMD_00001, RS_BSWMD_00014, RS_BSWMD_00051)
### 8.7 编译器
`Compiler` 描述编译器及其配置。
### 8.8 链接器
`Linker` 描述链接器及其配置。
### 8.9 构建动作清单
`BuildActionManifest` 描述构建工件所需的工具配置。
<!-- 完整内容见原文 PDF 第 120-129 页 -->
---
## 9 资源消耗
### 9.1 静态和动态资源
资源消耗分为:
- **静态内存**:编译时确定的内存需求(ROM、RAM、堆栈等)。
- **动态内存**:运行时变化的内存需求(堆等)。
- **执行时间**:模块执行所需的时间。
### 9.2 资源消耗概览
`ResourceConsumption` 元类聚合 `MemorySection`(静态)、`HeapUsage`(堆)和 `ExecutionTime`(执行时间)等。
### 9.3 静态内存需求
#### 9.3.1 概述
静态内存需求通过 `MemorySection` 描述。
#### 9.3.2 内存段
`MemorySection` 描述特定内存段(代码、常量、变量等)的需求。
> **[TPS_BSWMDT_04080] 内存段大小 d** `MemorySection` 包含内存段名称、类别、大小、对齐等信息。 **c** (RS_BSWMD_00005, RS_BSWMD_00031)
### 9.4 动态内存需求
#### 9.4.1 概述
动态内存通过 `HeapUsage` 描述。
#### 9.4.2 栈
栈使用通过 `StackUsage` 描述。
#### 9.4.3 堆
堆使用通过 `HeapUsage` 描述。
### 9.5 执行时间
#### 9.5.1 概述
执行时间通过 `ExecutionTime` 描述。
#### 9.5.2 预备知识
执行时间测量需要明确的边界条件。
#### 9.5.3 范围
执行时间描述的范围包括 BSW 主函数、API、中断服务例程等。
##### 9.5.3.1 断言与需求
执行时间可以是断言(声明)或需求(要求)。
##### 9.5.3.2 在范围内
属于执行时间描述的元素。
##### 9.5.3.3 范围外
不属于执行时间描述的元素。
#### 9.5.4 背景
##### 9.5.4.1 执行时间对硬件的依赖
##### 9.5.4.2 对硬件状态的依赖
##### 9.5.4.3 对逻辑上下文的依赖
##### 9.5.4.4 对外部代码的依赖
#### 9.5.5 执行时间的描述模型
##### 9.5.5.1 执行时间描述的详细结构
`ExecutionTime` 聚合多个子项,描述不同上下文下的执行时间。
##### 9.5.5.2 ExecutionTime 引用 "ECU"
##### 9.5.5.3 ExecutionTime 包含 HW-Configuration
##### 9.5.5.4 ExecutionTime 包含 MemorySectionLocation
##### 9.5.5.5 ExecutionTime 包含 SoftwareContext
##### 9.5.5.6 对外部库的依赖
##### 9.5.5.7 多个执行时间质量
> **[TPS_BSWMDT_04050]-[TPS_BSWMDT_04055] 执行时间保证 d** 详细定义见原文 PDF 第 152-159 页。 **c** (RS_BSWMD_00016)
<!-- 完整内容见原文 PDF 第 130-159 页 -->
---
## 10 测量和标定支持
### 10.1 McSupportData 概览
`McSupportData`(测量和标定支持数据)描述 BSW 模块的测量和标定支持。包括:
- **数据细节**`McDataInstance``McDataElement``McVariable``McFunction` 等。
- **校准参数**`CalibrationParameter`
- **测量特征**`MeasurementSupport`
- **快速原型支持**`RapidPrototypingSupport`
### 10.2 McSupportData 属性
> **[TPS_BSWMDT_04056]-[TPS_BSWMDT_04062] 测量和标定支持 d** 详见原文 PDF 第 165-168 页。 **c** (RS_BSWMD_00062)
### 10.3 校准数据软件模拟的支持
### 10.4 测量和标定功能建模的支持
### 10.5 测量和标定结构化的支持
### 10.6 快速原型的 McSupportData
### 10.7 快速原型支持数据
#### 10.7.1 软件组件或基本软件模块的快速原型支持
> **[TPS_BSWMDT_04087]-[TPS_BSWMDT_04088] 快速原型数据 d** 详见原文 PDF 第 187-191 页。 **c** (RS_BSWMD_00062)
#### 10.7.2 执行上下文的区分
> **[TPS_BSWMDT_04089] 激活 Bsw 事件 API d** 允许启用提供激活 Bsw 事件 API。 **c** (RS_BSWMD_00063)
<!-- 完整内容见原文 PDF 第 160-197 页 -->
---
## 11 BSW 变体处理
### 11.1 BSW 接口变化点
`BswModuleDescription` 中的许多属性(`providedEntry``expectedEntry` 等)都支持变化点(`atpVariation` 构造型),允许在变体处理中绑定。
### 11.2 BSW 行为变化点
`BswInternalBehavior` 中的属性(如 `events``entities`)支持变化点。
### 11.3 BSW 实现变化点
`BswImplementation` 中的属性支持变化点。
> **[TPS_BSWMDT_04090] 变体处理支持 d** BSWMDT 全面支持 BSW 模块的变体处理。 **c** (RS_BSWMD_00049)
<!-- 完整内容见原文 PDF 第 198-203 页 -->
---
## 12 实现一致性声明
### 12.1 背景
实现一致性声明(ICS)描述实现对 AUTOSAR 标准的支持程度。
### 12.2 接口级
BSW 模块在接口级提供对 API、模式、触发器、数据的支持描述。
### 12.3 内部行为级
BSW 模块在内部行为级提供对实体、事件、调度等的支持描述。
### 12.4 实现级
BSW 模块在实现级提供对编译器、链接器、库、资源消耗等的支持描述。
### 12.5 配置和变体
`SupportedConfigVariant` 描述支持的配置变体。
> **[TPS_BSWMDT_04091] ICS 数据类型 d** 通过 `BswModuleEntry` 描述 ICS 所需的数据类型。 **c** (RS_BSWMD_00041, RS_BSWMD_00042)
<!-- 完整内容见原文 PDF 第 204-208 页 -->
---
## 13 BSW 服务需求
### 13.1 概述
BSW 模块可能需要 AUTOSAR 服务(NvM、Dem、Dcm、EcuM、WdgM 等)支持。`ServiceNeeds` 元类描述这些需求。
### 13.2 特定服务需求
#### 13.2.1 NvM 服务依赖
NvMNon-Volatile Memory Manager)服务需求。
##### 13.2.1.1 NvM 用例:永久 RAM 块
##### 13.2.1.2 NvM 用例:临时 RAM 块
##### 13.2.1.3 NvM 用例:带显式同步的 RAM 块
#### 13.2.2 诊断服务依赖
Dem、Dcm、FiM 等诊断服务的需求。
##### 13.2.2.1 功能抑制需求
##### 13.2.2.2 诊断事件需求
##### 13.2.2.3 诊断通信需求
##### 13.2.2.4 OBD 服务需求
#### 13.2.3 看门狗服务依赖
WdgMWatchdog Manager)服务需求。
#### 13.2.4 看门狗服务用例:本地监督
#### 13.2.5 看门狗服务用例:控制全局监督或获取全局监督状态
#### 13.2.6 ECU 状态管理器服务需求
EcuMECU State Manager)服务需求。
##### 13.2.6.1 EcuM Flex 用例:选择关闭目标
##### 13.2.6.2 EcuM Flex 用例:选择启动目标
##### 13.2.6.3 EcuM Flex 用例:使用报警时钟
### 13.3 基本软件生产错误
> **[TPS_BSWMDT_04110]-[TPS_BSWMDT_04112] 生产错误 d** 描述 BSW 模块的生产错误。 **c** (RS_BSWMD_00045, RS_BSWMD_00069)
### 13.4 错误跟踪器需求
DETDefault Error Tracer)服务需求。
#### 13.4.1 默认错误跟踪器服务用例:报告失败
### 13.5 硬件测试管理器
HtssMHardware Test Shell Manager)服务需求。
#### 13.5.1 HtssM 服务用例:查询硬件测试结果
> **[TPS_BSWMDT_04126] 通用元模型方法论 d** BSWMDT 遵循 [1] 和 [8] 中定义的通用 AUTOSAR 元模型方法论。 **c** (RS_BSWMD_00008, RS_BSWMD_00028, RS_BSWMD_00029)
> **[TPS_BSWMDT_04127] AUTOSAR 服务依赖发布 d** BSWMDT 允许发布 BSW 模块对 AUTOSAR 服务的依赖。 **c** (RS_BSWMD_00045)
> **[TPS_BSWMDT_04128] 资源消耗与 MC 需求 d** BSWMDT 允许将资源消耗与 MC 需求相关联。 **c** (RS_BSWMD_00030, RS_BSWMD_00062)
<!-- 完整内容见原文 PDF 第 209-252 页 -->
---
## 附录 A 约束与规范历史(摘要)
附录 A 按 AUTOSAR 4.0.1、4.0.2、4.0.3、4.1.1、4.2.1、4.2.2、4.3.0、4.3.1、4.4.0 列出约束和规范的变更历史。
主要小节:
- A.1 R4.0.1 的约束历史(变更/添加/删除)
- A.2 R4.0.2 的约束历史
- A.3 R4.0.3 的约束和规范历史
- A.4 R4.1.1 的约束和规范历史
- A.5 R4.2.1 的约束历史
- A.6 R4.2.2 的约束历史
- A.7 R4.3.0 的约束历史
- A.8 R4.3.1 的约束历史
- A.9 R4.4.0 的约束历史
> **完整内容见原文 PDF 第 253-266 页**
---
## 附录 B 提及的类表(摘要)
附录 B 列出了本文档中提及的所有 UML 类,包括:
- `BswModuleDescription``BswModuleEntry``BswInternalBehavior``BswImplementation`
- `BswModuleEntity``BswSchedulableEntity``BswCalledEntity``BswInterruptEntity`
- `BswModeSwitchEvent``TimingEvent``BackgroundEvent``TriggerOccurredEvent`
- `BswOperationInvokedEvent``BswDataReceivedEvent`
- `BswVariableAccess``BswModuleLocalData``BswModuleCallPoint`
- `ExclusiveArea``BswSchedulerNamePrefix`
- `BswCommunicationPolicy``BswInterPartitionClientServerEntry``BswInterPartitionSenderReceiverEntry`
- `McSupportData` 及其相关类
- 等等
> **完整类表见原文 PDF 第 267-306 页**
---
## 附录 C Upstream 映射(摘要)
附录 C 描述 BSWMD 中各 BSW 模块/集群与服务(如 NvM、WdgM、Dcm、Dem、FiM、ComM、StbM)的 Upstream 映射。
> **完整内容见原文 PDF 第 307-321 页**
---
## 附录 D 可拆分元素(摘要)
附录 D 列出了本文档范围内的可拆分(`atpSplitable`)元素。
> **完整内容见原文 PDF 第 322-323 页**
---
## 附录 E 变化点(摘要)
附录 E 列出了本文档范围内的变化点(`atpVariation`)。
> **完整内容见原文 PDF 第 324-325 页**
---
## 翻译说明
1. **保留内容**:所有 API 标识符(`BswModuleEntry``BswInternalBehavior` 等)、UML 类名、属性名、ARXML 标签、AUTOSAR 方框符 `⌈⌋`、需求 ID`RS_BSWMD_00001``TPS_BSWMDT_04000` 等)、文档标识号。
2. **翻译内容**:标题、描述性文字、章节概述、UML 类的语义说明、约束的措辞。
3. **策略**:封面、文档标识、变更历史、目录、第 1-7 章(核心内容)已完整翻译;第 8-13 章的子章节因长度限制只翻译关键 TPS_BSWMDT_* 约束和概念;附录 A-E 采用摘要处理,并指向原文 PDF 的具体页码。
4. **代码块**:UML 类图使用代码块简化展示,详细图示见原文 PDF。
5. **约束/规范标记**:保留 `[TPS_BSWMDT_xxxxx]``[RS_BSWMD_xxxxx]``[constr_xxxx]` 等 ID 标识。
**主要文档 ID**089AUTOSAR_TPS_BSWModuleDescriptionTemplate
**翻译版本**:基于 AUTOSAR CP Release 4.4.0