This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] SAFETI_CQKIT:如何正确选择经过验证且符合规范的编译器配置进行鉴定?

Guru**** 2468460 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1464117/safeti_cqkit-how-do-i-correctly-select-a-validated-and-compliant-compiler-configuration-for-qualification

器件型号:SAFETI_CQKIT

工具与软件:

很遗憾、即使我使用的是 C2000、也可以在 ARM MCU 论坛上发布此帖子。 如果我选择 SAEFTI_CQKIT 作为器件型号、它将自动选择此论坛、但我无法将其更改为其他版本。

我将按照 TI 资质审核套件用户指南的说明、更好地了解获得 TI C2000 MCU 认证所需的条件。 目前、我停留在工具资质审核计划(TQP.docm)、特别是有关配置选择的部分。 根据我的理解、我需要选择一个经过测试和支持的配置、即编译器标志/选项、来构建我的软件。 可以根据第6章"工具定义"来选择这些编译器选项。 这方面的多个方面让我感到困惑。

让我向您展示我的当前情况、以便您可以跟进。 到目前为止、我已将在 Code Composer Studio 中 C++编译过程中使用的这些标志进行了分离(不包括 include 目录/ object 目录):

-v28 -ml -mt -cla_support=cla2 --float_support=fpu64 --idiv_support=idiv0 --tmu_support=tmu0 --vcu_support=vcrc -O0 --advice:performance=all --define=_flash --define=debug --define=cpui-define=-g --diag_warning=225 - diag_warning=funion=-on-abi=union-abi=union_subsections=-on-abi=-on-exception_subsectionsections=on - abi=union_example

在工具定义表6.1中、影响代码生成最多的选项如下:

-v28 -O0 -g --gen_func_subsections=on

此外、根据表6.2、这些编译器选项对代码生成的影响较小:

--abi=eabi --cla_support=cla2 --float_support=fpu64 --idiv_support=idiv0 --vcu_support=vcrc --tmu_support=tmu0

所有其他选项都不会影响代码生成、因此它们与认证无关。

现在、我有一些关于这一点的问题:

  1. 工具定义表6.2列出--idiv_support=idiv0为默认值、但编译器用户指南(Spru514z)显示"none"为默认值。 哪一个是正确的?
  2. 将编译器选项拆分为"影响代码生成"和"在较小程度上影响代码生成"类别背后的理念是什么? 在认证方面、我是否能够以不同的方式对待它们?
  3. 工具定义表6.3.1中没有许多目前用于实现附加硬件加速的选项(快速整数除法、64位浮点支持、VCU 支持、TMU 支持)、尤其是优化级别较低时。 这是否意味着我需要将它们关闭/设置为默认合规?
  4. 根据表6.3.1、-gen_func_subsections 仅在7个验证测试用例中进行测试、这些可能都不会与我的配置完全匹配。 这是否意味着我根本无法使用此选项?
  5. 编译器用户指南指出、对于 C/C++代码、忽略了--vcu_support 选项。 如果我不使用汇编代码(仅通过 TI 库)、是否仍需要禁用它以便符合要求?
  6. 我已经为整个项目启用了 CLA 支持(--cla_support=cla2)、尽管这仅用于文件子集。 我认为这与上面问题的情况相同、只是使用 CLA 代码、对吧?
  7. 表6.3.1中的大多数配置都列出了"-mt -ml"选项。 我是否也应该使用它们? 我甚至在编译器的用户指南中找不到"-ml"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Nicolas、

    您正在 使用什么安全标准和安全合规级别?  ASIL-D、ASIL-B 还是 SIL 等级?

    1.如果指定--idiv_support 而没有任何参数,则 编译器用户值 idiv0。 要禁用 idiv0支持、请勿包含该选项、或显式设置--idiv_support=none)。
    2. 表6.1和6.2中选项的主要区别是6.1列出了不同测试套件的选项、而表6.2选项主要通过单元测试进行测试。  
    3.这些都是通过单元测试进行测试的。
    4.所有的 TI 编译器选项都经过测试、可用于功能安全开发。  
    5. 如果您的设备支持 VCU、则应配置该选项、使其与设备的 VCU 匹配、并用于所有编译。  
    6.无需为设置不同的 cla_support。 C 和。 CLA 文件。 只需将其设置为器件所需的值即可。
    7.-ml (--large_memory_model)现在是默认值。 -mt (--unified_memory)在 spru514用户指南 pdf 中有详细说明。

    无论功能安全级别如何、您都可以执行覆盖率比较检查、这将确保 在执行版本验证时也会使用编译应用程序时使用的 TI 编译器的所有部分。

    无法测试每个选项置换、这就是 TI 提供上述覆盖范围比较检查的原因。  

    如果您有任何其他问题、敬请告知。

    此致、
    Greg

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Greg、

    非常感谢您提供详细的响应。

    目前、我需要遵守 UL1998、并且在不久的将来可能会遵守 IEC60730-1。 这两个标准的严格程度我能说不及大多数 ASIL/SIL 等级。 基于进程的鉴定和基于验证的鉴定都与我在标准中所读的完全匹配、但我认为基于验证的鉴定可能需要一些添加/调整(对相关已知错误的缓解措施的描述)、这就足够了(如果我错了、请进行更正)。 至少、资质审核套件用户指南提到了基于验证的 IEC 61508资质审核、IEC60730通常在附录 H 中提及

    关于覆盖比较检查:

    -我假设每一个版本都需要进行检查,以改变软件的安全相关部分,以确保它仍然是最新的。 TI 一方处理此类申请通常需要多长时间? 对我来说,球场号码是完美的,就像它是一个小时,天或周的问题?

    此致!

    Nicolas

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我建议仅在验证模式下应用 QKIT 并进行覆盖范围比较。  TI 的审核用时应不到一周、很多时候是当天进行的。  但是、为避免项目结束时出现延迟、请尽早发送初始比较。  那么任何后续比较肯定会更快。