zhongtao1701 发表于 2021-10-21 20:51:39

单网口下openwrt网络无法正确收发

本帖最后由 zhongtao1701 于 2021-10-27 21:45 编辑

为了验证单网口ETH1(RGMII)的方案,在开发板进行试验,去掉ETH0(SGMII)的复位电阻R21,使得芯片AR8031处于复位状态,
运行出厂的默认openwrt版本,
uboot的提示信息

SCSI:Net:   PFE class pe firmware
PFE tmu pe firmware
pfe_configure_serdes 0
Could not get PHY for PFE_MDIO: addr 1
phy_connect failed
No ethernet found.

openwrt
[    8.127382] pe_load_ddr_section: load address(3fb0000) and elf file address(ffff00000948b000) rcvd
[    8.173327] PFE binary version: pfe_ls1012a_slowpath_03
[    8.183188] pfe_load_elf
[    8.187069] pfe_ctrl_init
[    8.189810] pfe_ctrl_init finished
[    8.193468] pfe_eth_init
[    8.196287] pfe_eth_mdio_init
[    8.207094] libphy: ls1012a MDIO Bus: probed
[    8.218904] pfe_phy_init inte**ce 3
[    8.222829] libphy: PHY ls1012a-0:01 not found
[    8.227606] pfe 4000000.pfe eth0: phy_connect() failed
[    8.236103] pfe 4000000.pfe eth0: pfe_eth_init_one: pfe_phy_init() failed
[    8.290673] pfe_ctrl_exit
[    8.293306] pfe_firmware_exit
[    8.298353] pfe_hif_exit
[    8.314636] pfe_hif_release_buffers
[    8.318640] pfe_hif_free_descr
[    8.321975] pfe_hif_lib_exit
[    8.325241] pfe_hw_exit

root@OpenWrt:/# ifconfig
lo      Link encap:Local Loopback
          inet addr:127.0.0.1Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNINGMTU:65536Metric:1
          RX packets:40 errors:0 dropped:0 overruns:0 frame:0
          TX packets:40 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
可看到如果SGMII不工作,两个网口都无法工作

按 知识库 > LS1012A/LS1043A/LS1046A系列产品 文档编号: 501,
只保留RGMII单网口的修改方法,修改dts和pfe_eth.c,更新版本
现象如下

uboot的提示信息,(addr 1 是SGMII口, 应该无法启动,现象是对的)

SCSI:Net:   PFE class pe firmware
PFE tmu pe firmware
pfe_configure_serdes 0
Could not get PHY for PFE_MDIO: addr 1
phy_connect failed
No ethernet found.

openwrt 修改有效果,可以顺利配置eth0, eth1,即使SGMII被复位住

pe_load_ddr_section: load address(3fb0000) and elf file address(ffff0000094ab000) rcvd
[    8.409017] PFE binary version: pfe_ls1012a_slowpath_03
[    8.414884] pfe_load_elf
[    8.419007] pfe_ctrl_init
[    8.421877] pfe_ctrl_init finished
[    8.425394] pfe_eth_init
[    8.428166] pfe_eth_mdio_init
[    8.440814] libphy: ls1012a MDIO Bus: probed
[    8.452261] pfe 4000000.pfe eth0: pfe_eth_init_one: created inte**ce, baseaddr: ffff00000a200000
[    8.469230] pfe_eth_mdio_init
[    8.488017] libphy: ls1012a MDIO Bus: probed
[    8.498952] pfe_phy_init inte**ce a
[    8.503360] pfe 4000000.pfe eth1: pfe_eth_init_one: created inte**ce, baseaddr: ffff00000a220000

可以看到两个网口,
root@OpenWrt:/# ifconfig
eth0      Link encap:EthernetHWaddr 76:0C:45:6A:F6:95
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)TX bytes:4501 (4.3 KiB)

eth1      Link encap:EthernetHWaddr 62:71:65:C8:FA:CE
          inet6 addr: fe80::6071:65ff:fec8:face/64 Scope:Link
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:12 errors:0 dropped:0 overruns:0 frame:0
          TX packets:26 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:15075 (14.7 KiB)TX bytes:6932 (6.7 KiB)

ETH1 (RGMII)口还可以顺利检测到网线的插拔, ETH0(SGMII)则没有响应

root@OpenWrt:/# pfe 4000000.pfe eth1: Link is Down
pfe 4000000.pfe eth1: Link is Up - 100Mbps/Full - flow control rx/tx
pfe 4000000.pfe eth1: Link is Down
pfe 4000000.pfe eth1: Link is Up - 100Mbps/Full - flow control rx/tx

但eth1无法获得通过DHCP获得IP, 手动设置IP, 也无法ping网关
root@OpenWrt:/# ifconfig eth1 192.168.3.66
root@OpenWrt:/# ping 192.168.3.1
PING 192.168.3.1 (192.168.3.1): 56 data bytes

请问会是什么原因? 单网口方案如何进行下去,请大家给点建议,谢谢



zhongtao1701 发表于 2021-10-21 20:57:29

一点猜测,正常软件和硬件,如果在uboot中没有运行
=>fpe stop
进入到openwrt, 也是会有网口无法收发的现象

目前uboot固定使用SGMII使得初始化失败,这是否会影响
openwrt中的网口操作

zhongtao1701 发表于 2021-10-22 09:03:06


在开发板尝试保留SGMII, 复位RGMII, 根据文档调整dts, 测试结果
uboot中可以检测到eth0, eth1报错,配置完ipaddr, eth0可以正常使


