hi ,imx6ul 开机外部ping不通,失败几次之后可以,每次reboot或者断电上电都有这个现象,大家不知道遇到过没有,奇怪的很,不知道是什么问题
Hi, Haifeng,
这个现象,要这样检查一下:
1. reboot之后,ethernet是不是在up状态。
2. reboot之后,ethernet PHY的工作时钟有没有出来。
3. reboot之后,PHY的reset脚是不是已经拉起来了。
4. reboot之后,loop back自己ping自己行不行。
5. 在失败几次后,上面的时钟和reset脚电平,是否由不正常到正常。
如果上面这些都是对的,那么你改变一下方式再做实验:
1. 可以ping其他几个不同的主机
2. 用其他机器ping板子
这个现象目前还没有客户提到,所以,你可以请客户在EVK上做一下测试。
Have a nice day!
BR,
Weidong
EVK上也是link up信息看到后,也是开始ping不通,要ping几次后才可以
Hello Haifeng,
u-boot 中的修改,不会影响到linux内核里fec_mail.c的加载和初始化。所以,你修改的地方影响不到网络。
(1)你看看2个网卡的MAC地址是不是相同了。如果相同,会有问题的。
(2)L4.19.35的内核刚刚发布出来,你在EVK上测试一下这个版本的内核,看2个ENET的情况。
(3)另外,针对目前正在用的4.1.15的BSP,先不用ping方法测试,可以写一个简单的网络应用,用socket方法,分别使用2个不同的网口互相对传数据,或者和PC通信。 看会不会影响到客户应用。
Have a nice day!
BR,
Weidong
hi 谢谢,比较奇怪,我两块6ull,用的代码是4.1.15——2.1.0,uboot中唯一修改的如下,其他都没动,然后一根网线插网络1,一根网线插另外一块板子的网络2,发现会出现网络1始终ping不通,或者网络2始终ping不通,要一路拔掉,另外一路就可以了,非常奇怪。
static void setup_iomux_fec(int fec_id)
{
//if (fec_id == 0)
imx_iomux_v3_setup_multiple_pads(fec1_pads,
ARRAY_SIZE(fec1_pads));
//else
imx_iomux_v3_setup_multiple_pads(fec2_pads,
ARRAY_SIZE(fec2_pads));
}
int board_eth_init(bd_t *bis)
{
setup_iomux_fec(CONFIG_FEC_ENET_DEV);
return fecmxc_initialize_multi(bis, CONFIG_FEC_ENET_DEV,
CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE);
}
static int setup_fec(int fec_id)
{
struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
int ret;
puts("Board:jhf------------------- EVK\n");
//if (fec_id == 0) {
//if (check_module_fused(MX6_MODULE_ENET1))
// return -1;
/*
* Use 50M anatop loopback REF_CLK1 for ENET1,
* clear gpr1[13], set gpr1[17].
*/
clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC1_MASK,
IOMUX_GPR1_FEC1_CLOCK_MUX1_SEL_MASK);
//} else {
//if (check_module_fused(MX6_MODULE_ENET2))
// return -1;
/*
* Use 50M anatop loopback REF_CLK2 for ENET2,
* clear gpr1[14], set gpr1[18].
*/
clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC2_MASK,
IOMUX_GPR1_FEC2_CLOCK_MUX1_SEL_MASK);
//}
ret = enable_fec_anatop_clock(fec_id, ENET_50MHZ);
if (ret)
return ret;
enable_enet_clk(1);
return 0;
}