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.

[参考译文] PROCESSOR-SDK-AM62X:[AM6231]支持在内核中启用 MCU_CAN

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1351996/processor-sdk-am62x-am6231-support-for-enabling-mcu_can-in-the-kernel

器件型号:PROCESSOR-SDK-AM62X
主题中讨论的其他器件:TCAN1044-Q1、TCAN1043

尊敬的 TI 支持部门:

我们拥有 AM62X 定制板,它具有2X TCAN1044-Q1 CAN 收发器,并将其映射到 MCAN0和 MCU_CAN0。 我使用的是 SDK 09_00_00_03。  

请帮助我如何启用 MCU_CAN 内核中的命令行界面。

请查找 CAN DTS 文件更改  

&MCU_mcan1{
pinctrl-names ="默认";
pinctrl-0 =<&mcu_mcan0_pins_default>;
状态="可以";
};

//针对 MCU_CAN0引脚添加
MCU_mcan0_PINS_DEFAULT:mcu_mcan0_PINS_DEFAULT{
PINCCTRL-SINGLE、PINS =<
AM62X_IOPAD (0x038、PIN_INPUT、0)/*(B3) AM62X_MCU_MCAN0_RX_G */
AM62X_IOPAD (0x034、PIN_OUTPUT、0)/*(D6) AM62X_MCU_MCAN0_TX\G */
>;
};

谢谢。

