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.

[参考译文] AM625:M4F 上的 AM62x MCAN 有时在引导后无法接收、并会阻止 IP 链路设置复位

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1590222/am625-am62x-mcan-on-m4f-occasionally-fails-to-receive-after-boot-resists-ip-link-setreset

器件型号: AM625

根据“4.1.6 中的参考、我将在 AM625x SOC 上测试 MCU MCAN 接口。 AM62x 和 AM62ax 器件上的 3 个 MCAN。“ 4.1.6. AM62x 和 AM62ax 器件上的 3 个 MCAN—Processor SDK AM62x 文档
  • tisdk_version:ti-processor-sdk-linux-rt-am62xx-evm-08.06.00.42
  • 内核:linux-5.10.168
在大多数情况下、我可以使用“发送“和“转储“进行正常通信。 但是、在极少数情况下、通过该接口的通信会失败。 当我检查 CAN 接口状态时、表明没有接收到数据包。 image.png 此外、在这种情况下、我无法使用“IP link set CAN1 down/up“复位接口 、因此、我想寻求您的帮助。 我希望获得以下方面的建议:
  1. 如何避免在接口无法使用的情况下出现这种罕见的情况?
  2. 如果确实发生这种情况、如何重置 CAN 接口以恢复正常运行?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:

    您能否共享您的硬件测试设置? 它是在 TI EVM 还是定制硬件上进行测试?

    谢谢、

    Anshu

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

    尊敬的 Anshu:

    感谢您的评分

    它在我们自己的定制板上进行了测试。 原理图已附在后。

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

    以下是我们观察到的一些可能有助于诊断的其他测试现象:

    1. 我们尝试 MCU_CAN0_CFG使用以下命令读取正常状态和错误状态下的寄存器值: “for i in{0..256..4};do devmem2 $(printf '0x%x'$((0x04E08000 + I)));DONE > NORMAL_REGISTERS“

    2. 我们发现在异常状态下、该命令无法读取寄存器的值(例如,它可能挂起或返回错误)、而在接口正常时它可以正常工作。
    3. 我们还尝试通过 /sys/class/remoteproc/remoteproc0/state节点重新加载 M4F 固件、但此操作未解决问题。 CAN 接口一直卡住。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我已经确定了有关这个问题的一个要点。 根本原因似乎是 CAN1 和 CAN2 的器件名称偶尔会意外交换。 这会导致逻辑器件名称(例如 CAN1)与实际硬件器件(例如 MCU_mcan0)不匹配、从而无法通过预期接口进行通信。 观察到的症状(CAN1 无法通信)发生、因为在这种情况下、实际的 MCU_mcan0 器件被分配了名称 CAN2。

    虽然我可以使用启动脚本或 udev 规则作为临时解决方法来稳定设备命名、但我想确认您的团队是否有更稳健或更推荐的解决方案来永久解决此问题。