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.

[参考译文] CCS/TMS320F28379D:代码不符合 MISRA C:2004标准、如何使其兼容?

Guru**** 2589245 points
Other Parts Discussed in Thread: TMS320F28379D, C2000WARE, CONTROLSUITE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/795041/ccs-tms320f28379d-code-not-misra-c-2004-compliant-how-to-make-it-compliant

器件型号:TMS320F28379D
Thread 中讨论的其他器件: C2000WAREcontrolSUITE

工具/软件:Code Composer Studio

您好!

我正在尝试使用 Code Composer Studio 对我的项目运行 Misra 合规性检查。  我在 C:\TI (C:\ti\c2000\C2000Ware_1_00_06_00\device_support\f2837xd 及其子文件夹和 C:\ti\controlSUITE\device_support\f2837xD\V210及其子文件夹)中包含了 TMS320F28379D 文件夹。 我已启用 Misra C:2004检查(没有 Misra C:2012选项)

起初、我启用了所有合规性检查、但当检查未完成并发出大量错误和警告时、我仅停止并启用了"所需类别"。

当我启用"必需"类别时、几乎所有代码都有以下警告。

1./*.. 应使用*/样式注释(已验证,每个文件都以描述开头,并使用“//”

2.不允许使用联合体。 存在很多联合体、例如 GPIO 具有字和位。

我看到了 Misra C:2012指南、我认为这两个指南都是必需的。 在1小时的编译过程中,我看到的只是与上述问题有关的打印稿,而编译尚未完成。 对于与 Misra 的偏差、也没有注释。 如果不是不可能的话、很难使代码 Misra 兼容。 您能建议一种方法来使我的代码 MISRA C 兼容吗?

下面给出了"/"的注释示例

//######################################################################################################################
//
//文件:F2837xD_GPIO.c
//
//标题:GPIO 模块支持函数
//
//######################################################################################################################
//$TI 版本:F2837xD 支持库 V210 $
//$Release Date:Tue Nov1 14:46:15 CDT 2016 $
//版权所有:版权所有(C) 2013-2016 Texas Instruments Incorporated -
// http://www.ti.com/ 保留所有权利$
//######################################################################################################################

此致

Moreshwar Salpekar

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

    Moreshwar、

    device_support 中的内容基于 C2000自首次推出 C28x 器件(超过15年前)以来所支持的位字段头。  遗憾的是、正如您所注意到的、这些开发过程不考虑 MISRA 问题。  一个可能的选项是从 MISRA 检查中排除这些文件、因为它们在 TI 内部和不在 TI 内部大量使用。  C2000也只有一个编译器选项、可在迁移到另一个编译器时消除可移植性问题。

    如果 MISRA 是一项硬性要求、我建议改用驱动程序库及其关联的头文件。  Drliverlib 是在开发时考虑到 MISRA 的、它在最新的 C2000器件(包含 F28037xD)上受支持。  driverlib 库 位于以下目录中:

    C:\ti\c2000\C2000Ware_ \driverlib

    您可能会发现此应用手册很有用。  第一个示例比较了两种编程方法(位字段和 driverlib)。  第二部分详细介绍了 TI 在开发 driverlib 时遵循的 MISRA:2012政策。  

    此致

    Lori