平台
主控芯片arm:ast1520
Linux内核版本:2.4.6
uboot版本:1.1.4
概述
现在uboot的网络功能调通了,采用的是mac to mac的方式,并且是千兆全双工的;现在要开始调试kernel的网络了,因为kernel的网络都是走的框架,但是ast1520代码的看了下,都是自己写的驱动框架,貌似没有看到mac to mac模式的兼容,那么就先对比日志开始吧。
分析过程
对比日志好像看不出啥太大区别,那么只能跟踪一下原来的流程了,由ftgmac100_init()开始
大概就是获取mac地址,然后初始化ast1520的网卡驱动,浏览了一圈,还是没有发现哪里是有macTomac模式的配置,最后选择询问原厂,发现有一个宏定义,可以用来控制一些选项:
需要关闭中断选项,当关闭中断选项后,主控芯片就不会再用mdio去读取phy的配置信息,把自己配置成了固定连接的模式了。
配置完成后,有可能会造成百兆网络通,千兆网络不通的情况,那是因为千兆网络更快,所需要的时序要求更高,需要调整RX_DELAY与TX_DALAY,具体调试如前面调试RTL8364一致,微调之后网络就OK了。
总结
我们都是基于别人的开发进行二次开发,也就是站在巨人的肩膀上,并不需要自己动手去造轮子造车子。因此如果遇到很棘手很难的问题,可以优先询问原厂,毕竟他们才是最了解芯片的人;不过前提是自己要先思考,不然与原厂沟通描述问题也会有问题。就如mac to mac模式的配置,这部分的技术已经相应的成熟了,基本主控芯片的厂商都会预留出相应的接口或者配置,只需要调用就可以了。