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.

[参考译文] AM5718:AM5718 上的 DCAN 将在工作几十秒后挂起

Guru**** 2975190 points

Other Parts Discussed in Thread: AM5718, TMDSIDK572

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1659247/am5718-dcan-on-am5718-will-hang-after-working-for-several-tens-of-seconds

器件型号: AM5718
主题中讨论的其他器件: TMDSIDK572

您好、

  我使用 AM5718 来开发我的产品。 SDK 版本为 ti-processor-sdk-linux-am57xx-evm-08_02_01_00-linux-x86-Install.bin。

  我发现了一个非常奇怪的问题。 第一、我个人认为这个问题与 rootfs 无关。 我在 TI AM5718 SDK 中未使用 rootfs。

  在 Linux 系统启动后、初始 DCAN1 可以正常工作一段时间。 但在大约 33 秒(在内核日志中)时、DCAN1 既不能接收也不能发送(我使用 cansend 和 candump 进行测试)。 我已经尝试过很多次,这个问题是不可避免的。 有两种方法可以解决该问题。

  1.发生此问题后、可使用 ifconfig CAN0 down/up 命令恢复此问题。 目前,我们的客户不想以这种方式使用它。
  2.如果我延迟启动 CAN,即 33 秒后, DCAN 将不会有这个问题。 我们目前正在使用这种方法、但产品体验不好。

  为解决这个问题、我调试并跟踪了一些寄存器状态。 我发现当 CAN 正常工作时 DCAN_ES (0x4AE3C004) 为 0x00000008、当 CAN 工作错误时、DCAN_ES (0x4AE3C004) 为 0x00000207。 我阅读了 AM5718 的 TRM、我获得了以下信息:

  设置了 WAKEUPPND 位。 (1:在模块断电时、由于 CAN 总线处于显性状态、DCAN 已启动系统唤醒。)
  2. LEC 为 0x7。

我不知道是什么原因引起的。 也许我提供的信息不是很准确、但这是我目前的所有发现。 我搜索了 TI 论坛、但找不到任何有用的补丁。 我希望有人能帮助我。


非常感谢。

此致、

