Files
autosar_standard_spec_v4.4/Libraries/AUTOSAR_SRS_Libraries.md
T

26 KiB
Raw Blame History

SRS_Libraries — 库需求规范

文档元信息
文档标题 Requirements on Libraries(库需求)
文档所有者 AUTOSAR
文档责任方 AUTOSAR
文档标识号 314
文档状态 Final(最终版)
所属 AUTOSAR 标准 Classic Platform(经典平台)
所属标准发布版本 4.4.0
发布版本 AUTOSAR CP Release 4.4.0

文档变更历史

日期 发布版本 变更人 变更说明
2018-10-31 4.4.0 AUTOSAR Release Management 编辑性修改
2017-12-08 4.3.1 AUTOSAR Release Management 编辑性修改
2016-11-30 4.3.0 AUTOSAR Release Management 移除需求 SRS_LIBS_00006;添加需求追踪章节;添加有关 64 位 CRC 的详细信息
2014-10-31 4.2.1 AUTOSAR Release Management 移除"5.1.7"章节;为 CRC 库添加多项式
2013-10-31 4.1.2 AUTOSAR Release Management 编辑性修改;缩小 SRS_LIBS_08535 的范围:仅提供当前元素
2013-03-15 4.1.1 AUTOSAR Administration 正式修订需求追踪;修复不一致的需求表;根据 TPS 标准化模板进行正式更新;将 SRS 需求链接到新功能文档
2011-12-22 4.0.3 AUTOSAR Administration 更正拼写错误:使用 E2E 代替 E2e(第 1 章第 6 页)
2010-09-30 3.1.5 AUTOSAR Administration 扩大初始文档范围为一般库需求;引入错误处理;引入 E2E profile;修订法律免责声明
2008-08-13 3.1.1 AUTOSAR Administration 修订法律免责声明;从"Requirements on CRC Routines"重命名为"Requirements on Libraries"
2007-12-21 3.0.1 AUTOSAR Administration 初始发布:从"Requirements on Memory Services"中分离出来

目录

  1. 文档范围
  2. 使用的约定
  3. 缩略语与缩写
  4. 功能概述
  5. 需求追踪
  6. 需求规范
  7. 参考文献

1 文档范围

本文档规定了对 AUTOSAR 库的需求。它适用于 AUTOSAR 规定的所有库:

库简称 描述
Mfx Mathematical FiXed point calculations(数学定点计算库)
Mfl Mathematical FLoating point calculations(数学浮点计算库)
Ifx Interpolation functions of FiXed point(定点插值函数库)
Ifl Interpolation functions of FLoating point(浮点插值函数库)
Bfx Bit handling(位处理库)
Efx Extended functions on Fixed point(定点扩展函数库)
Crc CRC routinesCRC 例程库)
E2E SW-C End-to-End Communication Protection LibrarySW-C 端到端通信保护库)

每个库都有其独立的 SWS,但本 SRS 文档适用于所有库。

对所有实现而言,遵循所有需求是强制性的。"可配置"也意味着该需求必须被满足,但此类功能如果不需要在 ECU(BSW 或 SW-C)中使用,则可以被禁用。

本文档最初专用于 CRC 例程。为了保持可追溯性,CRC 需求仍然存在,但在专门的章节中。

