跳转至

Debug Trace Profile

1. 文档范围

调试与跟踪能够实现 ECU 软件的高效开发、集成、优化和验证。为了分析多个方面——尤其是时序方面——将调试和跟踪数据与 ECU 的调度关联起来变得至关重要。这需要关于任务、中断和可运行实体(Runnable)的知识,换句话说,需要对操作系统的感知(「OS 感知」(OS awareness))。

工具链的良好交互提供了从模型到硬件再返回的完整双向工程——覆盖多个软件层级和 V 模型的多个阶段。

ARTI(「AUTOSAR Run-Time Interface」,AUTOSAR 运行时接口)的目标是一种接口描述,它允许以支持不同视图(例如 OS、BSW、RTE、模型、用户数据和用户自定义视图)的灵活感知方式调试和跟踪 AUTOSAR 系统。

具体而言,该接口应使工具能够执行:

  • 调试
  • 跟踪
  • 时序测量
  • 剖析

本需求文档的主要关注点是 ARTI 钩子(ARTI hooks)的格式以及导出的 ARTI 描述。

2. 所用约定

2.1. 文档约定

AUTOSAR 文档中需求的表述遵循约束 TPS_STDT_00078 规定的表格,见 Standardization Template 的「Support for Traceability」章([1])。

需求的表达应使用约束 TPS_STDT_00053 规定的义务表达动词形式,见 Standardization Template 的「Support for Traceability」章([1])。

2.2. 需求指南

暂不适用,包括其子章节:

  • 2.2.1 需求质量
  • 2.2.2 需求标识
  • 2.2.3 需求状态

3. 缩略语和缩写

以下收录与 RS_ARTI 相关、且未被 AUTOSAR 术语表 [2] 收录的缩略语和缩写。

ARTI

AUTOSAR 运行时接口(AUTOSAR Run Time Interface)

OS

操作系统(Operating System)

4. 需求规格

本章描述驱动 ARTI 定义工作的全部需求。

4.1. 功能概述

生成 AUTOSAR 模块的工具(例如 OS、RTE 等)必须输出关于该模块的内部信息。该信息应允许调试和跟踪该模块的行为。其他工具将收集一个 ECU 的全部 ARTI 信息,并允许选择要跟踪的特定条目,以及为特定跟踪通道(例如内部缓冲区、硬件跟踪缓冲区等)创建跟踪钩子文件。构建环境创建最终的应用程序,然后可在 ECU 中使用。调试和跟踪工具可以读入 ARTI 信息并具备「AUTOSAR 感知」,为开发者提供额外的调试和跟踪特性。

ARTI 应能与编译器创建的调试信息协同工作。这意味着每个支持 ARTI 的模块都需要在编译时带有调试信息,并且 ARTI 信息必须使用编译器创建的符号名称。

ARTI 引入钩子。为了使用它们,必须将其并入模块代码中——或者静态地放入其中,或者必须对它们进行配置。

ARTI 由以下功能元素组成:

  • ARTI 模块描述——「ARTI 模块描述」(ARTI Module Description)以 ARXML 文件的形式输出,由 ARTI 模板标准化。
  • ARTI 钩子实现——ARTI 钩子在 AUTOSAR 模块的源代码中实现。

4.2. 面向 ARTI 模板的功能需求

本节中的需求均涉及 ARTI 模板应如何定义。

4.2.1. ARTI 描述应为 ECU 全部 ARTI 信息的根

描述 ARTI 模板应是特定 ECU 全部 ARTI 相关信息的骨干。
理由 为访问 ECU 的运行时信息,工具需要有一个可供查找信息的引用。所有进一步的详细信息可通过跟随该引用的内容找到。注意,本需求并不意味着将所有相关信息复制到模板中。可以包含对其他模板中元素的引用,以避免模型中出现冗余元素。
依赖项 ARTI 工具还需要能够读取其他模板(特别是 ECU 模板),如果 ARTI 描述引用了它们。
用例 ARTI 模板包含关于如何对通用类和实例建模的规范,无需修改模板即可指定对 ECU 任意对象的访问。模板包含对其他模板和组件的引用,以便也能使用这些信息。
支撑材料 -

4.2.2. ARTI 描述应支持通用对象

