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.

[参考译文] RTOS/66AK2H12:K2H 上的 EMAC 驱动程序

Guru**** 2595805 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/637456/rtos-66ak2h12-emac-driver-on-k2h

器件型号:66AK2H12

工具/软件:TI-RTOS

XDCtools 3.50.02.20、SYS/BIOS 6.50.01.12、PDK 04.00.06、NDK 2.25.01.11

我正在努力将工作中的 NIMU_emacExample_EVMK2H_armBiosExampleProject 示例移至我们的 SBC 目标并使其正常工作。 看起来评估板使用 EMAC1 (phy_addr 1)。 我们的板使用 EMAC0 (phy_addr 0)。

我在以下 URL 中查看 EMAC 文档: http://processors.wiki.ti.com/index.php/Processor_SDK_RTOS_EMAC。 该电流是多少?  

在我的 C:\ti\pdk_k2hk _4_0_6\packages/ti\drv 目录下、我没有 EMAC 目录。 上述文件表明我应该这样做。

此外、通过搜索 TI 代码、K2G 板似乎支持 EMAC。 例如、C:\ti\pdk_k2hk _4_0_6\packages \ti\board\diag\emac\src 具有 EMAC_test.c、但它意味着 K2G (例如、#include )但没有任何 K2H 的证据。 尽管这是专门用于 Keystone II (K2H、K2K)的 PDK。

为了解决选择不同 PHY 的问题、我们是否需要重建 EMAC 驱动程序? 重建 PDK? 还是运行时设置配置步骤?

Mike

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

    我已将您的疑问转发给软件专家。 他们的反馈应发布在此处。

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

    对于 K2H、它使用数据包加速器(PA)、因此驱动程序为 drv\pA、维客为 processors.wiki.ti.com/.../Processor_SDK_RTOS_PA。 默认情况下、这应支持所有 EMAC 端口回送。

    当您尝试处理 Nimu 示例时、wiki 为 processors.wiki.ti.com/.../Processor_SDK_RTOS_NDK。 我相信 NIMU_emacExample_EVMK2H_armBiosExampleProject 已经在 TI K2H EVM、EMAC 端口0上工作。

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 Eric。 感谢您查看我的问题并澄清驾驶员的情况。 请允许我重新表述我的问题。 如何在 NIMU_emacExample_EVMK2H_armBiosExampleProject 示例中选择要使用的 EMAC 端口?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    K2H 使用 Nimu 驱动程序 ti\transport \NDK\Nimu\src\v2、存在一个 nimu_eth.c、其中 gTxPort = 0、强制数据包从 eth0传出。 我想您可以更改 gTxPort = 1、然后重建 NIMU 库、然后测试应用程序来尝试是否可以 ping eth1。 如果它不起作用、我们需要更多时间进行调试。

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

    Eric、

    感谢您的支持。 我昨天做了一些测试。

    我看到 Nimu_eth.c 被编译到一个名为 ti.transport.ndk.Nimu.aa15fg 的发布库中

    该库和其他库包括:ti.drv.rm.aa15fg、ti.drv.pa.aa15fg、ti.drv.qmss.aa15fg、ti.drv.cpi.aa15fg 和 ti.osal.aa15fg、因为它们列在 cfg 文件中。 (我还不理解 cfg 文件中 xdc.useModule ()和 XDC.loadPackage()之间的区别)。

    这个库在我们的 CCS 项目中被链接、例如 NIMU_emacExample_EVMK2H_armBiosExampleProject 示例。

    我在文件 Nimu_eth.c (在我找到的两个位置、它当前设置为0)中将指示的变量 gTxPort 设置为1、重建 ti.transport。ndk.Nimu.aa15fg、然后重建示例项目。 (该变量是什么、它在哪里定义、它在哪里注释/记录?)

    结果:我无法按预期通过 ENET0对 EVM 执行 Ping 操作,但我也无法按预期在 EMAC1上执行 Ping 操作。

    我不会遇到错误、编译或运行时。 在新的上电过程中,除正常输出消息外,没有其它消息:

    [ARM_A15_0] QMSS 已成功初始化

    CPPI 已成功初始化

    PA 已成功初始化

    TCP/IP 堆栈'Hello World!' 应用程序堆栈测试:使用 localIp

    网络已添加:IF-1:10.10.70.50

    将 gTxPort 恢复为0、重新编译 NIMU 库、项目通过 ENET0再次开始 ping 操作。

    Mike

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

    我需要在内部检查如何测试 K2H 端口1并返回给您。

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

    Eric、


    我仍在尝试使其正常工作。


    在 Nimu_eth.c 中、我通过 替换以下内容修改了 EMACInit_Core ():

    对于(i = 0;i < NIMU_MAX_EMAC_PORT_NUM;i++)
    {
    NIMU_getEmacInfo (i、&EMAC_INFO);
    IF (EMAC_INFO_MODE = 1)
    {
    GTxPort = 0;
    break;
    }
    
    }if (i < Nimu_MAX_EMAC_PORT_NUM)
    {
    gTxPort = 0;
    memcpy (ptr_pvt_data->PDI.bMacAddr、EMAC_INFO_MAC_ADDRESS、6);
    }
    else
    {
    Nimu_drv_log ("错误:无法找到 TX EMAC 端口;\n"return"
    );return}
    

    其中:

    #define EMAC_PORT 1
    NIMU_getEmacInfo (EMAC_PORT、&EMAC_INFO);
    gTxPort = EMAC_PORT;
    memcpy (ptr_pvt_data->PDI.bMacAddr、EMAC_info.mac_address、 6); 

    重新编译了 Nimu 库和 Nimu_emacExample_EVMK2H_armBiosExampleProject。 无法长时间 ping ENET0或 ENET1。

    对于下一个测试、我看到 coreNum 在许多硬编码中设置为0的位置。 (我们再次处于 ARM 上、因此未定义_TMS320C6x)。 我将文件中所有位置的 coreNum 设置为新的定义、CORE_NUM 和定义的 CORE_NUM 1。 我将上述代码更改保存在 EMACInit_Core () 中。 没有成功。 我们无法 ping ENET1。


    我通过在 NIMU_drv_log.h 中取消注释#define CIO_DRV_console 来启用 NIMU_drv_log 函数 以下是我在 CCS 控制台上进行上述更改后获得的内容:


    [ARM_A15_0] QMSS 已成功初始化
    CPPI 已成功初始化
    PA 已成功初始化

    TCP/IP 堆栈'Hello World!' 应用

    StackTest:使用 localIp
    EMACInitCore:coreNum:1.
    已成功初始化传递
    SGMII 串行器/解串器通道初始化完成
    以太网子系统已成功初始化
    Setup_Tx:gTxCmdFreeQHnd:8929、0x22e1
    Setup_Tx:gTxCmdFreeQHnd:8929、0x22e1
    Setup_Rx:coreNum:1.
    SETUP_Rx_queue (累加队列):gRxQHnd:0x22c0、qMgr:0x2、qNum:0x2c0
    SETUP_Rx_queue:寄存器中断成功
    EMAC 注册成功,正在等待链接。
    网络已添加:IF-1:10.10.70.50


    如果我将我的定义 CORE_NUM 和 EMAC_PORT 都设置为0、则重新编译 NIMU 库和 NIMU_emacExample_EVMK2H_armBiosExampleProject、然后我可以再次 ping ENET0。 以下是此操作的控制台输出:


    [ARM_A15_0] QMSS 已成功初始化
    CPPI 已成功初始化
    PA 已成功初始化

    TCP/IP 堆栈'Hello World!' 应用

    StackTest:使用 localIp
    EMACInitCore:coreNum:0
    已成功初始化传递
    SGMII 串行器/解串器通道初始化完成
    以太网子系统已成功初始化
    Setup_Tx:gTxCmdFreeQHnd:8929、0x22e1
    Setup_Tx:gTxCmdFreeQHnd:8929、0x22e1
    Setup_Rx:coreNum:0
    SETUP_Rx_queue (累加队列):gRxQHnd:0x22c0、qMgr:0x2、qNum:0x2c0
    SETUP_Rx_queue:寄存器中断成功
    EMAC 注册成功,正在等待链接。
    网络已添加:IF-1:10.10.70.50

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

    感谢您的试用。 我与开发团队和发展轨迹进行了一些讨论、我们仍在进行这方面的工作。 您的要求是使端口0和端口1同时工作、还是仅需要端口1工作?

    此致、Eric
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们自己的要求是只有一个端口可以工作、但能够选择要使用的端口。 在构建时进行选择就足够了。

    我想知道为什么评估板会有两个 ENET 端口、但这两个端口不能同时支持。 我可以很容易地设想有人同时需要这两个端口、并且可以看到评估板有两个端口错误地假设有支持。

    此致、
    Mike
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好 Eric。 我想知道您是否可以 ping 开发团队、看看他们是否知道如何选择要使用的端口。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我在我们的需求跟踪系统中开了一个 TT。 我将向您介绍我们的最新进展。

    此致、Eric