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.

[参考译文] TMS320F28388D:编译器 v21.6.0.LTS 未正确打印

Guru**** 2604225 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1057322/tms320f28388d-compiler-v21-6-0-lts-does-not-printf-correctly

器件型号:TMS320F28388D

您好!

切换到21.6.0.LTS 后、我的应用程序停止正确打印除%d 以外的任何内容 格式如"%.*f、"、FLT_DECIMAL_DIG、..."、 "%ld"、...、  "%u、... "不能使用 sprintf 函数。

编译器不会发出任何错误或警告。 明确定义 --printf_support=full 不起作用。  在不更改任何其他属性的情况下切换回20.2.5.LTS 可完全解决问题。

是已知问题、还是我错过了什么? 同时、我返回使用20.2.5.LTS、但可能有办法使新版本的编译器正常工作? 。

谢谢。

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

    编译器版本测试包括对 printf 函数的广泛测试。  请查看 使用 printf 的提示是否 解决了该问题。

    谢谢、此致、

    乔治

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

    尊敬的乔治:

    感谢您的快速回答。

    毫无疑问、新编译器版本通过了大量测试。 但是、是否还有一些用例仍然未能得到满足?

    我关注了您的链接,但由于它与*sprintf 函数有关,因此不涉及 I/O 接口。 我检查了我的堆栈、它远远没有被填满。 至于堆、这是项目中唯一"不寻常"的东西。 我将其放置在外部 SDRAM (EMIF)中(需要在 memory.c 文件中进行一些修改)。 无论如何、从项目代码中调用的 malloc / free 函数都能正常工作。

    我注意到、与格式化打印相关的部分中的库源代码在21.6.0.LTS 和20.2.5.LTS 之间存在一些显著差异。 出于好奇、我将"旧"编译器库源中的_printfi.c 文件包含在我的项目中。 编译器版本设置为21.6.0.LTS 后、它开始正常工作!

    我仍然不排除我缺少了什么东西。 但我认为这个问题值得进一步检查。

    此致、

    Michael。

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

    我看到的唯一方法是让我重现问题。  如果您创建一个小型 CCS 工程、最好是其中包含一个 sprintf 调用、该工程在版本20.2.5.LTS 下正常工作、但在版本21.6.0.LTS 下失败、我将不胜感激。 要压缩项目、请按照文章 共享项目中的说明进行操作。  将 zip 文件附加到您的下一个帖子。

    谢谢、此致、

    乔治