描述 通用对象定义任意对象。
理由 通用对象是不属于另一个模块的任意对象。该定义应能够定义对象(「类」)的布局以及特定实例的值。
依赖项 -
用例 通用对象定义定义了任意对象在调试器中或跟踪时的呈现方式。
支撑材料 -

4.2.3. ARTI 描述应支持通用对象的类定义

描述 通用对象的类定义定义任意对象的布局。
理由 不属于另一个 AUTOSAR 模块的对象必须向 ARTI 消费工具定义。ARTI 模板应提供一种机制,用其名称、描述和参数定义对象布局(「类」)。
依赖项 -
用例 通用对象定义定义了任意对象在调试器中或跟踪时的呈现方式。
支撑材料 -

4.2.4. ARTI 描述应支持通用对象的实例定义

描述 通用对象的实例定义定义任意对象实例的值。
理由 ARTI 模板应定义 ARTI 消费工具如何评估对象实例的参数。
依赖项 -
用例 -
支撑材料 -

4.2.5. ARTI 描述应支持评估参数值的表达式

描述 表达式定义如何在目标上访问参数的特定值。
理由 表达式通常表示为 C 表达式。
依赖项 -
用例 表达式和值被调试器用于显示应用的当前状态。
支撑材料 -

4.2.6. ARTI 描述应支持对象参数使用的常量

描述 常量定义对象参数的值。
理由 对象参数可以是常量。该定义应提供常量的容器。
依赖项 -
用例 对象参数可以引用表达式或常量。这是常量参数的定义。
支撑材料 -

4.2.7. ARTI 描述应支持参数映射

描述 参数映射将参数的值转换为要显示的字符串。
理由 参数值可以指代特定含义(例如「状态」)。参数映射允许将该值转换为(人类可读的)字符串。
依赖项 -
用例 ARTI 消费工具使用参数映射以有意义的方式显示参数值。
支撑材料 -

4.3. 面向 ARTI 描述的功能需求

本节中的需求均涉及 ARTI 描述应如何定义。

4.3.1. ARTI 描述应遵循 ARTI 模板

描述 所有与 ARTI 相关的信息都应按照 ARTI 模板收集在 ARTI 描述中。
理由 为访问 ECU 的运行时信息,工具需要知道如何读取该信息。通过严格遵循模板,工具无需进一步的用户交互即可提取所有必要信息。
依赖项 ARTI 工具需要能够读取并理解 ARTI 模板以及可能的其他模板(例如 ECU 模板)。
用例 使用 ARTI 描述,ARTI 工具能够检测、可视化和测量 ECU 的任意对象。
支撑材料 -

4.3.2. ARTI 描述应包含通用对象的全部类定义

描述 应由 ARTI 消费工具处理的所有通用(任意)对象都应按照 ARTI 模板在类定义中定义。
理由 ARTI 消费工具需要知道模块使用的所有通用对象的布局。
依赖项 -
用例 评估通用对象的显示形式。
支撑材料 -

4.3.3. ARTI 描述应包含通用对象的全部实例定义

描述 应由 ARTI 消费工具处理的所有通用(任意)对象实例都应按照 ARTI 模板在实例定义中定义。
理由 ARTI 消费工具需要知道如何获取通用对象参数的值。
依赖项 -
用例 评估通用对象要显示的值。
支撑材料 -

4.3.4. ARTI 描述应包含评估参数值的全部表达式定义

描述 用于评估参数值的所有表达式都应按照 ARTI 模板定义。
理由 ARTI 消费工具需要知道如何从目标读取参数的值。表达式通常表示为 C 表达式。
依赖项 -
用例 评估对象参数要显示的值。
支撑材料 -

4.3.5. ARTI 描述应包含参数使用的全部常量定义

描述 参数使用的所有常量都应按照 ARTI 模板定义。
理由 对象参数可以是常量。ARTI 消费工具需要知道哪个参数是常量以及要显示哪个值。
依赖项 -
用例 评估对象参数要显示的值。
支撑材料 -

4.3.6. ARTI 描述应包含参数使用的全部参数映射

描述 参数使用的所有参数映射都应按照 ARTI 模板定义。
理由 参数值可以指代特定含义(例如「状态」)。参数映射将特定参数的值转换为(人类可读的)字符串。
依赖项 -
用例 ARTI 消费工具使用参数映射以有意义的方式显示参数值。
支撑材料 -

