大家好,想请教一个问题,我们做了一个板子带有两个网口,eth0是LAN8710A。eth1是RTL8368MB,使用RGMII。
由于开始用的内核和文件系统是从BBB上移植过来的,所以只能支持一个网口(eth0 LAN8710A正常工作)。
而RTL8368MB,上电读取EEPROM配置,GMAC2已为RGMII,使用示波器测量,AM335x RGMII2 RCLK已经是125MHz了。
问题:
1、我应该如何配置AM335x eth1为RGMII,并且开启?我搜索资料,都是说配置设备树,修改cpsw_emac1为rgmii-txid了。我修改、编译、替换后,测量AM335x RGMII2 TCLK,并没有输出125MHz。是否配置成功后,AM335x的 RGMII2 TCLK 有125MHz输出?
2、RTL8368MB是上电读取EEPROM进行配置,没有经过AM335x配置、读取(没有使用MDIO接口)。而设备树配置的,是使用MDIO管理的,并且定义了PHY 地址是多少。我问题是,如果不使用MDIO管理,AM335x和RTL8368MB都打开了RGMII接口了,就可以数据互通了吗?Linux就可以识别到eth1了? 还是说,一定需要MDIO接口进行管理? 如何才可以ifup eth1?
Shine:
请参考下面的wiki网站关于如何使能双网口,两个网口不能在同一网段。
processors.wiki.ti.com/…/Linux_Core_CPSW_User's_Guide
jack chen51:
回复 Shine:
抱歉,这个网站我都看了不下10次了。
比如,按照TI给的那个AM335x CPSW (Ethernet) Driver's Guide却找不到[*]TI CPSW Switch as Dual EMAC这个选项。
这个文档对应的内核版本比较旧吧?
yongqing wang:
回复 jack chen51:
如果你配置成功AM335x RGMII2 TCLK应该有信号输出的,你目前是么是么内核版本?你可以试试4.4.12的内核版本。
jack chen51:
回复 yongqing wang:
kernel 4.9.147,从 github.com/…/4.9 下载的
基于bb.org_defconfig,我看 make menuconfig ,相关的 SMSC PHYs、TI CPSW Switch Support 选项已经选上了。
而设备树,使用 am335x-boneblack.dts am335x-bone-common.dtsi,也是配置好双网口,使能了 dual_emac=<1> ,phy-mode = "rgmii-txid"。文件见附件。
配置步骤是:make distcleanmake ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- bb.org_defconfig
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage -j4
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-boneblack.dtb
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- modules
安装内核模块的命令,直接安装到SD卡中:
$ sudo make ARCH=arm modules_install INSTALL_MOD_PATH=/media/jabez/rootfs替换内核。
而看启动日志,发现cpsw驱动,只probe了一次。感觉 eth1 没有调用一样,就算是调用失败了,也应该会有显示啊。
jack chen51:
回复 yongqing wang:
内核配置:bb.org_defconfig
设备树:am335x-boneblack.dts、am335x-bone-common.dtsi
无法直接上传此格式的文件,我压缩了,麻烦你了。
见附件
配置文件及设备树.rar
yongqing wang:
回复 jack chen51:
感谢分享