主题中讨论的其他器件: HALCOGEN
大家好、
以下是客户提出的问题、可能需要您的帮助:
在 TMS570LC4357上移植 lwip1.4.1时、未接收到多播帧、并且正确接收到广播和单播帧。 然后发现接口未从 EMAC 接收到多播帧。
使用 HALCOGEN 生成客户的驱动器、并根据需要进行一些修改、以下代码是用于调用 EMAC 接口的部件:
netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP | NETIF_FLAG_IGMP; EMACInit(hdkif->emac_ctrl_base, hdkif->emac_base); MDIOInit(hdkif->mdio_base, MDIO_FREQ_INPUT, MDIO_FREQ_OUTPUT); while(delay--); EMACRxBroadCastEnable(hdkif->emac_base, 0); /* Set the MAC Addresses in EMAC hardware */ EMACMACSrcAddrSet(hdkif->emac_base, hdkif->mac_addr); /* Acknowledge receive and transmit interrupts for proper interrupt pulsing*/ EMACCoreIntAck(hdkif->emac_base, EMAC_INT_CORE0_RX); EMACCoreIntAck(hdkif->emac_base, EMAC_INT_CORE0_TX); EMACRxUnicastSet(hdkif->emac_base, 0); EMACRxMultiCastEnable(hdkif->emac_base, 0); EMACNumFreeBufSet(hdkif->emac_base, 0, 10); /* Write the RX HDP for channel 0 */ EMACRxHdrDescPtrWrite(hdkif->emac_base, (U32)rxch->active_head, 0); EMACTxEnable(hdkif->emac_base); EMACRxEnable(hdkif->emac_base); EMACMIIEnable(hdkif->emac_base); /** * Enable the Transmission and reception, enable the interrupts for * channel 0 and for control core 0 */ EMACTxIntPulseEnable(hdkif->emac_base, hdkif->emac_ctrl_base, 0, 0); EMACRxIntPulseEnable(hdkif->emac_base, hdkif->emac_ctrl_base, 0, 0);
您能否帮助检查上述代码是否存在任何错误? 谢谢。
此致、
樱桃