4.4. 面向 ARTI 钩子的功能需求

本节中的需求均涉及 ARTI 钩子应如何使用和定义。

4.4.1. ARTI 钩子应以最小侵入实现

描述 ARTI 钩子应在源代码中以尽可能小的侵入实现。
理由 ARTI 钩子将由 ARTI 消费工具扩展,可能加入影响应用运行时的额外代码。该侵入应保持尽可能小,例如通过使用 C 宏实现 ARTI 钩子。
适用平台 CP
依赖项 -
用例 钩子可以实现为 C 宏。这使宏能够轻松展开为「空」,从而完全不产生侵入或副作用。ARTI 消费工具可以选择扩展该宏,以向该工具提供信息。
支撑材料 -

4.4.2. ARTI 钩子应遵循固定格式

描述 ARTI 钩子应遵循固定格式。
理由 为使 ARTI 消费工具能够展开 ARTI 钩子,这些钩子遵循统一格式是有益的。
适用平台 CP
依赖项 §4.4.1
用例 钩子可以实现为 C 宏。这使宏能够轻松展开为「空」,从而完全不产生侵入或副作用。ARTI 消费工具可以选择扩展该宏,以向该工具提供信息。
支撑材料 -

4.4.3. ARTI 钩子应提供关于调用上下文的信息

描述 ARTI 钩子应提供关于调用上下文的信息。
理由 为确保 ARTI 钩子实现产生尽可能小的开销,ARTI 消费工具需要知道调用上下文。
依赖项 §4.4.1
用例 ARTI 消费工具可以选择扩展该宏,以在当前上下文中向该工具提供信息。这主要涉及特权级别以及中断是否被锁定。
支撑材料 -

4.4.4. ARTI 钩子应提供其所属类的名称

描述 ARTI 钩子应提供其所属类的名称。
理由 钩子应按相似功能(事件)分组为类
依赖项 §4.4.1
用例 为了提供钩子与 ARTI 消费工具之间更好的模块化,事件应分组为类(例如调度器事件或通信事件)。具体的类名在相应的平台文档中规定。
支撑材料 -

4.4.5. ARTI 钩子应提供事件的名称

描述 ARTI 钩子应提供事件的名称。这些事件应分组为类。
理由
依赖项 §4.4.1
用例 事件名被 ARTI 消费工具用于标识特定事件。事件名在相应的平台文档中规定。
支撑材料 -

4.4.6. ARTI 钩子应提供事件的参数

描述 ARTI 钩子应提供事件的参数。参数的数量由相应的事件规范规定。
理由
依赖项 §4.4.1
用例 ARTI 消费工具可能需要额外的参数来标识属于某个事件的特定对象(例如调度器实体、发送方/接收方 ID)。
支撑材料 -

5. 参考文献

[1] Standardization Template

AUTOSAR_FO_TPS_StandardizationTemplate

[2] Glossary

AUTOSAR_FO_TR_Glossary

[3] Main Requirements

AUTOSAR_FO_RS_Main

A. AUTOSAR 可追溯项变更历史

请注意,本章中的列表还包括在后续版本中已从规范中移除的需求项。这些需求项在文档中不作为超链接出现。

A.1. 本文档依据 AUTOSAR 版本 R22-11 的可追溯项变更历史

A.1.1. R22-11 中新增的需求

无

A.1.2. R22-11 中变更的需求

表A.1:R22-11 中变更的需求

标题
ARTI 钩子应以最小侵入实现
ARTI 钩子应遵循固定格式
ARTI 钩子应提供关于调用上下文的信息
ARTI 钩子应提供其所属类的名称
ARTI 钩子应提供事件的名称
ARTI 钩子应提供事件的参数

A.1.3. R22-11 中删除的需求

无

A.2. 本文档依据 AUTOSAR 版本 R23-11 的可追溯项变更历史

A.2.1. R23-11 中新增的需求

无

A.2.2. R23-11 中变更的需求

表A.2:R23-11 中变更的需求

标题
ARTI 钩子应以最小侵入实现
ARTI 钩子应遵循固定格式
ARTI 钩子应提供关于调用上下文的信息
ARTI 钩子应提供其所属类的名称
ARTI 钩子应提供事件的名称
ARTI 钩子应提供事件的参数

A.2.3. R23-11 中删除的需求

无