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.

[参考译文] RM46L852:LwIP 是否在轮询而不是 EMAC Tx 和 Rx 中断上工作?

Guru**** 2463330 points
Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/648356/rm46l852-does-lwip-works-on-polling-instead-of-emac-tx-and-rx-interrupt

器件型号:RM46L852
主题中讨论的其他器件:HALCOGEN

您好!

在我们的应用中、我们不使用任何类型的中断。 我们需要实施/使用 TI LwIP 以太网堆栈。 但是、我认为该堆栈基于中断。  

我的问题是、是否可以使用 EMAC 模块的轮询方法而不是中断? 是否有任何应用程序或代码可用于相同的应用程序或代码?

  

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

    理论上、在 lwip 中使用轮询模式是可行的、但我们没有使用轮询模式的示例项目。 您是否将继续轮询标志以检查传入的软件包?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ、

    是的。 在主循环中、我们将轮询传入的软件包。

    我们正在研究堆栈。 但是、如果您指导我们轮询所需的堆栈更改的位置、这将非常有用。

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

    QJ、

    在我们的应用中、我们已将 PLL1和 PLL2时钟配置为220Mhz。

    现在、我们必须在代码中合并以太网 EMAC 和 MDIO 模块。 我们遵循以下针对以太网的指南。

    http://processors.wiki.ti.com/index.php/HALCoGen_Ethernet_Driver_and_lwIP_Integration_Demonstration

    使用 HALCoGen GUI 配置 EMAC 和 MDIO

       1.在‘PLL’选项卡下,将两个 PLL 的乘法器更改为120,这样两种情况下的输出频率都为160.00 MHz。  

      2.在‘GCM’选项卡下,将 VCLKA4分频器的值更改为2,这样 VCLKA4 (对于 RM46x/TMS570LS12x 器件,为 VCLKA4_DIVR_EMAC)的输出为40.00 MHz。

    为了使以太网工作、是否需要将时钟配置为160MHz? 如果 我们将时钟保持在220Mhz、以太网模块是否工作?

     

     

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

    您好!

    可以为 EMAC 配置 vclka4至40MHz。

    我没有用于轮询模式的示例代码。 为您的应用程序修改当前项目非常简单。 RX ISR 为:

    hdkif_rx_inthandler (struct netif * intif){...} 在 hdkif.c 中

    RXPENDn 是接收通道0至7的接收数据包完成中断标志:

    if (intr_FLAGS & EMAC_MACINVECTOR_RXPEND){.}

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

    QJ、

    感谢您的回复。 我将在开发以太网轮询代码时使用。

    我们使用 TI HALCoGen EMAC 驱动程序给出的示例以及 lwIP 演示/v00.03.00 (基于以太网中断)来测试 HDK 板(RM46)并使用静态 IP 使用我们的台式机进行测试,但我们观察到 control 返回 IPADr 值为"0"。

    可能的原因是什么?

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

    如果您使用"IPADDR_USE_STATIC"选项、则必须为电路板分配 IP 地址。 您可以首先使用"IPADDR_USE_DHCP"获取分配给您的板的 IP 地址、然后使用静态选项。

    ipaddr = lwIPInit (0、macAddress、0、0、0、0、 ipaddr_use_dhcp);-->获取 IP 地址
    2.在 CMD 窗口中使用 ipconfig 获取 PC 和 netlask/gateway 的 IP 地址
    ipaddr = lwIPInit (0、macAddress、ip_addr、网络掩码、网关、 ipaddr_use_static);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复。

    我们忘记打开 S2-4交换机、这样 HDK 硬件就可以支持以太网了。

    现在在示例软件 v00.03.00上、我们获得 IP 地址。  

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

    我们将 V00.03.00 lwIp 堆栈集成到了软件中。 此外,还添加了 V00.03.00已知问题的修补程序。

    然后、我们尝试使用 Halcogen 生成的以太网 Tx 和 Rx ISR 来运行代码。 在函数调用后:
    lwIPInit (0、emacAddress、*((uint32_t *) Static_IpAddr)、*(((uint32_t *) netmask)、*(((uint32_t *) Gateway)、 ipaddr_use_static);
    我们观察到代码卡在 Tx 处理程序中
    while (((CURR_BD->FLAGS_pktlen)& EMAC_BUF_DESC_ONER)== EMAC_BUF_DESC_ONER)

    2.之后,我们根据演示应用程序更新了 ISR,并在函数调用后运行代码:
    lwIPInit (0、emacAddress、*((uint32_t *) Static_IpAddr)、*(((uint32_t *) netmask)、*(((uint32_t *) Gateway)、 ipaddr_use_static);
    我们观察到、它不会卡在 Tx ISR 中、但 Tx ISR 会被连续调用、并且从不会从 lwIPInit 返回。

    3.假设我们获得了静态 IP 地址,并且我们要检查 PC 和 HDK 板之间的连接。 我们可以从 PC 使用'ping'命令吗? 我们是否需要定期调用任何函数来处理传入的 ping 请求?

    4.与 webserver 相同的问题,一旦我们初始化 httpd(),我们是否需要调用任何函数来处理传入的请求?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    QJ、

    上述查询的任何更新

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

    QJ、

    感谢您的支持。

     我们的代码按预期工作、分别获取静态 IP 和 DHCP IP。 在 URL 中放置相应的 IP 地址后、TI Web 服务器页面会打开。

    问题是、在我们的代码中、我们使用 IRQ 调度程序方法来处理中断、Halcogen 提供#pragma EMAC RX 和 TX 中断。

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

    QJ、

    在基于当前中断的 LwIP 协议中、DHCP 或静态 IP 通过中断。

    对于 LwIP 轮询,当前在 while 循环中,我们将轮询相应的 TX 和 RX 标志,并且它工作正常。 对于 IP Ping、我们会得到响应、TI Hercules 网页也会打开。

    您能不能帮助我们识别在轮询时获取 DHCP IP (在函数 lwip_init()中)所需的 LwIP 堆栈更改 ?

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

    在当前的 LwIP 堆栈中、DHCP 和静态 IP 都通过中断和回调函数获取。

    您能否帮助我们确定通过轮询以太网 Tx 和 RX 标志获取 DHCP IP 所需的更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QJ、

    在当前的 LwIP 堆栈中、DHCP 和静态 IP 都通过中断和回调函数获取。

    您能否帮助我们确定通过轮询以太网 Tx 和 RX 标志获取 DHCP IP 所需的更改?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    QJ、

    在当前的 LwIP 堆栈中、DHCP 和静态 IP 都通过中断和回调函数获取。

    您能否帮助我们确定通过轮询以太网 Tx 和 RX 标志获取 DHCP IP 所需的更改?