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.

[参考译文] AWR2944P:未声明的标识符'CAN_UNINIT_'和#39;CAN_READY'

Guru**** 2454880 points


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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1509854/awr2944p-undeclared-identifier-can_uninit-and-can_ready

器件型号:AWR2944P

工具/软件:

MCAL REL_02.02.05.00

在 集成 CAN 模块时、发生以下编译错误

错误:

使用未声明的标识符"can_ready"
794 | g Can_DriverObj.canDriverState = can_ready;
|^
C:/work/ACP-8.8.11_AM263PX_clang-4.0.0_LTS/Tresos/plugins/McalExt_TS_T31DxM1I0R0/MCAL_Delivery/mcal-02_02_05_00/mcal/Can、src、Can.c:1689:41:错误:
使用未声明的标识符"CAN_UNINIT_";您是指"CAN_CS_UNINIT_"吗?
1689 | g Can_DriverObj.canDriverState = CAN_UNINIT;

原因:  CAN_UNINIT  未在代码中的任何位置声明或定义标识符和 can_ready。

解决方法: 值是在 Can_Priv 中定义的、类似这样  


typedef 枚举

CAN_UNINIT、/**< CAN 驱动程序 UNINIT 状态。
**/
CAN_READY、/**< CAN 驱动器就绪状态。
**/
}
Can_Driver 状态类型;

您能否说明一下它未定义的原因。

BR、

Prashant Singh Tomar

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

    您好 Prashant、

    请包含 发行版中存在的 C:\ti\mcal-02_05_00\mcal\autosar_include 文件夹。 我们已经在这里提供了该功能。

    此致、
    Saswat Kumar

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

    您好、Saswat、

    根据 autosar 规范、只有以下类型应该是 autosar Can_General Types.h 的一部分 因此、 应该在驱动程序代码中添加 Can_Driver StateType、例如我们在 Can_Priv Types.h 中添加了 Can_General  

    请参阅下图  

    请检查一下。

    BR、

    Prashant Singh Tomar

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

    您好 Prashant、

    理解、我们将 在下周回顾这些变化并提供反馈。

    此外、关于空指针、我需要您提供快速反馈:

    由于这是一个仅发生在客户端并且无法在我们的版本上重现的构建错误、请 让我们知道定义了 NULL_ptr 宏的哪个文件(提供完整路径)

    还需要明确的一点是、即使在我们的 NULL_ptr 宏声明中、我们也提供了保护宏、以便在已定义保护宏的情况下不再次定义它、如下所示
     
    #ifndef NULL_ptr
    #define NULL_ptr ((void *) 0)
    #endif

    请与 您的团队核实 他们的基本插件是否也具有相同的防护宏、如果没有、他们是否可以添加防护以解决此问题?  

    此致、
    Saswat Kumar

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

    您好 Prashant、

    我能否在今天之前得到有关此问题的答案、因为今天是我可以采取任何更改的最后一天。

    此致、
    Saswat Kumar

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

    您好、Saswat、

    对不起晚回复—我在离开。

    实际上、hal_stdtypes.h首先包括其中NULL_PTR定义的内容。 之后、Compiler_Common.h从基本插件中包括、它会检查是否NULL_PTR已定义。 如果是、则抛出错误、然后尝试定义NULL_PTR

    我还在内部检查、并根据 AUTOSAR 指南、NULL_PTR应该以这种方式定义。

    请参阅下图:

    BR、

    Prashant Singh Tomar

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

    您好 Prashant、

    对于我们的示例,我们肯定需要这个 NULL_ptr 声明,否则我们的示例将崩溃,我们唯一可以做的是将它从  hal_stdtypes.h 移动到 compiler.h。 您的 compiler_common.h 是否与 compiler.h 相同、或者它是单独的文件、您能否说明它的实际含义?
    您之所以推荐、是因为我们的可用性需要它、我唯一看到的方法是、如果您目前可以从您的软件中省略它。

    此致、
    Saswat Kumar

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

    您好、Saswat、

    是的、我们可以实施此权变措施。

    BR、

    Prashant Singh Tomar

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

    您好 Prashant、

    然后、可以假设您将删除此函数、或者我们需要从 hal_stdtypes.h 移动到编译器.h?

    此致、
    Saswat Kumar

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

    您好、Saswat、

    是的、我们可以使用此权变措施。

    BR、

    Prashant Singh Tomar

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

    您好 Prashant、

    只需尝试确认解决方法是什么
    这是一个正确的:你要删除功能的权利?

    此致、
    Saswat Kumar

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

    您好、Saswat、

    对我们来说、我们不需要NULL_PTRhal_stdtypes.hCompiler_Common.h、因为它已经在中定义。 将其从hal_stdtypes.h解决了我们的问题。

    在您之前的评论中、您提到您的示例需要它。 在这种情况下、最好将定义从移动hal_stdtypes.hcompiler.h

    BR、
    Prashant Singh Tomar

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

    您好 Prashant、

    所采取的时间点会添加到下一个 MCAL 版本中。

    此致、
    Saswat Kumar