2 使用的约定

  • AUTOSAR 文档中的需求表示遵循 [TPS_STDT_00078] 中指定的表。

  • 在需求中,应使用以下特定语义(基于互联网工程任务组 IETF):

    本文档中的关键词 "MUST"、"MUST NOT"、"REQUIRED"、"SHALL"、"SHALL NOT"、"SHOULD"、"SHOULD NOT"、"RECOMMENDED"、"MAY" 和 "OPTIONAL" 应解释为:

    • SHALL:该词表示该定义是规范的绝对要求。
    • SHALL NOT:该短语表示该定义是规范的绝对禁止。
    • MUST:该词表示由于法律原因该定义是规范的绝对要求。
    • MUST NOT:该短语表示由于法律约束该定义是规范的绝对禁止。
    • SHOULD:该词或形容词 "RECOMMENDED" 表示在特定情况下可能存在有效理由忽略特定项目,但在选择不同方案之前必须充分理解并仔细权衡其影响。
    • SHOULD NOT:该短语或短语 "NOT RECOMMENDED" 表示在特定情况下特定行为可能是可接受的或甚至有用,但在实现任何以此标签描述的行为之前,应充分理解其影响并仔细权衡该情况。
    • MAY:该词或形容词 "OPTIONAL" 表示某项是真正可选的。一个供应商可能选择包含该项目,因为特定市场需要它,或者因为供应商认为它增强了产品,而另一个供应商可能省略同一项。不包含特定选项的实现必须准备好与包含该选项的另一实现互操作(但可能功能降低)。同样,包含特定选项的实现必须准备好与不包含该选项的另一实现互操作(当然,该选项提供的功能除外)。

3 缩略语与缩写

本文档中使用的所有技术术语(除下表所列之外)都可以在官方 AUTOSAR 词汇表 [] 中找到。

具有局部范围、因此未包含在 AUTOSAR 词汇表中的缩略语和缩写出现在下面的词汇表中。

缩写 描述
API Application Programming Interface(应用程序编程接口)。首选术语是"function"(函数)。
AR 缩写,用于代替 AUTOSAR
AR_ (前缀)
BFX Library of Bit handling(位处理库)
CRC Cyclic Redundancy check(循环冗余校验)
DET Default Error Tracer(默认错误追踪器)
E2E End to End(端到端)
EcuM ECU ManagerECU 管理器)
EFX Extended function on Fixed point(定点扩展函数)
IFL Interpolation functions of FLoating point(浮点插值函数)
IFX Interpolation functions of FiXed point(定点插值函数)
Library 可从任何模块(BSW 模块或 SW-C)调用的 API(即函数)集
MFL Mathematical FLoating point calculation(数学浮点计算)
MFX Mathematical FiXed point calculation(数学定点计算)
OS Operating System(操作系统)

4 功能概述

AUTOSAR 库为其他 BSW 模块和应用 SW-C 提供数学服务。

这些库提供可从源代码调用的 C 函数,即从 BSW 模块、SW-C、RTE 或复杂驱动程序中调用。

4.1 CRC 库

CRC 库提供用于 8 位、16 位、32 位和 64 位 CRC(循环冗余校验)计算的函数。CRC 库可在以下方面进行缩放:

  • 基于表的计算(快速,但代码大小较大)
  • 运行时计算(较慢,但代码大小较小)
  • 不同的标准 CRC 生成多项式

汽车微控制器已经支持硬件支持的 CRC 计算。

4.2 SW-C 端到端通信保护库

SW-C 端到端通信保护库(简称:E2E 库)提供用于检测安全相关 SW-C 之间(安全相关)通信中错误的功能。保护是通过保护 SW-C 之间交换的安全相关数据元素来实现的,并且保护/检查信号的责任在于直接调用 E2E 库的 SW-C(应用程序)。该库应可在 SW-C 间通信使用的任何通信堆栈上工作,目前包括 FlexRay、CAN 和 LIN。将来,当添加更多通信堆栈时,可能需要添加更多 E2E profile。

5 需求追踪

需求 描述 由以下需求满足
RS_BRF_01024 AUTOSAR 应提供公共符号的命名规则。 SRS_LIBS_00011
RS_BRF_01128 AUTOSAR 应允许在所有 BSW 模块初始化之前启动软件组件。 SRS_LIBS_00002
RS_BRF_01192 AUTOSAR 应记录使用 RTE 和 BSW 时存在的所有架构约束。 SRS_LIBS_00007
RS_BRF_01240 AUTOSAR OS 应支持 OSApplications 之间的通信。 SRS_LIBS_00003
RS_BRF_01440 AUTOSAR 服务应支持系统诊断功能。 SRS_LIBS_00013
RS_BRF_02072 AUTOSAR 应提供在汽车领域广泛使用的通用功能作为库。 SRS_LIBS_00015
RS_BRF_02080 AUTOSAR 库应使用 C 接口。 SRS_LIBS_00001, SRS_LIBS_00004, SRS_LIBS_00005, SRS_LIBS_00012
RS_BRF_02088 AUTOSAR 库功能应是可重入的。 SRS_LIBS_00003, SRS_LIBS_00009
RS_BRF_02096 AUTOSAR 应提供循环冗余校验和的校验和计算作为库。 SRS_LIBS_00008, SRS_LIBS_00016, SRS_LIBS_08518, SRS_LIBS_08521, SRS_LIBS_08525, SRS_LIBS_08526

