我们最近将千兆phy换成百兆phy,选择的是RMII模式。以前的千兆Phy是RGMII的。然后按照 TI81xx PSP Porting Guide 这个文档对u-boot进行了修改.现在遇到几个问题.
1.在uboot中修改了pin mux 、RMII_REFCLK_SRC、GMII_SEL。没有修改Phy_id,现在是可以在uboot中ping通,但是我把cpsw_slave[]数组中的两个Phy_id对调了下,它也能ping通。我觉得按照道理来说,不应该Ping通才对啊。(phy_id都为默认值,我们phy的地址为001)
2.在内核中我什么都没有修改,然后在ipnc rdk 运行到/etc/rcS.d/S99fini.sh时候,将/opt/ipnc/finish.sh给屏蔽掉,就是不让整个应用程序启动.系统会停在文件系统,然后再这里我ping了下,可以ping通。但是将应用程序启动起来,就ping不通,Ping的时候没有任何反应.
3.不明白为什么内核中为什么都没有修改,然后刚进到文件系统就可以Ping通。而且内核中我查了下,也没有对pin mux 和上面几个寄存器进行配置
我们只接了一路phy。现在就是为什么应用程序起来之后为什么Ping不通了呢,难道TI的程序启动的时候会对pin脚操作吗?
centvideo centvideo:
此问题已经卡了好几天了 还望回复
Chris Meng:
回复 centvideo centvideo:
你好,
下面的链接里面有提到Kernel的修改,请问你是否有修改?
http://processors.wiki.ti.com/index.php/TI81xx_PSP_Porting_Guide?keyMatch=TI81xx%20PSP%20Porting%20Guide&tisearch=Search-EN#CPSW_RMII_Phy
能否对比一下应用起来前后网络相关寄存器是否有变化?
centvideo centvideo:
回复 Chris Meng:
1.里面只有提到对内核中的phy_id的修改,刚开始我是没有做出任何改变。然后起来能ping通,后来我又把内核中cpsw_slave[]中的phy id从0:00改为0:01,起来也能ping通。两种状态下,应用程序起来都不能ping通。
2.我是想对比应用起来phy的寄存器的,但是不知道怎么弄.
3.现在还发现在应用启动过程中,8127会通过gpio口对phy进行复位。但是应用中又没有找到地方.
Chris Meng:
回复 centvideo centvideo:
你好,
先可以对比一下应用程序起来前后EMAC的寄存器。
下面这个kernel的补丁打了么?
In Kernel, apply the following patch to enable mac control register in driver – http://arago-project.org/git/projects/?p=linux-omap3.git;a=commit;h=dd7bc15e62e1cd14ba9320f5367287ac31296db3.
centvideo centvideo:
回复 Chris Meng:
那个不用打吧 我看了下 就只有一句话不一样。内核中本身就有
Chris Meng:
回复 centvideo centvideo:
centvideo centvideo
3.现在还发现在应用启动过程中,8127会通过gpio口对phy进行复位。但是应用中又没有找到地方.
你是有测量PHY的reset脚在应用程序起来的时候有拉低拉高的情况么?
你能否对比一下下面的这几个寄存器在应用程序起来前后是否有改变?
http://www.deyisupport.com/question_answer/dsp_arm/davinci_digital_media_processors/f/39/t/52243.aspx
1)确认所选择的PIN脚的复用关系。
2)配置RMII_REFCLK_SRC寄存器,选择使用内部输出50MHz时钟,还是使用外部时钟50MHz,本例中该寄存器配置为0x4。
3)配置GMII_SEL寄存器,本例中配置0x5,使能Port0的RMII模式。
4)配置MAC_CONTROL寄存器为0x8020。
5)检查PHY_ID的配置
Chris Meng:
回复 centvideo centvideo:
你好,
很高兴问题解决了。也谢谢你的分享!