进入openwrt, 顺利初始化通过
root@OpenWrt:/# ifconfig
br-lan    Link encap:EthernetHWaddr 76:0C:45:6A:F6:95
          inet addr:192.168.1.1Bcast:192.168.1.255Mask:255.255.255.0
          inet6 addr: fd7f:8300:7042::1/60 Scope:Global
          inet6 addr: fe80::740c:45ff:fe6a:f695/64 Scope:Link
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)TX bytes:4801 (4.6 KiB)

eth0      Link encap:EthernetHWaddr 76:0C:45:6A:F6:95
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:39 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)TX bytes:4801 (4.6 KiB)

eth1      Link encap:EthernetHWaddr 62:71:65:C8:FA:CE
          inet addr:192.168.3.99Bcast:192.168.3.255Mask:255.255.255.0
          inet6 addr: fe80::6071:65ff:fec8:face/64 Scope:Link
          UP BROADCAST RUNNING MULTICASTMTU:1500Metric:1
          RX packets:42 errors:0 dropped:0 overruns:0 frame:0
          TX packets:93 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:56025 (54.7 KiB)TX bytes:23426 (22.8 KiB)

SGMII可以检测到网线插拔, 但是无法获取ip, 手动配置后,也无法ping通
网关

djh 发表于 2021-10-22 09:04:14

有几点需要说明:
1、知识库里的方案是在ubuntu系统上验证的,如果在openwrt系统上验证,可以参考;
2、在我们的底板上是没办法验证的,缺少MDIO电平转换电路,需要参考硬件资料2020.05.25/原理图、底板V1.3Beta进行设计:去掉不用的一路网口电路;


两个绿色的不能去掉

zhongtao1701 发表于 2021-10-22 09:12:50

构建的单网口的RGMII和SGMII的openwrt版本, 在完整的双网口开发板上均能正常工作

zhongtao1701 发表于 2021-10-22 12:03:19

谢谢你的回答,关于在开发板上验证,目前的底板的MDIO 确是没有电平转换,在双网口下还是可以工作的很好,单网口下也应该是可以工作的
ubuntu和openwrt的linux kernel是相同的,目前开发板上我没有去掉一路电路,而是把AR8031芯片复位管脚下拉,使得其不工作,如果有可能飞凌的开发人员能够帮助验证一下这个方案,对应客户应该是莫大的帮助了

djh 发表于 2021-10-22 15:35:07

zhongtao1701 发表于 2021-10-22 12:03
谢谢你的回答,关于在开发板上验证,目前的底板的MDIO 确是没有电平转换,在双网口下还是可以工作的很好, ...

您是按照知识库里面的软件修改的,硬件上将复位引脚做了下拉是吗?
如果是的话我们这边有时间验证一下。
非常感谢您的分享。

zhongtao1701 发表于 2021-10-22 17:00:44

对的,直接把SGMII的复位电阻R21去掉,然后下拉到GND,软件直接按文档修改修改
arch/arm64/boot/dts/freescale/fsl-ls1012a-rdb.dts
drivers/staging/fsl_ppfe/pfe_eth.c
然后重新生成openwrt, 需要注意生成的驱动 pfe.ko,不会自动拷贝到staging_dir目
录中root-layerscape中,我都是从build_dir中linux目录,
   build_dir/target-aarch64_generaic_musl/linux-layerscape_armv8_64b
把fsl-ls1012-rdb.dtb和fpe.ko拷贝出来,可以检查一下生成时间,确认修改生效
希望你们能有好结果分享给大家,谢谢你们


zhongtao1701 发表于 2021-10-26 10:07:52

一点新发现,单端口RGMII版本,系统起来后

root@OpenWrt:/# cat /sys/bus/mdio_bus/devices/ls1012a-0:02/phy_inte**ce
rgmii-txid
root@OpenWrt:/# cat /sys/bus/mdio_bus/devices/ls1012a-1:02/phy_inte**ce
gmii

而正常配置应该是eth0 是sgmii, eth1是rgmii-txid,而eth1这里被识别成gmii, 是否跟这个有点关系?

djh 发表于 2021-10-26 10:23:36

zhongtao1701 发表于 2021-10-26 10:07
一点新发现,单端口RGMII版本,系统起来后

root@OpenWrt:/# cat /sys/bus/mdio_bus/devices/ls1012a-0: ...

这个在openwrt系统上没研究过,不是很清楚,您可以到NXP官网找找看看吧

zhongtao1701 发表于 2021-10-26 16:42:48

有一些进展,openwrt的修改应该没有问题,主要问题是uboot没有正确停止PFE
因为RGMII单端口uboot一定会初始化失败,所以我现在把SGMII的复位脚外接跳线,
uboot初始化时让SGMII正常工作,

U-Boot 2018.03 (Feb 25 2019 - 03:01:27 +0000)
ware
PFE tmu pe firmware
pfe_configure_serdes 0
eth0: pfe_eth0, eth1: pfe_eth1

然后进入uboot, 运行pfe stop, 让 PFE正确停止
然后复位SGMII, 引导起openwrt系统,这时
系统网络工作正常,所以目前初步结论是

uboot需要改进一下,或者简单一点,不使用
PFE设备和网络,请问你们能提供一份禁止网络
的uboot的image, 以便我进行验证码,谢谢
你们



zhongtao1701 发表于 2021-10-27 09:53:35

我下载了ubuntu的源码OK10xx-linux-fs, 我想直接修改uboot,但是发现里面是没有源码的,所以还是需要请飞凌帮忙一下,具体需要就是在在20190305的uboot上,把qfe的驱动去掉,不支持网络就可以,这样我就可以验证一下,这个方案的可行性,谢谢你们
页: [1]
查看完整版本: 单网口下openwrt网络无法正确收发