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.

[参考译文] Linux/processor-SDK-AM335X:CAN 消息目标定制

Guru**** 2606725 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/651012/linux-processor-sdk-am335x-can-message-object-customization

器件型号:PROCESSOR-SDK-AM335X

工具/软件:Linux

您好!

我想增加消息对象的总数。

使用 DCAN。 我的 can.h 具有如下默认配置

/*消息对象拆分*/
#define C_CAN_NO_NO_TO_objects      64
#define C_CAN_MSG_OBJ_RX_NUM    16.
#define C_CAN_MSG_OBJ_TX_NUM    16.

我想将 Tx 和 Rx msg 数字增加为64个、将 msg 对象总数增加为128

在进行编译时、我收到以下错误。

kernel.h:6、
|                 来自/home/embadmin/fmssdk/build/arago-tmp-external-linaro-toolchain/work-shared/sfms/kernel-source/drivers/net/can/c_can/c_can.c:28:
|在函数'c_CAN_do rx_poll'中、
|    内联自/home/embadmin/fmssdk/build/arago-tmp-external-linaro-toolchain/work-shared/sfms/kernel-source/drivers/net/can/c_can/c_can.c:1068:15的'c_CAN_POLL':
|/home/embadmin/fmssdk/build/arago-tmp-external-linaro-toolchain/work-shared/sfms/kernel-source/include/linux/compiler.h:518:38:错误:调用带有属性声明的'__compiletime_assert_848'错误:实现不支持多于16个的消息对象
|  _compiletime_assert (condition、msg、__compiletime_assert_、__line__)
|                                      ^μ A
|/home/embadmin/fmssdk/build/arago-tmp-external-linaro-toolchain/work-shared/sfms/kernel-source/include/linux/compiler.h:501:4:注意:在宏'_compiletime_assert'的定义中
|    前缀##后缀();   \

是否可以根据我的要求进行配置? 有人能帮我解决这个问题吗?

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

    请参阅 AM335x TRM 版本 P 的第23.1.1节:

    •16、32、64或128个消息对象(在此器件上实例化为64)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Biser、

    我已验证您提到的部分。
    DCAN 最多可配置128个物体。

    配置#define C_CAN_NO_NO_TO_objects 128未导致任何问题。

    但是、更改 Tx 和 Rx 对象会导致编译时间错误。
    您能帮我在代码方面解决这个问题吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    显然、消息对象在该器件上被实例化为64。  

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

    Biser 正确、因为最多可以使用64个报文对象。 这是由于作为 SOC 一部分集成的 CAN 模块内的消息 RAM 的大小。 该驱动程序是我所说的超集驱动程序、它是由 Linux 社区成员编写的、必须涵盖多年来集成到不同 SOC 中的多个 IP。 早期 SOC 中消息 RAM 的大小为一半、因此为了进行转换、驱动器最初是为了覆盖较小的大小。 驱动程序您可以选择增加到64个对象、TI 没有使用此配置构建驱动程序、也没有使用大小进行测试。

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

    Schuyler、您好、

    感谢您的清晰解释。 有用