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.

[FAQ] DRA829VXEVM: Is it possible to connect two DRA829 EVMs via SGMII

Part Number: DRA829VXEVM

Is it possible to connect two DRA829 EVMs in MAC to MAC mode using SGMII connection?

  • Introduction

    On DRA829VXEVM the PCIe x2 lane slot can be used to connect two EVMs in SGMII MAC to MAC mode using a PCIe cable.
    This PCIe slot (PCIE1) is connected to SERDES1 instance.

    Patches & Binaries

    MAC_MAC_SGMII_1G_Linux.zip 

    Configuration

    • Hardware
      • Two DRA829VXEVM
      • PCIe Cable - PE-FLEX1-G2-MMCX-12-TI1
    • Software
      • PSDKRA - V07.00.00.11
      • PSDKLA - V07.00.00.04

    Software Changes

    Note: If EVM1/2 not specified, then changes apply to both EVMs
    EVM1 – SGMII Slave
    EVM2 - SGMII Master

    ComponentChangePatch/Change
    U-boot

    Move loading of Main R5F0_0 from R5 SPL to A72 u-boot

    u-boot/uboot_disable_loading_main_r5_from_spl.patch
    Linux Kernel

    Disable SERDES1 configuration from Kernel dts files

    kernel/kernel_disable_serdes1.patch

    Increase number of RX, TX descriptor from 256 to 500 in cpsw9g virtual mac driver

    kernel/kernel_cpsw9g_virt_increase_rxtx_desc.patch

    vision_app

    Switch to HDMI display instead of DP display

    vision_app/vision_app_disable_eDP.patch

    Use static IP configuration in NDK (ndk.cfg)

    EVM1: vision_app/EVM1_ndk_static_ip.patch
    EVM2: vision_app/EVM2_ndk_static_ip.patch

    PDK

    Changes for configuring MAC port 2 to SGMII and corresponding SERDES configuration

    EVM1: pdk/EVM1_SGMII_MAC_MAC_configuration.patch
    EVM2: pdk/EVM2_SGMII_MAC_MAC_configuration.patch

    Steps to test

    • Apply the patches and rebuild the components. Skip this step, if pre-built binaries are used.
      • U-boot (PSDKLA)

        # Apply the u-boot changes to <psdkla directory>/board-support/u-boot-2020.01+gitAUTOINC+f9b0d030d3-gf9b0d030d3/
        cd <psdkla directory>
        make u-boot
        
        # Updated binary:
        <psdkla directory>/board-support/u-boot_build/r5/tiboot3.bin
      • Kernel components (PSDKLA)

        # Apply the kernel changes to <psdkla directory>/board-support/linux-5.4.40+gitAUTOINC+66cf445b76-g66cf445b76
        cd <psdkla directory>
        make linux
        
        # Updated binary:
        <psdkla directory>/board-support/linux-5.4.40+gitAUTOINC+66cf445b76-g66cf445b76/arch/arm64/boot/dts/ti/k3-j721e-common-proc-board.dtb
        <psdkla directory>/board-support/linux-5.4.40+gitAUTOINC+66cf445b76-g66cf445b76/arch/arm64/boot/dts/ti/k3-j721e-proc-board-tps65917.dtb
        <psdkla directory>/board-support/linux-5.4.40+gitAUTOINC+66cf445b76-g66cf445b76/drivers/net/ethernet/ti/j721e-cpsw-virt-mac.ko
      • PDK and vision_apps (PSDKRA)

        # Apply the changes to pdk and vision_apps folder of PSDKRA
        cd <psdkra directory>/vision_apps
        make -s pdk ethfw vision_apps
        make linux_fs_install
        
        # Updated binary:
        <psdkra directory>/targetfs/lib/firmware/j7-main-r5f0_0-fw
    • Update the binaries on SD card (If you are using prebuilt binaries, copy j7-main-r5f0_0-fw-salve to EVM1 and j7-main-r5f0_0-fw-master to EVM2. Rename the files to j7-main-r5f0_0-fw)

      # boot partition:
      /tiboot3.bin
      
      # rootfs partition:
      /boot/k3-j721e-common-proc-board.dtb
      /boot/k3-j721e-proc-board-tps65917.dtb
      /lib/modules/5.4.40-g66cf445b76/kernel/drivers/net/ethernet/ti/j721e-cpsw-virt-mac.ko
      /lib/firmware/j7-main-r5f0_0-fw
    • Boot the board and update the u-boot environment variable to load main R5F0_0 firmware by A72 u-boot (One time setting)

      => setenv rproc_fw_binaries "2 /lib/firmware/j7-main-r5f0_0-fw"
      => env save
    • Power cycle the boards. Ethfw log on 3rd UART port should show the SGMII connection between the two boards established

    • Give static IP to eth1 interface in 192.168.1.x subnet and you can now ping both the EVMs from Linux

      # EVM1
      root@j7-evm:~# ifconfig eth1 192.168.1.103 netmask 255.255.255.0 up
      
      # EVM2
      root@j7-evm:~# ifconfig eth1 192.168.1.104 netmask 255.255.255.0 up