ZYNQ 使用 VAVIDO 和 SDK 进行编程。其中 VAVIDO 中设置 很简单,加入ETH0 即可。如下图,在SDK 中新建 project 时选用lwip 的例程即可。这里推荐zynq 学习视频,南京米联客论坛对我帮助很大,有视频有代码,提问题也会有工程师回复 http://www.osrc.cn/home.php?mod=space&do=notice&view=mypost
这里因为我手里的板子是z-turn 板,以太网PHY 为 KSZ931,与代码默认的不同,尤其是在检查phy speed 时,寄存器编号不同,导致于查不到速度,会卡在这里,
我在 xemacpsif_physpeed.c 中,复制函数get_Marvell_phy_speed()函数改为get_Micrel_phy_speed(),对以下语句进行修改
XEmacPs_PhyRead(xemacpsp, phy_addr,31,
&status_speed); // 读取寄存器17,改为31 IEEE_SPECIFIC_STATUS_REG
if (!(status_speed & 0x01)) { //link on 原来0x400,第10 位
xil_printf("PHY Link stutus:not failing \r\n");
temp_speed = status_speed & 0x70; // 读取最高两位速度status_speed & IEEE_SPEED_MASK
if (temp_speed == 0x40)//IEEE_SPEED_1000
return 1000;
else if(temp_speed == 0x20)//IEEE_SPEED_100
return 100;
else
return 10;
}
之后即可运行,在用电脑Ping之前千万注意,最后确认下电脑的 IP 地址。
第一次写博客写的好乱啊,下次要整理成更加清晰的呢