全部学习汇总: ​https://github.com/GreyZhang/hack_autosar

       继续学习AUTOSAR,看一下官方文档。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_数据

       5.5 诊断服务映射

       汽车诊断以各种方式与应用软件和基础软件交互,这些方式可以使用 AUTOSAR 元模型进行形式化。 本章包含对这种交互形式化的描述以及适用的约束。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_autosar_02

       DiagnosticExtract 引用软件组件的用例

       这是潜在用例的列表,其中 DiagnosticExtract 在 CompositionSwComponentTypes 或 AtomicSwComponentTypes 的上下文中指代一般的软件组件和 PortPrototypes:

       • DiagnosticExtract 在嵌入由 rootSoftwareComposition 创建的层次结构中的 AtomicSwComponentType 的上下文中引用 PortPrototype(用于访问 dataElement)或 SwcServiceDependency。

       • DiagnosticExtract 在 AtomicSwComponentType 的上下文中引用 PortPrototype(用于访问 dataElement)或 SwcServiceDependency,该上下文嵌入在由未在任何地方聚合(暂时)的 CompositionSwComponentType 创建的层次结构中。

       • DiagnosticExtract 引用 AtomicSwComponentType 上下文中的 PortPrototype(用于访问 dataElement)或 SwcServiceDependency。

       • DiagnosticExtract 指的是 BswServiceDependency。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_ide_03

       5.5.1 诊断服务数据映射

       需要注意,Dcm 通常有权读取和写入数据元素。

       即使相应的 PortPrototype 是 PPortPrototype,这也适用。 这意味着诊断服务数据映射仅限于 SenderReceiverInterface。

       属性 DiagnosticServiceDataMapping.diagnosticDataElement 的语义

       通过属性 DiagnosticServiceDataMapping.diagnosticDataElement,可以指定 Dcm 可以访问由 SenderReceiverInterface 键入的 PortPrototype 中的 dataElement。

       这种类型的数据访问适用于诊断服务 ReadDataByIdentifier (0x22) 和 WriteDataByIdentifier (0x2E)。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_数据类型_04

       同时存在属性 DiagnosticServiceDataMapping.diagnosticDataElement 和 DiagnosticDataByIdentifier.dataIdentifier

       DiagnosticServiceDataMapping.diagnosticDataElement 也应由角色 dataIdentifier.dataElement.dataElement 中的 DiagnosticDataByIdentifier 聚合。

       请注意,[constr_1343] 仅适用于方法学中的步骤,其中,DiagnosticExtract 被认为是完整的,可以导出 Dcm 和 Dem 的配置。 任何中间步骤,例如从 OEM 到一级供应商的移交实际上并不强制执行 [constr_1343]。

       换句话说,[constr_1343] 确保在 DiagnosticServiceDataMapping 和相应的 DiagnosticRead DataByIdentifier 或 DiagnosticWriteDataByIdentifier 之间存在连接。

       只有这样,诊断服务才能完全可用。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_基础软件_05

       属性 DiagnosticServiceDataMapping.mappedDataElement 和 DiagnosticServiceDataMapping.diagnosticDataElement 的数据类型识别条件。

       DiagnosticServiceDataMapping.mappedDataElement 和DiagnosticServiceDataMapping.diagnosticDataElement 均应由以下选项之一键入:

       • ApplicationPrimitiveDataType,其中属性类别的值设置为VALUE。

       • ImplementationDataType,其中属性类别的值设置为VALUE 或TYPE_REFERENCE,最终解析为属性类别设置为VALUE 的ImplementationDataType。

       换句话说,[constr_1344] 要求DiagnosticServiceDataMapping.mappedDataElement3 和DiagnosticServiceDataMapping.diagnosticDataElement 都应按原始数据类型进行输入。

       有关数据类型类别值含义的详细说明,请参阅 [9]。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_autosar_06

       这代表了定义诊断服务到软件组件的映射的能力。 这种服务映射适用于 SenderReceiverInterfaces 的使用。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_autosar_07

       DiagnosticDataElement 不应(最终)由 DiagnosticRoutine 聚合

       由 DiagnosticServiceDataMapping 引用的 DiagnosticDataElement 不应(最终)由 DiagnosticRoutine 聚合。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_数据类型_08

       Dem 使用 DiagnosticServiceDataMapping

       这是 Dem 使用 DiagnosticServiceDataMapping 的一个用例,以便从 ApplicationSwComponentType 中的 dataElements 获取 DiagnosticExtendedDataRecord 的元素。

       因此,[constr_1345] 并没有在 DiagnosticServiceDataMapping 的上下文中故意排除 DiagnosticExtendedDataRecord 对 DiagnosticDataElement 的聚合。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_数据类型_09

       5.5.2 诊断服务软件映射

       诊断服务软件映射仅限于ClientServerInterface 或直接函数调用(在基础软件或复杂驱动程序的情况下)。

       DiagnosticServiceSwMapping 的目的

       已引入元类 DiagnosticServiceSwMapping 以支持在给定诊断服务的定义与 SwcServiceDependency(如果该服务适用于应用程序软件)或 BswServiceDependency(如果该服务适用于基础软件)之间创建关系。

       需要根据封闭的 AtomicSwComponentType 的上下文使用对目标 SwcServiceDependency 的适用引用形式。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_基础软件_10

              图 5.25:Dcm 服务软件映射

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_autosar_11

       这代表了定义诊断信息(此时没有办法变得更具体的语义)到软件组件之间的映射的能力。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_数据_12

       这代表了定义诊断服务到软件组件的映射的能力。 这种服务映射适用于 ClientServerInterfaces 的使用。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_数据_13

       BswServiceDependency 需要充当引用的目标

       如图 5.25 所示,DiagnosticServiceSwMapping.mappedBswServiceDependency 的意图是以与诸如DiagnosticServiceSwMapping.mappedFlatSwcServiceDependency相同的方式引用 BswServiceDependency。但是,BswServiceDependency 不是从元类 Referrable 派生的,因此永远不会成为像 DiagnosticServiceSwMapping.mappedBswServiceDependency 这样的引用的目标。

       解决此问题的方法是定义元类 BswServiceDependencyIdent,它继承自 IdentCaption,而 IdentCaption 又继承自 Referrable。

       那么,通过在角色ident中的BswServiceDependency聚合BswServiceDependencyIdent,BswServiceDependency就可以事实上成为引用的目标,从而使DiagnosticServiceSwMapping.mappedBswServiceDependency的原始思路变得可行。

       请注意,介绍 [TPS_DEXT_01044] 尽管危险地接近黑客攻击,但对于保持 AUTOSAR XML 模式完全向后兼容是必要的。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_ide_14

       换句话说,如果 BswServiceDependency 被更新为从 Referrable 继承,结果将是所有包含实例 BswServiceDependency 的现有 AUTOSAR 模型将突然变得无效,因为 Referrable.shortName 是 AUTOSAR XML 模式中的强制性属性。

       创建此元类是为了添加成为非Referrable BswServiceDependency 引用目标的能力。

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_基础软件_15

       DiagnosticServiceSwMapping.serviceInstance 的允许值

       DiagnosticServiceSwMapping 的适用性仅限于预定义的诊断服务集。

       根据 AUTOSAR 标准的规定,DiagnosticServiceSwMapping.serviceInstance 应仅指向 DiagnosticServiceInstance 的以下子类:

       • DiagnosticRoutine

       • DiagnosticSecurityAccess

       • DiagnosticReadDataByIdentifier

       • DiagnosticWriteDataByIdentifier

       • DiagnosticIOControl

836_AUTOSAR_TPS_DiagnosticExtractTemplate14_诊断服务映射_基础软件_16

       DiagnosticServiceSwMapping 属性的存在

       对于任何给定的 DiagnosticServiceSwMapping,应存在一个且仅一个以下引用:

       • DiagnosticServiceSwMapping.mappedFlatSwcServiceDependency

       • DiagnosticServiceSwMapping.mappedSwcServiceDependency

       • DiagnosticServiceSwMapping.mappedBswServiceDependency

       [constr_1347] 在进一步的澄清中,反映了一个事实,即最多单个 SwcServiceDependency 可以被一个 DiagnosticServiceSwMapping 引用,并且这个 SwcServiceDependency 不能同时被mappedSwcServiceDependency 和mappedFlatSwcServiceDependency 标识。

       这样,诊断服务映射部分的就看完了。主要包括数据的映射以及软件的映射。看着多少有点头晕,也很容易理解,这是工具设计的指南而不是软件设计的指南。我看这部分,其实科普的意义大于实际的指点。