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.

[参考译文] C2000WARE:有关 driverlib 和器件支持的问题

Guru**** 2544290 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/626366/c2000ware-issues-on-driverlib-and-device-support

器件型号:C2000WARE

大家好。

我要将其中一个项目迁移到 F28379D MCU。 我已经下载了包含最新器件支持文件的 C2000ware、并且正在尝试构建项目、但我遇到了一些问题。 我对一些人和其他人都有权变措施-我不会。 我添加了几乎所有文件、如"...device_support/common/include"、"...device_support/common/source"、"...device_support/headers/include"、"...device_support/headers/source"、".../driverlib/source、 ".driverlib/include"。 是的、我更喜欢使用 driverlib 的源代码、而不是 预编译库。 以下是我目前为止发现的问题:

由于缺少"inc/hw_usb.h"、无法构建 Driverlib"usb.c"。 在"已弃用"文件夹中可以找到缺少的标头、但... 它已被弃用。 我刚刚从构建中排除了"usb.c"。
2.在"将 C 文件视为 C++文件"选项的情况下、CODE_SECTION 的 pragma 格式错误。 我必须使用"ifdef __cplusplus ..."重新定义"driverlib/flash.c"、"driverlib/flash.h"和"device_support/common/F28037xD_IPC_Driver.c"中的 pragma #endif"
3.无法构建"device.c"、因为在使用闪存的情况下存在未声明的"memcpy()"函数。 我已添加"#include "string.h"来避免这种情况。

是否有特别的方法来报告这种问题?

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

    这个论坛是您报告它的地方、因此您在正确的位置!

    1.是的、这是已知的、我们现在正在删除 USB.c。 在库下使用的 USB 库。 对于当前的 USB 驱动程序、请使用目前已弃用的驱动程序。
    请提供有关 pragma 的更多详细信息
    3.您可能缺少从编译器提取函数的标头/头文件。 此文件没有任何构建问题。

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

    感谢你的帮助。

    第2部分的详细信息:在文件"C2000/driverlib/f28037xD/driverlib/flash.h"中、一些函数被放置在".TI.ramfuncs 中:

    pragma CODE_SECTION (Flash_setBankPowerMode、".TI.ramfunc");
    #pragma CODE_SECTION (Flash_setPumpPowerMode、".TI.ramfunc");
    #pragma CODE_SECTION (Flash_disableCache、 ".TI.ramfunc");
    #pragma CODE_SECTION (Flash_disablePrefetch、".TI.ramfunc");
    #pragma CODE_SECTION (Flash_setWaitstates、".TI.ramfunc");
    #pragma CODE_SECTION (Flash_enableCache、".TI.ramfunc");
    #pragma CODE_SECTION (Flash_enablePrefetch、".TI.ramfunc");
    #pragma CODE_SECTION (Flash_enableECC、 ".TI.ramfunc");
    

    但是对于函数"将 C 视为 C++文件"、我必须像这样重写(在每个函数声明之前):

    #ifdef __cplusplus
    #pragma CODE_SECTION (".TI.ramfunc");
    #endif 

    "flash.c"中的内容相同

    关于案例3:当选项"将 C 视为 cp 文件"打开时、此问题仅显示。 当它关闭时、编译器以某种方式知道"memcpy()"。 但当它打开时、我 必须包含"string.h"。  编译器为 v17.6.0 STS、CCS 版本为7.2.0

    我已将示例项目附在 issue.e2e.ti.com/.../memcpyFail.zipSTS上。

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

    好的、我将为#2和#3输入问题、以提高我们的 C++兼容性。

    与我们的编译器专家同步、string.h 的工作原因是它为 memcpy 引入了 std 命名空间。 您可以将其更改为"使用 std:memcpy;"以消除 memcpy 问题。

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

    好的、谢谢、Christopher!