【驱动调试】板子reboot后,JL6107未初始化。

JL6107的驱动集成完后,正常单板上下电时工作正常,但单板reboot后,JL6107就不正常了。
通过代码追踪,发现phy_driver_register驱动里的config_init未被调用,所以JL6107未正常初始化。

驱动与设备注册存在时序问题?

先将模块自动加载去掉,改为手动加载模组,看问题是否还会复现。

  • 初次上电后,由于不加载ko,Open失败,所以ifocnfig未看到eth0;手动加载ko后,再将eth0 up,可以看到JL6107初始化正常。
  • 再次reboot后,未发现open失败的打印信息,ifconfig也能看到eth0?此时的ko都还未加载,难道stmmac_open未执行?--确认有执行,见下面的调用关系
  • stmmac_open->stmmac_setup_phy->stmmac_init_phy->phy_connect->phy_connect_direct->phy_attach_direct->phy_init_hw
    在phy_init_hw中有config_init的调用,发现config_init为空,所以调用失败。
  • 在reboot后,执行ifconfig eth0 down,重新手动卸载ko,再加载ko,执行ifconfig eth0 up后,网卡工作正常。

从上面现象看,在reboot时驱动注册存在问题。

确认驱动注册问题

phy_driver_register

新发现

相同的软件版本加载到另一个单板内,就是OK的。驱别在于无问题板子reboot时网卡会断开,而有问题的板子网卡一直连着。怀疑是reboot过种中PHY的复位有区别。
手动调复位接口,PHY也不复位。
查看硬件,复位管脚与控制器断开了,下面这个Q601没有焊。
在这里插入图片描述
跳过Q601,分别将R625的两端连接到PHY的复位管脚,均发现无法复位,看来控制器驱动不行啊。让客户自己焊好Q601验证吧。

客户确认焊上Q601后问题解决

问题根因

后面确认是由于在reboot过程中,PHY未复位,所以总线扫到器件后又没有对应的驱动,就匹配上了通用的驱动,最终导致网卡异常。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值