纳雷什。

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

    您好、Nareesh、

    对于9.0 SDK、已启用 MCU MCAN 支持。 您可以将 MCAN 覆盖文件 ->k3-am625-sk-mcan.dtbo 并开始使用 MCU MCAN。

    有关更多详细信息、请参阅补丁: https://lore.kernel.org/lkml/20230501224624.13866-1-jm@ti.com/T/#mc1aa7ccf22c6d4dd54a284df68ba12ebd08c1f4b

    注意:上述补丁的更改可在 k3-am625-sk-mcan.dtso

    此致、
    阿帕拉纳

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

    尊敬的 Aparna:

    感谢您的答复。

    我对进行了以下更改 MCU_CAN0。  

    JFYI ,我们正在使用"tcan1044"。 无法找到该驱动程序的设备驱动程序。 所以,我 在设备树中使用 tcan1042驱动程序。

    mcu_mcan1_pins_default: mcu-mcan1-pins-default {
        pinctrl-single,pins = <
          AM62X_IOPAD(0x038, PIN_INPUT, 0) /* (B3) MCU_MCAN0_RX */
          AM62X_IOPAD(0x034, PIN_OUTPUT, 0) /* (D6) MCU_MCAN0_TX */
    >;
      };
    
    &mcu_mcan1 {
      poll-interval;
      pinctrl-names = "default";
      pinctrl-0 = <&mcu_mcan1_pins_default>;
      phys = <&transceiver2>;
      status = "okay";
            };
    
    
    transceiver2: can-phy1 {
        compatible = "ti,tcan1042";
        #phy-cells = <0>;
        max-bitrate = <5000000>;
      };
    
    

    但可以观察到总线误差如下所示。 ,

    • ifconfig -A CAN0 down
    • IP link set CAN0 type CAN bitrate 500000 fd on dbitrate 2000000
    • ifconfig -A CAN0 up

    • root@am62xx-evm:~# cansend CAN1 113#111213141510

          root@am62xx-evm:~#[72.166927]  m_can_platform 4e00000.can CAN1:bus-off  

    注意 :我的 MAIN_CAN0工作正常。 (我们也测试了 CAN-FD ). main_can 我们也使用了 tcan1044

    下面是 MAIN_CAN 的更改、

    •  //added for mcan0
              main_mcan0_pins_default: main_mcan0_pins_default {
                      pinctrl-single,pins = <
                              AM62X_IOPAD(0x1dc, PIN_INPUT, 0) /* (E15) AM62X_MCAN0_RX\G */
                              AM62X_IOPAD(0x1d8, PIN_OUTPUT, 0) /* (C15) AM62X_MCAN0_TX\G */
                              //AM62X_IOPAD(0x0ec, PIN_INPUT, 7) /* (AA24)  STB0 */
                      >;
              };
      
      &main_mcan0 {
              pinctrl-names = "default";
              pinctrl-0 = <&main_mcan0_pins_default>;
              status = "okay";
      };
      

    MCU_CAN 是否可以在 Linux 上工作?

    谢谢。

    纳雷什

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

    您好、Nareesh、

    请务必删除

    ```
    轮询间隔;
    ```
    设备树属性、因为在驱动程序级别: https://git.ti.com/cgit/ti-linux-kernel/ti-linux-kernel/tree/drivers/net/can/m_can/m_can_platform.c?h=ti-linux-6.1.y#n105中添加了检查是否启用计时器轮询的功能。

    ~朱迪斯

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

    Judith、您好!  

    我仍然遇到总线错误。

    MCU_CAN 是否会在 Linux 中支持?

    这里、CAN0 是 MCU_CAN、CAN1是 MAIN_CAN。 我观察到 MCU_CAN 不具有中断线路。

    root@am62xx-evm:~# ifconfig -a
    CAN0 链接 encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    UP NOARP MTU:72公制:1
    Rx 数据包:0错误:0丢弃:0溢出:0帧:0
    TX 数据包:0错误:0丢弃:0溢出:0载波:0
    冲突:0队列 txelen:10
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)

    CAN1 链接 encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    NOARP MTU:16公制:1
    Rx 数据包:0错误:0丢弃:0溢出:0帧:0
    TX 数据包:0错误:0丢弃:0溢出:0载波:0
    冲突:0队列 txelen:10
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    中断:249

    谢谢。

    纳雷什

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

    Judith、您好!  

    我仍然遇到总线错误。

    请帮助与下面的库尔斯。

    Qures1:  MCU_CAN 是否会在 Linux 中支持?  

    问题2:  我们的 MCU_CAN 通过 UART/CAN 连接,如何将其启用为串行 CAN 和 CAN-FD。 如何在它们之间切换?

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    这里、CAN0 是 MCU_CAN、CAN1是 MAIN_CAN。 我观察到 MCU_CAN 不具有中断线路。

    root@am62xx-evm:~# ifconfig -a
    CAN0 链接 encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    UP NOARP MTU:72公制:1
    Rx 数据包:0错误:0丢弃:0溢出:0帧:0
    TX 数据包:0错误:0丢弃:0溢出:0载波:0
    冲突:0队列 txelen:10
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)

    CAN1 链接 encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    NOARP MTU:16公制:1
    Rx 数据包:0错误:0丢弃:0溢出:0帧:0
    TX 数据包:0错误:0丢弃:0溢出:0载波:0
    冲突:0队列 txelen:10
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    中断:249

    谢谢。

    纳雷什

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否可以在 Linux 中支持 MCU_can?  [/报价]

    是的、支持此功能。 我将在我的设置上测试它、并很快对您进行更新。


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

    嗨, Aparna ,

    请在两个 Quiries 上更新。

    帮助我验证 MCU-CAN 的 CAN/CAN -FD  

    感谢您的支持  

    谢谢。

    纳雷什

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

    您好!  

    请更新此 MCU_CAN 问题?

    它对我们至关重要。

    ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------

    我怎么能在 Linux 中访问这个 MCU_DOMAIN 外设? 这是什么原因?

    我虽然只有主域外设只能在 Linux 中访问。 在 Linux 中也是如何访问 MCU_DOMAIN 外设的?

    谢谢,

    纳雷什  

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

    您好、TI!

    有任何关于这一点的更新吗?

    请更新此问题,因为它对我们至关重要。

    谢谢。

    纳雷什  

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

    您好、Nareesh、


    关于该查询是 AM62ax 还是 AM62x、我的信息有误。

    如果是 AM62x、所有三个 MCAN 都应支持 SDK 卡的$BOOT/DTB/ti 路径中找到的 k3-am625-sk-mcan.dtbo 覆盖层。 您可以使用 dmesg | grep can 验证3个 can。 如果您仍然看到"脱离总线"错误、我将检查硬件设置。


    现在、如果该查询是关于 AM62ax 的、请按照以下说明操作:

    对于 AM62ax 9.0 SDK 而言、MCAN 似乎有两个问题:

    1.MCU_MCAN 节点尚未包含在 k3-am62a-mcu.dtsi 中、这是以下文档中的一个错误: https://software-dl.ti.com/processor-sdk-linux/esd/AM62X/09_02_01_09/exports/docs/linux/How_to_Guides/Target/How_to_test_MCAN_on_AM62x.html。

    要解决此问题、请向 K3-am62a-mcu.dtsi 添加以下节点:

    git.ti.com/.../k3-am62a-mcu.dtsi

    然后重新编译 DTS 以支持 AM62ax。 文件 k3-am62a7-sk.dts -> k3-am62a7-sk.dtb 并复制到 SD 卡的$root/dtb/ti 路径。


    2. AM62ax PSDK 中不包含 MCAN 覆盖层,这也是同一文档中的一个错误。

    为解决此问题、请按1。 复制 k3-am625-sk-mcan.dtso for AM62x PSDK 2.build dts、现在您将具有 k3-am625-sk-mcan.dtbo、3.copy 到 SD 卡的$root/dtb/ti 路径、4. 在 u-boot 提示符下加载覆盖:setenv name_overlays ti/k3-am625-sk-mcan.dtbo。5.boot 6.使用 dmesg | grep can (应该显示3个 CAN 实例)验证 MCU MCAN。

    如果您有任何其他问题、请告诉我。

    ~朱迪斯

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

    Judith、您好!

    我的问题仅与 AM62X 相关

    我们使用 AM6231 SOC。

    在我的定制硬件上,main_can 和 mcu_can 显示.

    主域 CAN0 (mcan0)工作正常。

    但对于 MCU_CAN 获取总线关闭错误。

    JFYI ,我们正在使用 TCAN1044 CAN 模块。

    谢谢,

    纳雷什

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

    您好、Nareesh、

    我懂了。 已在 AM62x SK 上测试了3x MCAN。 我今天再次测试了9.0 SDK、但我使用的是以下 CAN 收发器:
    https://www.digikey.com/en/product-highlight/t/texas-instruments/sn65hvd23x-3-3-v-can-bus-transceivers?utm_adgroup=Texas%20Instruments&utm_source=google&utm_medium=cpc&utm_campaign=Dynamic%20Search_EN_Focus%20Suppliers&utm_term=&utm_content=Texas%20Instruments&gclid=Cj0KCQiAn4SeBhCwARIsANeF9DIfq0FYRUK0h1HCFLLR5baWVfSHr1EPhbWKQyS_PgpNWTNdgrmbcZ8aAgJZEALw_wcB

    此外、TCAN1043还使用 AM62x SDK 中提供的覆盖层进行了测试。

    因此、这似乎更多地是硬件设置问题。

    MCU MCAN 节点没有路由到 A53 GIC 控制器的硬件中断、而是使用计时器轮询实现。 因此、以下代码:

    CAN0 链接 encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    UP NOARP MTU:72公制:1
    Rx 数据包:0错误:0丢弃:0溢出:0帧:0
    TX 数据包:0错误:0丢弃:0溢出:0载波:0
    冲突:0队列 txelen:10
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)

    CAN1 链接 encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
    NOARP MTU:16公制:1
    Rx 数据包:0错误:0丢弃:0溢出:0帧:0
    TX 数据包:0错误:0丢弃:0溢出:0载波:0
    冲突:0队列 txelen:10
    RX 字节:0 (0.0 B) TX 字节:0 (0.0 B)
    中断:249

    正确、因为 CAN0是 MCU 域 MCAN、不应具有"中断:xxx"。

    ~朱迪斯

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

    Judith、您好!  

    已了解  MCU_CAN 没有中断:xxx。

    我的最后一个查询是,

    我们正在使用 TCAN1044模块 ,但 u 已通过 TCAN1043测试。  

    所以我应该使用 TCAN1043驱动程序、还是应该在器件树中配置 TCAN1043?

    TCAN1043 Linux 驱动程序是否与在我的器件(具有 TCAN1044 CAN 模块)上进行配置兼容?

    因为我找不到 TCAN1044驱动程序。

    注:

    对于我们来说,main_can 可以很好地与 DTS 中提到的配置一起工作。 (对于 mcan,我们没有使用 TCAN 驱动程序)

    main_can

    谢谢。

    纳雷什。

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

    您好、Nareesh、

    TCAN1044似乎有一个 STRB 而不是 EN 引脚。 比较数据表 TCAN1042与 TCAN1043与 TCAN1044。 TCAN1044更像 TCAN1042、因为它没有 EN 引脚、但有一个 STRB 引脚。 因此、我将尝试与示例覆盖中使用的同一个 ti、tcan1042兼容性。

    也就是说、同一驱动程序中使用了 ti,tcan1042和 ti,tcan1043兼容性。 因此、您可以查看以下文件:TI Linux 内核中的 phy-can-收 发器.c:drivers/phy 路径。

    ~朱迪斯

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

    Judith、您好!

    信息参见本页。

    实际上我们已将 STB 信号连接到 GND。

    让我来检查一下

    谢谢。

    纳雷什