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.

[参考译文] TMS320F2812:编译器升级库混淆

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

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1037288/tms320f2812-compiler-upgrade-library-confusion

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

我要将一个非常旧的 TMS320F2812项目从 CCS 2移植到 CCS 10、然后我遇到了一个小问题。 该产品包含两个单独的应用程序映像、它们通过固定位置跳转表进行连接。

较小的映像是一个 POST 和引导加载程序、最初与 rts2800_ml.lib 和 Flash2812_API_V100.lib 链接、然后是 V210替代产品。

更大的图像是执行运动、传感器和器件控制的应用。 它与 rts2800_ml.lib 和 IQmath.lib 链接。

我最初将 CCS 10中构建的映像与2003年和2005年的原始库链接在一起、几乎一切都正常。 我注意到的一个差异是使用%s 转换指定符调用标准库函数 sprintf()不起作用。 %s 的字符串没有出现,后面也没有任何其他参数。

最后、我发现、如果我使用 CCS 10附带的 rst2800_ml.lib 或等效的 libc.a、则缺少的输出重新出现。 这是一个足够简单的解决方案、尽管它让我感到困惑了一段时间。

但现在我还有另一个问题。 没有更新版本的2812闪存 API 或 IQmath 库。 我们必须使用2003年和2005年的原始版本、没有其他选择。 如果存在任何兼容性问题、我们可能会遇到什么问题?

到目前为止、闪存 API 库在链接到 CCS 10构建时能够完美地工作。 我已经对片上闪存进行了数十次擦除和重新编程、没有任何错误。 我们永远不会以不同的方式使用它、因此我不会担心这一点。

但 IQmath 库呢? 当前版本的 controlSUITE 具有32个 IQmath.h C 头和三个不同的库。 它们都不支持2812。

我实际上不理解 sprintf()问题的根本原因。 从两个不同版本的 SPRU514中可以看到、SPRU514是一个初始版本、从2001年8月开始没有版本字母、从2020年8月开始稍微更新了 SPRU514U、调用惯例的描述、即使是在可变参数函数上、也是一样的。 然而、它们显然不是。

因此、我需要知道我是否可以从2002年6月开始使用 IQmath 库的1.4b 版。  或至少我应该注意的内容。

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

    您好!

    C2000ware 提供了 F281x 上的 IQMath 示例。 您是否了解过该内容?

    -Shantanu