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.

[参考译文] TMS320F280049C:我们要求客户端对 MISRA C 2012做出正式回复

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1409821/tms320f280049c-we-require-an-official-response-from-the-client-regarding-misra-c-2012

器件型号:TMS320F280049C
Thread 中讨论的其他器件:controlSUITEC2000WARE

工具与软件:

您好!

我目前根据 MISRA C 2012进行静态分析、在分析结果时遇到了几个问题。 在了解了各种选项之后、我决定在此处与其接洽。

为了确保我的文档的可信度、我希望请求 TI 提供官方回复。

感谢您的帮助。

MISRA C 2012 DIR 04_02: 应记录汇编语言的所有用法

 -> 我目前的工作中引用"TMS320C28x CPU 和指令集参考指南"。 但是、我需要制造商正式确认使用此文档是合适的。

如果有一份更适当的或备选的文件、我还需要该文件和关于其使用的正式确认。

MISRA C 2012 08_07 : 如果函数和对象仅在一个转换单元中被引用,则不应使用外部链接定义它们

 -> 使用 DSP 的 CLA 功能时发生了问题。 虽然我按原样使用 TI 提供的示例、但发生了违反规则的情况。 我认为出现这个问题是因为应该引用 CMD 文件中定义的地址、但分析器似乎无法引用 CMD 文件。 除此之外,我需要制造商的正式确认,以这种方式使用代码不会造成任何问题。

misra_C_2012_10_03 :表达式的值不应分配给具有较窄基本类型或不同基本类型类别的对象

MISRA_C_2012_DIR_04_06 :指示大小和符号的 typedefs 应用于代替基本数字类型

 -> 这两个问题是在同一背景下检测到的。 我们使用了提供的宏函数"delay"、但触发了规则违反。 我们考虑修改宏、但更改制造商的库需要分析整个库、这将大大增加工作量。 因此、我们还需要制造商提供官方确认、即按原样使用提供的宏不会导致任何问题。
MISRA_C_2012_11_01: 不应在函数的指针和任何其他类型之间执行转换
 -> 使用 DSP 的 CLA 功能时发生了问题。 尽管我按原样使用 TI 提供的示例、但触发了规则违反。 我想请求制造商官方确认、以这种方式使用代码不会造成任何问题。

我不能完全确定这是不是正确的调查方法、但考虑到我目前的情况、这似乎是最好的方法。 此外、我们与 TI 签订了 NDA、并可在必要时提供 NDA 编号。 感谢您的理解和帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [报价 userid="620664" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1409821/tms320f280049c-we-require-an-official-response-from-the-client-regarding-misra-c-2012 -> 我目前正在为我的工作引用"TMS320C28x CPU 和指令集参考指南"。 但是、我需要制造商正式确认使用此文档是合适的。

    这是适用于 CPU 核心指令的文档。 如果您正在使用一些指令集扩展、对于该指令集(TMS320C28x 扩展指令集)和 CLA、有单独的指南、这些指令位于《器件技术参考手册》中。

    MISRA C 2012 08_07: 如果函数和对象仅在一个转换单元中引用、则不应使用外部链接来定义它们

    听起来您正在讨论的是 load_start、load_size 等内容的链接器符号。。。 您可以阅读  《TMS320C28x 汇编语言工具指南》中的"链接器"一章以了解更多详细信息。

    [quote userid="620664" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1409821/tms320f280049c-we-require-an-official-response-from-the-client-regarding-misra-c-2012
     -> 这两个问题是在同一背景下检测到的。 我们使用了提供的宏函数"delay"、但触发了规则违反。 我们考虑修改宏、但更改制造商的库需要分析整个库、这将大大增加工作量。 因此、我们还需要制造商提供官方确认、即按原样使用提供的宏不会导致任何问题。
    [报价]

    我不确定可以就此提供什么样的官方确认是否令人满意、但我可以说、此宏及其基础延迟函数多年来一直在所有版本的 C2000Ware 和 C2000Ware 的前身 controlSUITE 中使用、没有变化。

    [quote userid="620664" url="~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1409821/tms320f280049c-we-require-an-official-response-from-the-client-regarding-misra-c-2012 -> 使用 DSP 的 CLA 功能时发生了问题。 尽管我按原样使用 TI 提供的示例、但触发了规则违反。 我想请求制造商确认以这种方式使用代码不会导致任何问题。

    CLA 程序计数器、因此 MVECTx 寄存器只有16位宽。 由于这些寄存器只能通过 C28 CPU 进行编程、并且 C28编译器使用32位指针、因此将 MVECT 寄存器定义为 uint16类型并将任务函数转换为相同类型最有意义。 这是我们对这些寄存器进行编程的典型方式。

    惠特尼