我正在将MYIR Z-turn与z7020芯片(Xilixn Zynq设备)一起使用,并试图使lwIP在基于FreeRTOS的设计中工作。我以FreeRTOS lwIP回显服务器示例为基础。我了解Xilinx端口示例仅支持Marvell,TI或Realtek PHY芯片,但是查看我的电路板文档后,我可以看到我正在使用Microchip的KSZ9031RNX PHY。
我从this和this线程中读到,还从this AR和this github回购中了解了如何实现Microchip PHY支持。因此,本质上,我在 xemacpsif_physpeed.c 文件中添加了与Microchip PHY进行自动协商的支持。但是,我仍然无法使以太网示例正常工作。通过调试器逐步执行代码,我可以看到调用 xemac_add 函数时 network_thread 实际上已挂起。更精确的是,它挂起了尝试通过重置PHY并等待PHY退出似乎从未执行过的重置(while(1)循环)来尝试执行自动协商的位置。
但是,我认为主要问题是与PHY芯片的通信,因为对 XEmacPs_PhyRead 函数的所有调用似乎返回的值为0xFFFF。我认为这也是为什么在 detect_phy 函数的调用中未正确标识PHY地址的原因-从主板文档中我看到PHY地址应为3,但不会被检测为 XEmacPs_PhyRead 函数从31循环到0时总是返回0xFFFF值。
另一方面,我知道硬件可以正常使用,因为我已经在板上运行了linux,并且可以使用以太网接口。因此它必须是软件或配置中的内容。我也尝试过独立版本的echo服务器,但是没有区别,它仍然无法正常工作。
lwIP源文件中还有其他应配置或更改的内容,以使其与Microchip PHY一起使用吗?
我正在使用Vivado / SDK 2018.3发行版以及FreeRTOS10 v1.2和lwIp202 v1.2版本。