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.

[参考译文] CanfdObj 和 MCU-PLUS-SDK–ti_drivers_config.h 中定义的 gCanfdHandle 符号

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1514499/mcu-plus-sdk-am261x-defined-gcanfdobj-and-gcanfdhandle-symbols-in-ti_drivers_config-h

器件型号:MCU-PLUS-SDK AM261X-AM261X

工具/软件:

我的工程中有几个文件、需要包含 ti_drivers_config.h 文件。 当根据 MCU_PLUS_SDK_am261x_10_00_01_10\examples\drivers\mcan\canfd_loopback_interrupt\am261x-lp\r5fss0-0_freeRTOS 添加 CANFD 时、ti_drivers_config.h 中定义了两个符号 gCanfdObj 和 gCanfdHandle

这是 C/C++中的一个定义规则(ODR)违例、并且链接器恰好会抱怨 重新定义、因为现在、包含 ti_drivers_config.h 的每个文件都将定义这些符号。

因此、首先、我会认为这是生成的代码中的一个错误(基于 mcan_v0_hld.h.xdt)。

其次、  除了改用低级驱动程序(mcan.h)之外、是否有其他权变措施?

这是 ti_drivers_config.h 中生成的代码

/*
 * EDMA
 */
#include
#include

/* EDMA 实例宏*/
#define CONFIG_EDMA0_BASE_ADDR (CSL_TPCC0_U_BASE)
#define CONFIG_EDMA0 (0U)
#define CONFIG_EDMA_NUM_Instances (1U)
/*
 * MCAN
 */
#include
#include


#define CONFIG_MCAN0_MCAN_STD_ID_FILT_START_ADDR  (0U)
#define CONFIG_MCAN0_MCAN_STD_ID_FILTER_NUM      (1U)
#define CONFIG_MCAN0_MCAN_EXT_ID_FILT_START_ADDR  (48U)
#define CONFIG_MCAN0_MCAN_EXT_ID_FILTER_NUM      (1U)
#define CONFIG_MCAN0_MCAN_TX_BUFF_SIZE        (10U)
#define CONFIG_MCAN0_MCAN_FIFO_1_NUM         (10U)
#define CONFIG_MCAN0_MCAN_TX_EVENT_SIZE        (10U)
#define CONFIG_MCAN0_MCAN_FIFO_0_NUM         (10U)

#define CONFIG_MCAN0        (0U)
#define CONFIG_MCAN0_BASE_ADDR  (CSL_MCAN0_MSG_RAM_U_BASE)

#define CONFIG_MCAN_NUM_Instances (1U)

/* CANFD 对象-由驱动程序初始化*/
CANFD_Object gCanfdObj[CONFIG_MCAN_NUM_Instances]
/* CANFD 全局配置数组*/
extern CANFD_Config gCanfdConfig[CONFIG_MCAN_NUM_Instances]
/* CANFD 驱动程序句柄*/
CANFD_handle gCanfdHandle[CONFIG_MCAN_NUM_Instances]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Daniel:
    我已收到您的查询。 请给我一些时间来研究这个问题。 我会回复您。
    感谢您的耐心。

    此致、
    Aswathi

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

    尊敬的 Daniel:
    感谢您指出这一点。 我已在内部提交了一个 TT、并将确保在下一个版本中将其推出。

    [quote userid="654709" url="~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1514499/mcu-plus-sdk-am261x-defined-gcanfdobj-and-gcanfdhandle-symbols-in-ti_drivers_config-h  除了改用低级驱动程序(mcan.h)之外、是否有其他权变措施?

    您可以改用等效的 HLD 示例:"mcan_loopback_interrupt"。

    请告诉我它是否有效。

    此致、
    Aswathi