6 需求规范

6.1 功能需求

6.1.1 配置

6.1.1.1 [SRS_LIBS_00001] 每个库函数的功能行为不应可配置

内容
Type(类型) Valid
Description(描述) 库函数的功能行为不应可配置。对于某些给定的输入(C 函数参数),函数应始终返回与函数规范中定义的相同输出。但是,内部行为可以是可配置的。例如:选择资源消耗策略,如优先考虑 CPU/RAM/ROM。但这是特定于实现的,AUTOSAR 未对其进行标准化。
Rationale(理由) 使用库函数的 SW-C 期望确定性和标准化的行为。如果 SW 集成商有可能配置和更改行为,则 SW-C 可能会产生意外反应。
Use Case(用例) 除法函数。在除以零的情况下,函数应始终返回相同的值。如果 SW 集成商有可能配置此返回值,则对于某些 SW-C 可能是正确的,但对于其他 SW-C 可能是灾难性的。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 (RS_BRF_02080)

6.1.1.2 [SRS_LIBS_00015] 应可以配置微控制器,使库代码在所有调用者之间共享

内容
Type(类型) Valid
Description(描述) 如果在给定的微控制器上启用了内存分区,则应可以配置微控制器,使库代码在共享库的所有调用者之间共享。
Rationale(理由) 这样可以减少 Flash 内存消耗。
Use Case(用例) 在分区系统中,不同分区中的 SW-C 访问同一个库。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02072)

6.1.2 初始化

6.1.2.1 [SRS_LIBS_00002] 库应在所有 BSW 模块和应用 SW-C 之前可用

内容
Type(类型) Valid
Description(描述) --
Rationale(理由) 库函数可在 ECU 初始化的最开始被调用,例如甚至可由 OS 或 EcuM 调用,因此库应就绪。
Use Case(用例) AUTOSAR OS 初始化可能调用位处理函数。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_01128)

6.1.3 正常运行

6.1.3.1 [SRS_LIBS_00004] 库的使用不应通过端口接口

内容
Type(类型) Valid
Description(描述) SW-C 应直接调用库函数,而无需通过端口 RTE 接口。要访问库 API,SW-C 应直接包含库头文件。
Rationale(理由) SW 开发人员应能自由地使用库,而不必更改 SW-C 接口描述:减少工作量和不一致性。端口+RTE 机制对于库调用不是必需的:无一致性检查、无队列、无 ECU 外部通信等。
- 使用库函数是软件设计人员的决定。它与实现相关,与 SW-C 接口无关。
- 调用库函数是一个基本操作。它不像客户端/服务器操作。
- 因为库函数经常被使用,所以应以高效方式调用。
因此,可以直接从源代码(例如 runnables)调用函数,而无需使用 RTE API。
Use Case(用例) 应用程序包含浮点算术库头文件,并在控制循环计算中调用浮点例程,无需通过 RTE。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02080)

6.1.3.2 [SRS_LIBS_00005] 每个库应提供一个具有其公共接口的头文件

内容
Type(类型) Valid
Description(描述) 每个库应提供一个具有其公共接口的头文件。此头文件应声明由库规范定义的所有公共函数原型和类型。头文件应按以下方式命名:<library short name>.h
Rationale(理由) 访问函数原型和类型;标准化头文件名称。
Use Case(用例) #include "AR_MFX.h"
Dependencies(依赖) [SRS_LIBS_00004]
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02080)

