调试经验--网络
在davinci平台上使用linux开发多年,在调试过程中遇到不少问题,跌跌撞撞的,走到今天,也总结了一些经验,算不上是正规完整的解决方案,但是或许可以给遇到类似问题的同学们一点参考或者借鉴。
一,几个常用网络设置命令
配置IP、子网掩码
ifconfig eth0 192.168.1.237 netmask 255.255.255.0
设置网关
route add default gw 192.168.1.1
设置MAC:
ifconfig eth0 hw ether 20:00:00:02:FF:FF
强制百兆
ethtool -s eth0 speed 100 duplex full
说明:有一次遇到网卡驱动问题,能自适应到百兆千兆,但是只能在百兆下正常工作。此时,这个强制百兆就很好用了。
windows下,
强制百兆 :在本地连接的属性页中,配置-高级-speed,可以指定100兆
一个网卡配置多个IP:本地连接的属性页中,在tcp/ip的属性"高级"里添加新IP即可。
说明:公司网段与板卡网段不同,来回切换PC的IP,好麻烦!那就多设置几个IP,都能进行通讯了。
二,网络通讯很差,特别是多个板卡同时运行时,网络很容易断开。
分析:若能排除硬件问题,就应该是网络冲突。网络冲突:可以分为IP冲突与MAC冲突。
通过检测,最后确定是MAC地址冲突。在uboot中配置的MAC地址没用,在linux系统启动后给重新指定了。
通过手动设置MAC:
ifconfig eth0 hw ether 20:00:00:02:FF:FF
暂时解决问题。
后来修改为在应用程序中读配置文件来设置MAC,解决问题。
比较完善的IP管理方法:
应该给多个设备建立IP表格,每个设备对应的IP与MAC都记录下来,不可以随意改动。若有人改动,需要相应改动该IP表,并通知所有相关人员。
三,网络组播不通
现象:组播程序编写完成之后,在Linux服务器上运行,可以与管理程序的搜索设备通讯,但是在板卡上不能运行。
修改步骤:
1,改板卡内核,允许多播。
2,配置板卡的IP之后,添加路由,在板卡上执行命令:
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
然后运行应用程序,正常。
3,后来,是在应用程序中配置网络路由的:先读出配置文件中的IP,调用ifconfig设置IP,然后使用system调用route添加路由,然后进行组播操作。
四,如何查看网卡指示灯分析网络故障:
观察网卡后侧RJ45一边有两个指示灯。它们分别为连接状态指示灯和信号传输指示灯,其中正常状态下 连接状态指示灯呈绿色并且长亮,信号指示灯呈红色,正常应该不停的闪烁。
如果我们发现连接指示灯,也就是绿灯不亮,那么表示网卡连接到HUB或交换机之间的连接有故障。
对此可以使用测试仪进行分段排除, 如果从交换机到网卡之间是通过多个模块互连的,那么可以使用二分法进行快速定位。而一般情况下 这种故障发生多半是网线没有接牢、使用了劣质水晶头等原因。而且故障点大多是连接的两端有问题, 例如交换机的端口处和连接计算机的网卡处的接头,借助测试仪可以很轻松的就以找出故障进行解决。
如果信号指示灯不亮,那么则说明没有信号进行传输,但可以肯定的是线路之间是正常的。
那么不防使用替换法将连接计算机的网线换到另外一台计算机上试试,或者使用测试仪检查是否有信号传送,如果有信号传送那么则是本地网卡的问题。在实际的工作经验证明网卡导致没有信息传送是比较普遍的故障。对此可以首先检查一下网卡安装是否正常、IP设置是否错误,可以尝试Ping一下本机的IP地址,如果能够Ping通则说明网卡没有太大问题。如果不通,则可以尝试重新安装网卡驱动来解决,另外对于一些使用了集成网卡或质量不高的网卡,容易出现不稳定的现象,即所有设置都正确,但网络却不通。对此可以将网卡禁用,然后再重新启用的方法,也会起到意想不到的效果。