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.

[FAQ] [参考译文] [常见问题解答] TDA4VM:如何在 TDA4/DRA8器件中使用 CPSW 进行 MAC 环回测试

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1203408/faq-tda4vm-how-to-do-a-mac-loopback-test-with-cpsw-in-tda4-dra8-devices

器件型号:TDA4VM

我的以太网链路中存在一些问题。 我想使用 MAC 环回进行完整性检查、看看 MAC 是否运行良好。 是否有简单的方法可以做到这一点?

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

    您好!

    来自 CCS (针对 enet LLD 应用和 Ethfw)

    1. 启动正确的目标配置并连接到运行应用的内核。 对于 Ethfw 服务器、它将为 MCU2_0 (CCS 调试窗口中的 MAIN_Cortex_R5_0_0)。  暂停/暂停内核。
    2. 您可以在 CCS 中从"Memory Browser"窗口读取/写入寄存器。 要打开"Memory Browser"窗口、请转至"View"→"Memory Browser"
    3. 在"Memory Browser"窗口中、输入 CPSW_PN_MAC_CONTROL_REG 的地址。 您可以从 TRM 获取该地址。
      1. 地址通常为  CPSW_BASE_ADDR+0x22330+(k*0x1000) ,其中 k 是端口号(0已索引,不带主机端口)
        1. 例如、如果您使用端口3、k 将为2。
        2. 使用十六进制地址、前缀为"0x"。
    4. 从"Memory Browser"窗口中读取 CPSW_PN_MAC_CONTROL_REG 的值。
    5. 设置寄存器中的第1位(LSB 为0th)、并将值写回到同一地址。 要写回寄存器、请双击该值、您只需键入新值即可。 输入正确的值后、按"Enter"键。
      1. 因此、如果从寄存器中读出0x000000B9、设置位1会使值0x000000BB。
    6. 您的 MAC 现已配置为环回模式。
    7. 要执行环回测试、
      1. 在测试之前转储 CPSW 统计信息。
      2. 通过端口从 SoC 发送测试数据帧。 至少发送5-10个数据包。 然后再次转储 CPSW 统计信息
      3. 如果您在待测端口的 Tx_good_FRAMES 和 Rx_good_FRAMES 中看到增量、则 MAC 正在正常工作。
    8. 将原始值写回 CPSW_PN_MAC_CONTROL_REG 以消除环回。 回送开启时、正常通信不起作用。 确保在测试后拆下环回装置。

    来自 Linux (原生 Linux 驱动程序)

    1. 除了读取和写入寄存器的方法、该过程与 Linux 相同。
      1. 要读取寄存器,请使用:  devmem2 $addr
      2. 要写入寄存器,请使用:  devmem2 $addr w $value
    2. 按照上一节中的步骤3至7进行 MAC 环回测试
    3. 可以使用脚本在 Linux 中自动进行此测试。 您可以使用以下脚本作为参考
      1. Fullscreen
        1
        2
        3
        4
        5
        6
        7
        8
        9
        10
        11
        12
        13
        14
        15
        16
        17
        18
        19
        20
        21
        #!/bin/bash
        my_ip_addr=192.168.1.46
        server_ip_addr=192.168.1.100
        mac_addr=0x0C023330
        IF_NAME=eth2
        echo "======= $IF_NAME stats ======="
        ethtool -S $IF_NAME | grep good
        echo "**************************"
        echo "Setting CPSW in Loopback"
        echo "**************************"
        var=$(( 16#$(devmem2 $mac_addr | tail -n1 -c9) ))
        devmem2 $mac_addr w `expr $var + 2`
        devmem2 $mac_addr
        echo ""
        echo "Running Ping ..."
        XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

    如果看到 MAC 环回测试通过、则接下来应进行 Phy 环回测试。

    有关如何读取 CPSW 统计数据的更多详细信息、请参阅此常见问题解答

    此致、
    Tanmy.