tgwfcc

tgwfcc

1个粉丝

13

问答

0

专栏

0

资料

tgwfcc  发布于  2017-04-06 19:18:13
采纳率 0%
13个问答
4326

EPHY_CLK输出作为PHY时钟

 
本帖最后由 tgwfcc 于 2017-4-8 10:20 编辑

如题:做了两块板子,一块DEMO板,千兆PHY;一块百兆PHY,PHY是KSZ8081RNACA。

第一种情况:DEMO板,千兆PHY


DEMO板的EPHY_CLK接PHY的时钟输入,
1)在SecureCRT中,启动Uboot,不启动应用程序的情况下

用示波器量EPHY_CLK时钟为50MHz;
2)ping下网关192.168.1.1,可以ping通,在量EPHY_CLK时钟变为25MHz了,程序启动后可以正常获取IP地址。




第二种情况:单内存,百兆PHY


这样接的话,软件上改下PHY地址和RMII模式,默认也是100M,
1)和第一种情况下描述的1)、2)情况一样,不同的是ping网关192.168.1.1是ping不通的。

2)在Uboot中把EPHY_CLK时钟输出改为50M后,重新烧录Uboot,启动Uboot后,不管ping不ping网关,都是50M,而且网关是可以ping通的,但是启动Kernel和filesys后,是获取不到IP的。

内核可能要改下,等软件改完在试下。。

换种接法,把CPU的RMII_CLK接到PHY的时钟输入管脚就可以了。
另外EPHY_CLK和RMII_CLK管脚都是复用的。


请问这是怎么回事呢?
有没有能解释的大神啊?
我来回答
回答3个
时间排序
认可量排序

tgwfcc

1个粉丝

13

问答

0

专栏

0

资料

tgwfcc 2017-04-08 14:07:51
认可0
作为一个不搞软件的来说,有些启动过程不是很了解,跟软件工程师研究了一下,搞清楚一些,我自己解释下好了!

1、只启动Uboot时,不ping网关的话,网口是没有初始化的。
所以3516内部关于网卡的寄存器都有默认的初始值,查手册P387的PERI_CRG51寄存器,可以看出,初始值是0x0A,那么EPHY_CLK的上电输出时钟的就是50M的。
在ping网关后,网卡初始化,会把EPHY_CLK设置成25M,所以时钟就从50M变成25M了。
至于在启动过程中对EPHY_CLK又做了哪些操作,就先不管了,都是软件设置的了。

2、RMII跑50M的,PHY是KSZ8081RNACA的话,那么PHY的时钟输入也是50M的。
如果用EPHY_CLK的话,ping网关后,被设置成25M了,所以是ping不通的;如果把EPHY_CLK输出改成50M的,就可以ping的通。

3、接2,把EPHY_CLK设置,50M,启动内核和应用程序之后,获取不到IP是因为启动过程中该EPHY_CLK又被设置成25M了,但是用的RMII是50M的,所以是获取不到IP的。
如果在把EPHY_CLK启动过程中被改成25M的语句注释掉,就可以获取到IP了。

以上就是总结,希望对大家有所帮助!

liuweifeng

0个粉丝

3

问答

0

专栏

0

资料

liuweifeng 2019-03-08 17:30:51
认可0
楼主分享得很棒,顶一个~

fengwen_ye

1个粉丝

26

问答

0

专栏

0

资料

fengwen_ye 2017-04-09 20:11:38
认可0
支持原创。
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区