6.1.3.3 [SRS_LIBS_00009] 所有库函数都应可重入

内容
Type(类型) Valid
Description(描述) 所有库函数都应可重入,这意味着它们应能够处理多个并发的、交错的和/或并发的请求。为了使函数可重入,它(1)不应调用任何不可重入的函数,(2)不应写入任何全局或静态变量。如果应处理某些类型的数据,调用者必须创建(定义)它们并将它们作为函数参数传递。
库函数仅在调用者的上下文中、调用它的内核上、在同一保护环境中运行。
库函数只能调用库函数。
库函数是同步的,例如它没有等待点。
Rationale(理由) 避免导致效率低下的机制。
Use Case(用例) 多任务环境;每个 BSW 模块和 SW-C 将在不同任务中使用相同的函数。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02088)

6.1.3.4 [SRS_LIBS_00010] 仅当 AUTOSAR 尚未定义时,库才应在库头文件中定义其自己的特定类型

内容
Type(类型) Valid
Description(描述) 仅当 AUTOSAR 尚未在 std_types.hplatform_types.h 中定义时,库才应在库头文件中定义(typedef)其自己的特定类型。这些类型应在相应的 SWS 中通过名称和描述标识,但不标识实际实现。在公共库接口的实现中不允许新的特定于实现的类型,即 SWS 中未指定的其他类型不应存在。实现(typedef)可以不同,例如根据平台。调用者不应依赖于任何实现。对这些特定类型使用 C 运算符是禁止的。
Rationale(理由) 库可能处理 AUTOSAR 未定义的某些特定类型。为了确保代码可移植性,独立于任何特定 AUTOSAR 库实现,只允许 SWS 指定的类型。
Use Case(用例) 用于 64 位数据数学库的类型 u64、S64。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ()

6.1.3.5 [SRS_LIBS_00011] 所有函数名和类型名应以 "Library short name_" 开头

内容
Type(类型) Valid
Description(描述) 所有函数名和类型名应以 "Library short name_" 开头。
Rationale(理由) 避免与现有库冲突;在代码中快速识别 AUTOSAR 库调用。
Use Case(用例) --
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_01024)

6.1.3.6 [SRS_LIBS_00012] 应允许使用结构传递参数

内容
Type(类型) Valid
Rationale(理由) 函数调用变得更简单。如果需要一组固定参数,可以在结构中定义一次并多次使用。在某些情况下,将多个函数参数分组成一个或几个结构是有意义的:
- 当有许多参数时;
- 当某些参数可以按功能分组时。
Use Case(用例) c<br>sint16 EFX_PGOV_WIN(sint32 X, sint32 Kp, sint32 KpPos, sint32 KpNeg, sint32 WinPos, sint32 WinNeg);<br>sint16 EFX_PGOV_WIN(sint32 X, const PWin_Type * Struct);<br>
Dependencies(依赖) [SRS_LIBS_00008]:如果将参数添加到结构中,则应定义新的结构名称和新的函数名称。因此在库演进时不存在遗漏新结构字段的风险。
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02080)

6.1.4 关闭操作

6.1.4.1 [SRS_LIBS_00003] 库应在关闭之前保持可用

内容
Type(类型) Valid
Description(描述) 库应在关闭之前保持可用。库不需要关闭操作阶段。如果需要关闭操作阶段,则应发生在所有 AUTOSAR BSW 模块关闭操作之后。
Rationale(理由) 库函数可在 ECU 关闭的最晚步骤调用,例如甚至由 OS 调用,因此库应一直就绪到结束。
Use Case(用例) AUTOSAR OS 关闭操作可能调用位处理函数。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_01240, RS_BRF_02088)

6.1.5 故障操作

6.1.5.1 [SRS_LIBS_00013] 由运行时输入参数值检查产生的错误情况应在 SWS 中列出

