This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

基于bbb内核、文件系统,AM335x eth1如何开启?



大家好,想请教一个问题,我们做了一个板子带有两个网口,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?

  • 请参考下面的wiki网站关于如何使能双网口,两个网口不能在同一网段。
    processors.wiki.ti.com/.../Linux_Core_CPSW_User's_Guide
  • 抱歉,这个网站我都看了不下10次了。

    比如,按照TI给的那个AM335x CPSW (Ethernet) Driver's Guide却找不到 [*] TI CPSW Switch as Dual EMAC这个选项。

    这个文档对应的内核版本比较旧吧?
  • 如果你配置成功AM335x RGMII2 TCLK应该有信号输出的,你目前是么是么内核版本?你可以试试4.4.12的内核版本。
  • 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 distclean
    make 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 没有调用一样,就算是调用失败了,也应该会有显示啊。

  • 内核配置:bb.org_defconfig

    设备树:am335x-boneblack.dts、am335x-bone-common.dtsi

    无法直接上传此格式的文件,我压缩了,麻烦你了。

    见附件

    1018.配置文件及设备树.rar

  • 解决了。
    使用 bbb 内核,它的设备树、make menuconfig ,相关的 SMSC PHYs、TI CPSW Switch Support 选项已经选上了。但eth1怎样都不出来。
    正常来说,设备数、make menuconfig打开了相关配置,就能看见eth1。
    无奈之下,使用 ti-processor-sdk-linux-am335x-evm-05.02.00.10 ,成功打开eth1。
    对于UBOOT:
    $ rm -rf ./am335x_evm
    $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm am335x_evm_defconfig
    $ make CROSS_COMPILE=arm-linux-gnueabihf- O=am335x_evm
    对于内核:
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- distclean
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- tisdk_am335x-evm_defconfig
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- zImage
    $ make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- am335x-boneblack.dtb
    使用 /bin/create-sdcard.sh , Install pre-built images from SDK, 制作SD卡。
    把UBOOT生成的MLO、uboot.img替换到 /boot
    把内核生成的 arch/arm/boot/zImage,am335x-boneblack.dtb 替换到 /rootfs/boot/
    注意,UBOOT配置如果使用 am335x_boneblack_defconfig ,UBOOT 无法启动,提示:
    U-Boot SPL 2018.01-00558-gcd25eb3-dirty (Apr 16 2019 - 15:49:37)
    Trying to boot from MMC1
    *** Warning - bad CRC, using default environment

    ------------------------------------------------------------------------
    eth1成功出现: