RT-Thread 龙芯1C(智龙开发板)的网络lwip升级到2.1.0
1. 硬件平台
智龙开发板V3.42 。
2. 软件平台
RT-Thread 4.0.0, 其中LWIP 2.1.0 。
3. 问题描述
一直使用 RT-Thread 软件平台,配套lwip1.4.1。 在调试过程中, RTT 组件丰富,尤其是一些小工具,如 ping 、 tftp 进行文件传输。 想使用这些小工具时发现 lwip1.4.1 没有apps目录,不能够使用以上工具。 考虑升级至 lwip 2.1.0。
在 env 中,勾选 lwip 2.1.0 后, 发现 PC 机能 ping 通开发板,而开发板不能 ping 通PC机。如图1 所示。
查找原因,用 netstat (msh) 或者 list_if(finsh) 查看当前网络,发现当前的网络没有 link_up 上。 将网络换回原来的 lwip 1.4.1 ,再次查看网络,那时是连接上的。
如图2所示。
lwip 升级到2.1.0后, 打开 netutils 中的 ping , 从开发板 ping PC机不成功,TFTP也不成功,均提示 no route 。但是PC机 ping 开发板成功的. 在 env 打开 调试信息 后再进行ping, 显示的具体信息如图3所示。
4. 解决方法
按照 RTT 官司方论坛,https://www.rt-thread.org/qa/forum.php?mod=viewthread&tid=8048,对 eth 的网络驱动进行修改, 在 synopGMAC.c 文件的最后添加语句:
eth_device_init(&(eth_dev.parent), "e0");
eth_device_linkchange(ð_dev.parent, RT_TRUE); //添加的语句
如图4所示。
5. 检测结果
修改代码后,再次连通网络,并进行 ping 操作如图5,6所示。