在开发板上调试网口,下载了论坛提供的例程C6657_EMAC_Example.zip,运行发送程序通过,并在WireShark上得到发送的数据。但有个问题:
单步运行程序,当运行到EMAC_Send函数时,发现运行语句
if (0 == EMAC_REGS->TX0HDP)
{
EMAC_REGS->TX0HDP = (Uint32)newDesc;
} 无效,也就是,TX0HDP寄存器写不进去,所以后面的((EMAC_Desc *) emac_mcb.lasttxhdp)->pNext = newDesc;语句一直得不到运行,也就是发送的发送符链表根本就建立不了。
尝试把语句newDesc->PktFlgLen = EMAC_DSC_FLAG_SOP | EMAC_DSC_FLAG_EOP | EMAC_DSC_FLAG_OWNER | len;中的EMAC_DSC_FLAG_OWNER去掉,则TX0HDP寄存器可以写入,但是wireShark上抓不到数据,即EMAC数据没有输出。请问是什么原因。