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.

[参考译文] MSPM0L1306:如何修复警告"DL_I2C_fillTargetTXFIFO ()"、"memset ()"

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1404626/mspm0l1306-how-to-fix-the-warnings-dl_i2c_filltargettxfifo-memset

器件型号:MSPM0L1306

工具与软件:

尊敬的专家:

当我的客户使用 mspm0_sdk 编译软件时、他发现许多警告。

CCS:v12.8.0
SDK:v2.01.00.03

问题1:如果用户可以修复(删除)这些警告、您能否告诉我如何修复?
问题2:此外、是否有计划在 SDK 中修复这些警告?


由于这包含客户信息、因此仅摘录了错误内容。

#1
main.c:364:10: warning: passing argument 1 of 'memset' discards 'volatile' qualifier from pointer target type [-Wdiscarded-qualifiers]
	  364 |  memset( s_aEventBuffer, 0U, sizeof( s_aEventBuffer ) );
	      |          ^~~~~~~~~~~~~~

#2
gcc-arm-none-eabi-9-2019-q4-major/arm-none-eabi/include/string.h:33:9: note: expected 'void *' but argument is of type 'volatile SCommonEventData *' {aka 'volatile struct <anonymous> *'}
	   33 | void *  memset (void *, int, size_t);
      |         ^~~~~~

#3
main.c:571:29: warning: cast from function call of type 'uint32_t' {aka 'long unsigned int'} to non-matching type 'double' [-Wbad-function-cast]
	  571 |  byRetVal = (uint8_t) ceil( (double) getVoltage() / VOLTAGE );
      |                             ^

#4
main.c:571:13: warning: cast from function call of type 'double' to non-matching type 'unsigned char' [-Wbad-function-cast]
	  571 |  byRetVal = (uint8_t) ceil( (double) getVoltage() / VOLTAGE );
	      |             ^

#5
I2C.c:57:61: warning: passing argument 2 of 'DL_I2C_fillTargetTXFIFO' discards 'volatile' qualifier from pointer target type [-Wdiscarded-qualifiers]
	   57 |     byFIFOWriteSize = DL_I2C_fillTargetTXFIFO( LPI2C2_INST, &s_pSendData[s_bySendIndex],
	      |                                                             ^~~~~~~~~~~~~~~~~~~~~~~~~~~

#6
dl_i2c.h:980:57: note: expected 'uint8_t *' {aka 'unsigned char *'} but argument is of type 'volatile uint8_t *' {aka 'volatile unsigned char *'}
	  980 | uint8_t DL_I2C_fillTargetTXFIFO(I2C_Regs *i2c, uint8_t *buffer, uint8_t count);
	      |                                                ~~~~~~~~~^~~~~~

#7
startup_mspm0l130x_gcc.c:58:6: warning: no previous prototype for 'initStub' [-Wmissing-prototypes]
	   58 | void initStub(void){;}

此致、
棒极了 h

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

    您好 H、

    这些警告大多是类型不一致的警告。 这些警告是否来自 SDK 中的示例代码? 如果是的话、 我可以向我们的软件团队提供反馈。

    顺便说 一下、它不会导致函数误差、对吧?  

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

    尊敬的赵宇浩:

    感谢您的答复。

    这些警告大多是类型不一致的警告。 这些警告是否来自 SDK 中的示例代码? 如果是这样、 我可以向我们的软件团队提供反馈。

    1~4是客户自己的代码的内容。 但是、与 SDK 驱动程序相关的器件为5~7 μ s。

    顺便说 一句、这不会导致函数错误、对吗?  [报价]

    操作本身符合预期。

    此致、
    棒极了 h

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

    您好 H、

    我尝试测试示例代码"i2c_target_rw_multibyte_fifo_interrupts_LP_MSPM0L1306_nortos_ticlang"、它具有 DL_I2C_fillTargetTXFIFO . 但没有警告。 这可能是错误使用客户代码吗?

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

    只有#7是 SDK 的一部分。  

    ---

    #2/#6是建议;无需执行任何操作

    -------

    #1/#5需要显式转换以摆脱"易失性",以确保您意识到它不会被函数视为"易失性":

    #1应编码为"memset((void *)s_aEventBuffer, 0U, sizeof ( s_aEventBuffer );"

    #5应编码为"ByFIFOWriteSize = DL_I2C_fillTargetTXFIFO (LPI2C2_INST、(uint8_t *)&s_pSendData[s_bySendIndex]、"

    -------

    #7前面应加上原型"extern void initStub (void);"。 我怀疑这是-pedantic 的伪影。  也许以前的"别名"应该作为原型?

    -------

    我不确定#3/#4到底发生了什么——可能是有符号和无符号类型之间的转换。 (我没有现成的 C 标准文档。) 我怀疑这是-pedantic 的伪影。

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

    关于#3/#4的更多信息:-WBad-function-cast (此处)的描述 有点细(鉴于 C 中的"常规算术转换"、什么构成了"match"?)、但它似乎仅适用于函数调用结果。 您可以将中间结果分配给局部变量并转换它们来获得成功。 (优化器将把它全部压缩在一起。) 或添加"-Wno-bad-function-cast"来停止检查。

    关于#7的更多信息:此文件是从 SDK 复制的、但它现在位于您的项目中。 我希望您可以对您的本地副本进行必要的修改、从而摆脱该警告。

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

    尊敬的赵玉豪、Bruce McKenney

    感谢您的支持。  

    我们将与我们的客户共享您提供的信息、并要求他们尝试并改进。

    此致、
    棒极了 h