内容
Type(类型) Valid
Description(描述) 函数应在运行时(无论在生产代码还是开发代码中)检查输入参数的值,特别是当错误值可能导致致命错误或不可预测结果的情况,前提是这些值在函数规范允许的范围内。所有错误情况应在 SWS 中列出,并且函数应返回 SWS 中规定的不可配置的值。该值取决于具体的函数和错误情况,因此逐个确定。
Rationale(理由) 避免致命错误;提供标准化行为。
Use Case(用例) 除以零、负数的平方根、超出范围、上溢、下溢等。
Dependencies(依赖) [SRS_LIBS_00001]
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_01440)

6.1.6 CRC 库

6.1.6.1 [SRS_LIBS_08525] CRC 库应支持标准生成多项式

内容
Type(类型) Valid
Description(描述) CRC 库应支持以下生成多项式:
- CRC 8-bit SAE-J850 (0x1D)
- CRC 16-bit CRC-CCITT
- CRC 32-bit Ethernet IEEE-802 (0x04C11DB7)
- CRC 32-bit 0xF4ACFB13
- CRC 64-bit ECMA 0x42F0E1EBA9EA3693
Rationale(理由) 这些多项式被认为是标准的。
Use Case(用例) - CRC 8-bit:检测 CAN/LIN/FlexRay 通信中的错误/不一致数据
- CRC 16-bit 和 32-bit:检测 NVRAM/RAM 和 FlexRay/Ethernet 通信中的错误/不一致数据
- CRC 64-bit:检测 NVRAM/RAM 和以太网/无线通信中的错误/不一致数据
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02096)

6.2 非功能需求

6.2.1 通用

6.2.1.1 [SRS_LIBS_08518] CRC 库应提供不同的计算方法,优化性能或内存使用

内容
Type(类型) Valid
Description(描述) CRC 库应提供不同的计算方法(算法),优化性能或内存使用(例如,用于运行时计算)。
Rationale(理由) 允许根据特定 ECU 要求优化代码大小或执行时间。
Use Case(用例) --
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02096)

6.2.1.2 [SRS_LIBS_08526] CRC 库应支持当前的 CRC 计算标准

内容
Type(类型) Valid
Description(描述) CRC 库应支持当前的 CRC 计算标准:
- 基于表
- 运行时计算
- 基于硬件(将来可能支持)
Rationale(理由) 允许根据特定 ECU 要求优化代码大小或执行时间。
Use Case(用例) --
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02096)

6.2.1.3 [SRS_LIBS_08521] 所有 CRC 例程应允许对大数据块进行逐步计算

内容
Type(类型) Valid
Description(描述) 所有 CRC 例程应允许对通过起始地址、长度和起始值传递的大数据块进行逐步计算。
Rationale(理由) 在不阻塞整个系统的情况下对大数据块进行 CRC 计算。
Use Case(用例) 应执行 4k ROM 数据块的 CRC 计算。如果 CRC 例程在一次调用中计算整个块,看门狗将不再被触发并导致复位。因此,计算必须分多个步骤完成(例如 16 字节一步)。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02096)

6.2.2 CRC 库

6.2.2.1 兼容性

6.2.2.1.1 [SRS_LIBS_00008] 对于给定的函数原型名称,一旦成为 AUTOSAR 最终发布版本的一部分,行为和参数不应再演进

内容
Type(类型) Valid
Description(描述) 对于给定的函数原型名称,一旦成为 AUTOSAR 最终发布版本的一部分,行为和参数不应再演进。出于任何原因,如果行为规范必须在 AUTOSAR 发布 N+1 中更改,例如 WP LIBRARIES 决定新功能,或必须从规范中添加/删除/修改参数/类型,并且库实现可能已经在生产中,则应创建新的函数原型。之前的(AUTOSAR 发布 N)应保持不变。
如果 SWS 中指定了类型实现,则如果此实现发生更改,应创建新的类型名称和 API 名称,并保留先前的名称。
如果 SWS 中未定义类型实现,则库开发人员可以自由更改实现而无需创建新类型名称。
Rationale(理由) 避免在库演进时重新开发 SW-C。避免在 SW-C 不需要新功能时集成新库版本。如果集成商必须添加依赖不同库(AUTOSAR 规范)版本的不同 SW-C,他可以(必须)购买最新的库版本,因为已确保向上兼容性。
Use Case(用例) 在一个项目中,集成商使用与 AR4.0 兼容的库,以及使用此库的 SW-C。在下一个 V 周期中,集成与 AR4.1 兼容的新库版本。借助向上兼容性规则,确保 SW-C 将以相同方式做出反应,即使添加了新功能。
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02096)

