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.
工具与软件:
您好!
我正在为我们的一个项目开发一个以太网驱动程序、并正在尝试确保 MAC 层正常工作。
当我使用 HALCoGen 中提供的示例代码并在 RX 和 TX IRQ 中设置断点时、效果是很好的。
为了用我的 PC 验证这一点、我从 ECU 向 PC 发送了 ARP 请求、但在 Wireshark 中看不到任何 ECU MAC 地址数据。
2.1.我尝试在 EMAC 下启用环回。
2.2.我也尝试了没有启用回送,但它仍然不起作用。
此致、
Sandeep
我在此处附上了代码、请验证一次
正在工作。
我发现解决方案现在工作正常,我测试了虚拟 ARP 请求到 PC ,然后我可视化在 Wireshark 中,我可以看到数据。
面临的问题或需要帮助
我目前正致力于将 Mongoose 与我们不使用 LWIP 的项目集成。 我正在移植 TX 和 RX 中断处理程序、以便与 Mongoose 兼容。 但我遇到了一些困惑、尤其是在关于 RX 描述符数据访问方面。
我注意到在 RX 处理程序中while
使用了一个循环。 您能否更深入地了解采用这种方法的原因? 此外、如果您有任何文档或资源可以帮助我更好地理解 RX 描述符处理及其与 Mongoose 的集成、我将不胜感激。
while (hdkif_switze_data (CURR_BD->flags_pktlen)和 EMAC_BUF_DESC_SOP)
{
ex_len = 0;
len_to_alloc = 0;
/*数据包加载后开始处理*/
if ((hdkif_switze_data (CURR_BD->flags_pktlen)& EMAC_BUF_DESC_OWNER)!= EMAC_BUF_DESC_OWNER){
if (rxch->free_head == NULL){
/*此 BD 链将在处理后释放*/
rxch->free_head = CURR_BD;
}
/*获取数据包的总长度。 CURR_BD 指向开始
*的数据包。
*/
tot_len = hdkif_switzle_data (CURR_BD->FLAGS_pktlen)和0xFFFF;
/*获取 pbuf 队列的开始*/
q = CURR_BD->Pbuf;
执行{
/*获取与当前 BD 关联的 pbuf 指针*/
pbuf = CURR_BD->pbuf;
/*如果较早的 pbuf 已结束、请更新链*/
if (pbuf->next == NULL)
{
pbuf->next =(struct pbuf*) hdkif_switzle_rxp (CURR_BD->next)->pbuf;
}
len_to_alloc += pbuf->len;
/*更新链中 pbuf 的 len 和 tot_len 字段*/
pbuf->len = hdkif_switzle_data (CURR_BD->bufoff_len)& 0xFFFF;
pbuf->tot_len = tot_len - ex_len;
Processed_BD = CURR_BD;
ex_len += pbuf->len;
CURR_BD = hdkif_switzle_rxp (CURR_BD->NEXT);
} while ((hdkif_switze_data (Processed_bd->flags_pktlen)& EMAC_BUF_DESC_EOP)!= EMAC_BUF_DESC_EOP);
此致、
Sandeep C
举个例子、创建 本地缓冲区1518字节、然后在 UART 终端上打印
Sandeep、您好!
很高兴听到您自己解决了此问题。
——
谢谢、此致、
Jagadish。