TO: Wigros Sun, 我们的iMX6D产品样板上电启动时提示PCIe错误?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

TO: Wigros Sun, 我们的iMX6D产品样板上电启动时提示PCIe错误?

2,582 Views
shine_wang
Contributor I

我们生产了10块iMX6D产品样板,测试下来出现上电启动时,有时会出现提示错误,错误信息如下:

imx6q-pcie 1ffc000.pcie: phy link never came up
imx6q-pcie 1ffc000.pcie: failed to initialize host

然后查看挂着PCIE上的网卡找不到了。

查找代码是在pci-imx6.c文件中的572行,等待pcie连接的时候出错了。我们查找了很多地方,没有找到原因。

代码是官方提供的,请帮分析一下,这是什么原因造成的?哪几种原因?之前你们的客户有没有遇到这种情况?

多谢多谢了!!!

注:附件中有Linux启动过程,提示的错误信息,和官方替代的pci-imx6.c文件

0 Kudos
5 Replies

2,483 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hi Shenghua,

   I.MX6Q PCIe在BSP里默认使用内部PCIe 参考时钟,如果你能够测到这个参考时钟发送给你的PCIE PHY 芯片,那么CPU PCIE端工作正常。但是,如果PCIE PHY没有和CPU PCIE建立连接的话,那么CPU端的PCIe driver是不加载的。

所以,这不是CPU端出错了。最大的可能是CPU的PCIe没有找到你的网卡芯片。

   所以,你需要检查一下你的PCIe网卡电路(如果是自己设计的)。还有,CPU端的PCIE_RXP / RXN以及PCIE_TXP / TXN,和网络芯片的连接有没有接反了。必须要CPU端收----网卡芯片的发;CPU端的发----网卡芯片的收。

  i.MX6Q的PCIe由于使用内部时钟,不存在调试外部时钟电路的问题,所以应用起来,是不太容易有问题的。

Have a nice day!

BR,

weidong

0 Kudos

2,483 Views
shine_wang
Contributor I

Hi, weidong,

我们这边软件工程师仔细检查代码,提示的错误信息是指CPU内部的PCIE PHY,还没有执行到网卡驱动的那一步。

所以应该是执行到CPU 内部的PCIE PHY初始化时出错了。

还请你麻烦帮分析一下,多谢了

BR,

WANG

0 Kudos

2,483 Views
weidong_sun
NXP TechSupport
NXP TechSupport

Hi Shenghua,

   按照你的描述,7个板子没有任何问题,3个板子会在上电后20%~30%概率出现这个问题,那么可以确定的是,软件和硬件都没有问题。

   你提供的log:

......

imx6q-pcie 1ffc000.pcie: phy link never came up
imx6q-pcie 1ffc000.pcie: failed to initialize host
imx6q-pcie: probe of 1ffc000.pcie failed with error -22

.......

这个就是CPU的PCIe和ntel I210没有连接上所提示的错误,既然没有连接上,那么CPU 端的PCIe driver也不会去加载,所你看到的提示,会以为是CPU端出错了。

你可以检查一下,当然是个人的建议:

你的ntel I210 reset是不是用GPIO进行了有效的控制,或者你是怎么处理它的reset引脚的。不能排除reset时序处于满足和不满足要求的临界点。

一般控制RESET有2个办法:

1. 按照BSP中dts中PCIe节点中用于PRESET#配置,指定你图纸用的GPIO,由driver控制复位。

2. 在ntel I210的RESET脚用VDDIO(IO电平,按照你的图纸来)10k拉高,再对地接一个0.1uF或者1uF电容控制复位时间。

我个人估计,可能RESET问题。但是,是否有其他可能,目前我还没有明确的思路提供给你。

伟东

0 Kudos

2,483 Views
shine_wang
Contributor I

伟东, 你好,

非常感谢你的答复!

我们起初也是怀疑I210的复位有问题,你说的两种方法,我们都测试过:

1. 电路设计上是通过一个CPU GPIO对I210复位处理的,出现问题后,软件上调整过GPIO对I210的复位时间,复位时间加长或缩短,都测试过,没有什么效果。

另外我们测试下来,有一个确定的规律是:一旦断电再上电启动出现问题,不断电情况下反复重启系统,一直会出现问题;一旦断电再上电重启正常的话,不断电情况下反复重启系统,一直会正常。

2. I210复位引脚用一个10K上拉电阻和一个1UF对地电容,这个方法也测试过,也是没有效果。

所以我们认为应该不是I210的复位问题。

你根据我们测试出现的规律,能否再帮我们分析一下可能的原因,多谢多谢了

BR,

SHENGHUA

0 Kudos

2,483 Views
shine_wang
Contributor I

Hi, weidong,

你说的有一定道理,但现在是:10个板子中,有7个板子多次上电启动都是正常的;有3个板子出现同样问题,10次上电启动时,会有2--3次出现同样这种错误。

7个板子能够正常上电启动,并且启动后PCIE网卡都能正常工作,可以说明电路设计上应该正确的吧。

3个板子出现同样的错误,是不是可以说明有同样的问题存在?

另外,PCIE网卡芯片用的I是ntel I210, 是参考intel官方提供的电路,iMXDQ CPU与I210之间的接口电路是参考frescale提供的开发板上的电路。

麻烦再帮我分析一下,多谢多谢了。

BR,

WANG SHENGHUA

0 Kudos