6.2.2.1.2 [SRS_LIBS_00016] SW-C 可以使用市场上可用的非 AUTOSAR 库

内容
Type(类型) Valid
Description(描述) SW-C 可以使用市场上可用的非 AUTOSAR 库。在这种情况下,开发人员可以不分发此库,只需在 SW-C 模板(DependencyOnLibrary)中提及它。集成商有责任获取此库以便能够集成 SW-C。此非 AUTOSAR 库应遵守本文档的要求。建议非 AUTOSAR 函数以特定的供应商前缀开头。
Rationale(理由) 允许实现的自由度。避免名称冲突。
Use Case(用例) 供应商特定库。
Dependencies(依赖) [SRS_LIBS_00011]
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_02096)
6.2.2.2 其他

6.2.2.2.1 [SRS_LIBS_00007] 库的使用应记录在文档中

内容
Type(类型) Valid
Description(描述) 如果 BSW 模块或 SW-C 使用某个库,开发人员应在 BSW/SW-C 模板中添加 Implementation-DependencyOnLibrary。minVersionmaxVersion 参数对应于供应商版本。对于 AUTOSAR 库,这些参数可以留空,因为 SW-C 或 BSW 模块可以依赖库行为而非供应商实现。但是,SW-C 或 BSW 模块应与其所集成的 AUTOSAR 平台兼容。
Rationale(理由) SW 集成商在集成 BSW 模块或 SW-C 时检查 AUTOSAR 平台兼容性。
Use Case(用例) --
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ( RS_BRF_01192)

6.2.2.2.2 [SRS_LIBS_00017] 应避免使用宏

内容
Type(类型) Valid
Description(描述) 函数应声明为函数或内联函数(inline)。不应使用 #define 宏。
Rationale(理由) 宏不指定参数类型和返回类型,因此更有可能被误用。
Use Case(用例) --
Dependencies(依赖) --
Supporting Material(支持材料) --
满足的需求 ()

6.2.2.2.3 [SRS_LIBS_00018] 库函数只能调用库函数

内容
Type(类型) Valid
Description(描述) 库函数不应调用任何 BSW 模块的函数,例如 DET。库函数可以调用其他库函数。
Rationale(理由) 库函数应是可重入的。其他 BSW 模块函数可能不可重入。
Use Case(用例) 多核架构;内存保护方案。
Dependencies(依赖) [SRS_LIBS_00009]
Supporting Material(支持材料) --
满足的需求 ()

7 参考文献

  • [1] Standardisation Template, AUTOSAR_TPS_StandardizationTemplate.pdf

翻译说明

  1. 本文档为 AUTOSAR CP Release 4.4.0 的库需求规范(SRS)。
  2. 所有 API 标识符和库名称(Bfx、Crc、E2E、Efx、Ifl、Ifx、Mfl、Mfx)保留英文原名。
  3. 需求 ID(如 SRS_LIBS_00001SRS_LIBS_08518RS_BRF_02080)保留原样。
  4. 章节中包含的所有 C 代码片段按原文翻译并保留格式。
  5. AUTOSAR 方框符 ⌈⌋ 已保留。
  6. 文档涵盖 8 个 AUTOSAR 库的通用需求:Mfx、Mfl、Ifx、Ifl、Bfx、Efx、Crc、E2E。
  7. 文档分为 6 个章节,详细规定了功能需求(配置、初始化、正常运行、关闭操作、故障操作、CRC 库)和非功能需求(通用、CRC 库的兼容性与其他)。