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.

[参考译文] TMS320F280037:通用电机控制实验室代码铸造 motor_Vars_t 对象上的易失性

Guru**** 2553450 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1544200/tms320f280037-universal-motorcontrol-lab-code-casts-away-the-volatile-on-motor_vars_t-objects

器件型号:TMS320F280037


工具/软件:

我正在对我们正在执行的一个电机项目运行 MISRA 2012 合规性、并发现在 motorcontrolsdk 中提供的示例代码似乎违反了 MISRA 11.8。  例如:

motorVars_M1 定义为 易失性 MOTOR_Vars_t motorVars_M1; 并声明为  外部易失性 MOTOR_Vars_t motorVars_M1;

但在 motor1_drive.c 中访问此变量时、始终按如下所示完成:  

motor_Vars_t *obj =(motor_Vars_t *) handle;


此转换有效地忽略/删除新创建的指针(MISRA 11.8 违规)中的“volatile “。  我想知道为什么代码是以这种方式编写的吗?  根据优化级别和相关代码、C2000 编译器似乎在某些情况下将原始对象视为易失性对象、或者在其他情况下不会视为易失性对象;这使得将代码纳入 MISRA 合规性变得更加困难 、或许我遗漏了一些内容?

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

     尊敬的 Jeremy:

    编写此参考代码解决方案时未考虑 MISRA 要求。  用户有责任自行满足他们的质量要求、我们的软件解决方案仅供参考/评估之用。

    此致、

    Kevin