调试以太网模块,费了不少周折,,,,,虽然是硬件的问题,但是通过调试驱动程序,查找问题也是必不可少的过程,,,,,,,,,,,,,
对于调试过程中遇到的问题,在此记录和总结一下,与大家共享,,,,,,,,
A20处理器的以太网用的IO是PA0--PA17口,这是已经定义好的,驱动代码在lichee/linux-3.3/drivers/net/ethernet/sun7i/目录下,至于驱动配置选项应该是已经添加好的,你可以通过在以太网模块驱动里添加一些打印信息,通过查看打印信息,就可以看到驱动是否 加载了,,,,,,,,lsmod查看的话结果是这样的,貌似看起来不是很明显:
首先正常移植以太网驱动之后,以太网设置界面显示未连接,且不能获得动态获取IP地址,静态IP地址倒是显示,但是网络不能连接,且ping 不通,,,,,,
查看查看调试打印信息,点击配置界面连接的时候,会有如下打印信息:
根据打印信息提示,申请IO口失败,一开始怀疑是PA口被其他模块占用,通过添加打印信心查看,发现PA0-PA17所有的IO都申请失败,查看了sys_conffig.fex文件,只有部分PA口被公用,但是相应的模块并没有被加载.所以IO口申请失败并不是这个原因.后来为了更加确定,我在以太网驱动代码里申请IO口之前,先对每个IO进行释放,然后在申请,虽然不报申请IO失败的错误了,但是依然网络显示未连接,网络连接指示灯也没有亮,,,,,
由此开始查找硬件方面的问题,首先介绍一下我们的网络硬件结构,网络芯片是内嵌到A20处理器的,这也就是说在配置界面是可以显示MAC地址的,事实是MAC地址确实有显示;硬件层的网络收发器用的是RTL8021CP这款芯片,时钟晶振用的是25MHZ,RTL8201和网口之间通过一个网络变压器进行转接.
首先通过信号源和示波器对网络变压器和网口之间的通讯进行测试,通过信号源给网络变压器的收发管脚一个正弦脉冲信号,在网口段通过示波器来进行是否有正弦脉冲,以及魔宠是否正常,,,测试正常,木有问题
其次测试了RTL8201cp网络收发器,测试了相应的电压引脚,测试正常,相应的电阻值基本正常,然后测试了网络数据收发脉冲引脚正常,所有的硬件线路短接也测试过,没有问题.虽然测试的这些都正常,以至于误认为硬件没有问题,但是其实网络冲突指示灯\网络连接指示灯都没有亮,已经说明RTL8201芯片存在问题了
后来通过软硬件实在找不到原因了,换了一个RTL8201cp芯片之后,网络冲突指示灯亮了,而且点击连接的时候,发现网络连接指示灯也会闪一下,以太网配置界面也实现连接eth0了,但是还是不能上网,获取动态IP失败,获取静态IP到可以,但是网络指示灯只是黄灯亮,,,ping不通,,,,但是至少看到曙光了,,,,,
后来发现网络连接指示灯一开始点击连接的时候还闪一下,后来就不闪了,无论如何都不闪烁了,上电的时候也不闪烁
于是怀疑硬件那个地肯定存在问题,,,,于是测试晶振脉冲,发现晶振两个引脚短接了,,,,,重新焊接之后,上电,配置网络,网络衔接指示灯成功亮起来了,打开网络,成功登录百度界面,
以太网终于调好了!!!!!