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.

[参考译文] TM4C1294KCPDT:在主机模式下、ULPI 代码始终编译、即使不使用也是如此

Guru**** 2478765 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/691293/tm4c1294kcpdt-ulpi-code-is-always-compiled-in-even-when-not-used-for-host-mode

器件型号:TM4C1294KCPDT

我注意到、usblib 中的 ULPI 代码始终编译到固件映像中、即使外部硬件不存在也是如此、因此代码将不使用。 这是因为针对 ULPI 的唯一测试是运行时条件、这意味着链接器必须始终引入该代码、为潜在未使用的功能占用闪存空间。

一般而言、我注意到德州仪器的 TivaWare 库对于排除永远不会使用的代码非常有效。 通常、这似乎由在编译时而不是运行时评估的#define 指令来处理。 另一个示例是该文档展示了如何使用 USB0HostIntHandler()编写纯主机代码,这样编译器和链接器就不会引入任何不必要的器件代码。 我只是指出、以类似的方式处理可选 ULPI 支持可能会有优势、从而避免浪费有限的闪存空间。

我发现这种监督是因为我将参考书目纳入了我的项目的修订控制。 我只复制了构建纯主机固件所需的源代码、而不是复制所有内容。 我注意到有几个必要的器件接头、但它们不需要相应的器件代码。 相比之下、不仅需要 ULPI 标头、而且还必须在中编译 ULPI 源代码。 如果不改写 usblib、就无法避免这种情况。 我意识到这是一个小问题、但德州仪器可能值得努力提高这里的空间效率。

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

    我感觉我最近非常感谢您的反馈!

    作为一个不参与书目设计的人、我无法解释为什么在运行时要确定 ULPI。 但我只是从简要概述中怀疑、由于 ULPI 文件与其他文件相比非常细小、并且在主机和器件模式下都使用、 所做的决定可能是、由于投资回报有限、将它们分开并不值得花时间投资、而主机与设备之间的较大分离绝对至关重要。

    无论如何、这是一个很好的提出点、我可以将其添加到我们的评估列表中、以便我们至少可以调查进行该更改所需的努力。