Steve Sun

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

    如果我使用“ifconfig CAN0 down“命令、将显示这一行信息

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

    您好、Steven、

    首先、我想正确设定期望、请告知您、自 2023 年支持期结束以来、我们此版本的 SDK 不再支持补丁。

    正式支持的唯一 SDK 是 11.1 版、直到今年 10 月。

    其次、您可以使用 SDK 和 TI EVM 重新创建问题吗? 我假设您的电路板是定制的、对吧?

    这将是最简单的支持方式。

    对于较早 SDK 中的客户、正式建议迁移到最新版本。

    -Josue

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

    您好 Josue、

       感谢您的答复。

      我将尝试使用 版本 11.1 的 SDK。  

       如您所说、该电路板由我们自己定制。 我有 TMDSEVM572x、我稍后再试。  完成尝试后、我将提供有关结果的反馈。

    此致、

    Steve Sun

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

    很遗憾、我的 TMDSEVM572x 不支持 CAN。

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

    史蒂夫·孙, 

    正确的是、只有 TMDSIDK572 集成了 CAN 接口。 如果您能在自己这边找到一个可以简化事情的解决方案。 或者、您可以购买 CAN 模块并将其连接至 AM572x GP EVM。 第二个选项可能失去了目的,因为我不能做同样的,我可以只在现有的硬件 TMDSIDK572 上运行测试.

    您能给我一个一步一步的测试设置和命令运行吗?

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

    您好 Josue、

      您可以 在 SDK 中使用最小 rootfs。 这将加快系统启动速度。 将以下命令写入启动脚本、并 使用 CAN 工具持续向 EVM 发送 CAN 消息。  关闭电源、然后打开电源、等待...

    IP 链路设置 CAN0 已关闭
    IP 链路集 CAN0 类型 CAN 比特率 1000000
    IP 链路设置 CAN0 UP

    CANdump CAN0 &

    /home/root/cansend.sh 和

     cansend.sh 的内容如下:
    #! /bin/sh


    同时为 true
    应该做
      CANSEND CAN0 321#8877665544332211
      睡眠 1
    已完成

      从 Linux 启动到出现此问题大约需要 30 秒。 我们的电路板通常会在 33 或 34 秒时遇到此问题。  我添加了一些日志、发现 C_CAN_CTRL_REG 此时会从 0x0E 更改为 0x0F。 我不知道是什么引起了这个问题。 我稍后会给您展示几张图片。

       目前、我已经创建了一个临时解决方法来解决此问题。  尽管目前不再支持 ti-processor-sdk-linux-am57xx-evm-08_02/01_00-Linux-x86-Install.bin、但 您可以试用。

    感谢你的帮助。

    此致、

    Steve Sun

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

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

    感谢您的分享、

    我需要一些时间来尝试。 我可能会在下周有时间。

    -Josue

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

    好的。

    我认为是什么导致 DCAN 进入初始化模式应该是关键点。

    谢谢。

    此致、

    Steve Sun

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

    您好:
    感谢您的查询。 ** Josue Zamitiz**目前正在休假、将在** 2026年07月07日**上提供。
    您的问题将在他们返回后得到解决。 感谢您的耐心和理解。
    此致、
    TI E2E 支持团队
    ——
    *这是一个自动通知。*

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

    您好 Steve、

    最后需要在默认的 11.1 SDK 中测试此测试、我没有看到任何失败:

    e2e.ti.com/.../can_5F00_test_5F00_11_5F00_1_5F00_SDK.txt

    请参阅上面的输出。

    设置:CAN 环回模式下的 AM571x IDK。

    使用的文件:

    can_test_start.sh

    #!/bin/sh
    ip link set main_dcan1 down
    ip link set main_dcan1 type can bitrate 1000000 loopback on
    ip link set main_dcan1 up
    
    candump main_dcan1 &
    /cansend.sh &
    

    cansend.sh

    #!/bin/sh
    
    while true
    do
            cansend main_dcan1 321#8877665544332211
            sleep 1
    done
    

    can-test.service

    [Unit]
    Description=CAN test startup
    After=network.target
    
    [Service]
    Type=forking
    ExecStart=/can_test_start.sh
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target

    如果需要进一步测试、我需要分配更多时间。
    似乎在更新的默认 Linux 版本中发生的任何事情都可能得到修复。

     我不确定是否是最小 rootfs 会使事情更快到您看到此问题的地方。 您是否使用默认 SDK 进行了测试?

    如果出现 PM 问题,也可以尝试执行此操作 — 在 IP 链接设置 main_dcan1 之后将其添加到启动脚本中:

    echo “on“>/sys/bus/platform/devices/4ae3c000.can/power/control

    这会告知 PM 框架保持设备始终处于开启状态并忽略自动挂起请求。

    -Josue

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

    您好 Josue、

       我尝试了新版本 ti-processor-sdk-linux-am57xx-evm-09_03_06_05、 似乎不再存在这个问题。

    echo “on“>/sys/bus/platform/devices/4ae3c000.can/power/control

    我记得尝试过这个命令、但它没有效果。

    由于 systemd 启动的服务太多,整个系统启动的速度很慢,所以我使用 busybox 创建了一个简单的文件系统。  我认为它与文件系统无关,因为我只替换了 dtb 和 zImage ,而新版本不再有这个问题。  目前、似乎没有更好的方法来找到根本原因、因此我将首先使用我的解决方法。  我现在还有其他工作要做、因此这个问题暂时搁置。 我在未来有了新的发现、我将再次更新。

    谢谢。

    此致、

    Steve Sun

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

    Steve、

    感谢您的更新。

    此致、  

    Josue