原文

https://software-dl.ti.com/jacinto7/esd/processor-sdk-rtos-jacinto7/06_02_00_21/exports/docs/psdk_rtos_auto/docs/user_guide/developer_notes.html

正文

通用端口交换机 (CPSW) 为设备提供以太网数据包通信,同时也充当以太网交换机。 总端口包括主机端口,它是为设备内核提供数据包流接口的内部端口。 外部端口是 MAC 端口,支持媒体独立接口 (MII),如 MII、千兆媒体独立接口 (GMII)、精简媒体独立接口 (RMII)、精简千兆媒体独立接口 (RGMII)、串行千兆媒体独立接口 (SGMII) 和 四路串行千兆媒体独立接口 (QSGMII)。 支持的 MII 模式因设备型号而异。

J721E有2个实例,在MCU域(MCU_CPSW0)中有2端口,在主域中有9端口交换机(MAIN_CPSW1)。

CPSW 实例通常以端口数后缀为 CPSW,例如 2 端口实例称为 CPSW2G,而 9 端口实例称为 CPSW9G。

CPSW 支持软件

1、以太网固件(EthFw)是运行在主域R5上的用于控制和配置CPSW9G的软件。由于 CPSW9G 是共享资源,EthFw 协调和管理这些内核之间的资源,并使用 CPSW LLD 促进配置。

2、CPSW LLD 是驻留在PDK 中的低级驱动程序。它支持 CPSW2G 和 CPSW9G IP,并为更高级别的堆栈提供 HAL 层。 EthFw 使用 CPSW LLD 进行 CPSW9G 交换机配置。 NIMU(网络接口管理单元)是 TI NDK 抽象层,将 CPSW LLD 连接到 NDK 堆栈。 NIMU 库是 CPSW LLD 的一部分,支持将 CPSW2G 和 CPSW9G 与 TI NDK TCP/IP 应用程序一起使用。

3、 j721e_virt_mac 虚拟 CPSW MAC 驱动,实现标准 Linux netdev 接口,使用 rpmsg-kdrv Eth 交换机设备提供的 RPC 服务,为运行在 R5F 内核之一上的 Eth 交换机固件提供 RPC 接口,并完全控制 J721E CPSW9G 硬件模块。支持的功能:
ifconfig dev 上/下
ifconfig dev
ifconfig dev hw ether – 仅当接口关闭时
ethtool -k dev

本开发人员说明的范围是指向 SDK(RTOS 和 Linux)中可用的各种文档和源代码资源,以了解和使用 CPSW2G(在用户应用程序中使用 CPSW LLD 和 CPSW9G 使用 EthFw)。

源代码参考

1 CPSW_LLD

SDK 组件文件/文件夹说明
PDKpdk/packages/ti/drv/cpsw/cpsw.hCPSW2G 和 CPSW9G 的 CPSW 驱动程序接口
PDKpdk/packages/ti/drv/cpsw/inc/cpsw_phyPHY LLD驱动接口
PDKpdk/packages/ti/drv/board/用于CPSW9G GESI 板的板驱动程序

2 Eth_Fw

SDK 组件文件/文件夹说明
EthFwethfw/ethremotecfg/protocol/rpmsg-kdrv-transport-ethswitch.hEthFw 远程配置协议接口
EthFwethfw/ethremotecfg/server/include/ethremotecfg_server.hEthFw RTOS 配置服务器接口
EthFwethfw/ethremotecfg/client/include/ethremotecfg_client.hEthFw RTOS 配置客户端界面
PDKpdk/packages/ti/drv/cpsw/cpsw_cfgserver/cpsw_cfgserver.hCPSW 配置工具(GUI)界面

8.9.4.3。 J721E CPSW V_irtual MAC

SDK 组件文件/文件夹说明
PSDKLA${PSDKLA_LINUX_KERNEL_PATH}/drivers/net/ethernet/ti/j721e-cpsw-virt-mac.cJ721E CPSW 虚拟 MAC 驱动程序

4 EthFw 的演示应用程序

SDK 组件文件/文件夹说明
PDKpdk/packages/ti/drv/cpsw/examples/cpsw_loopback_test所有支持的内核(mcu2_0、mcu1_0、mpu1_0、mcu2_1)上的 CPSW2G/9G 内部环回示例
PDKpdk/packages/ti/drv/cpsw/examples/cpsw_nimu_exampleCPSW2G/9G 的 NDK 集成示例。支持的内核(mcu2_0、mcu1_0、mpu1_0、mcu2_1)
EthFwethfw/apps/app_remoteswitchcfg_server这是交换机固件。托管 EthFw 资源管理器和远程配置库。还运行 cpsw 配置工具服务器。
EthFwethfw/apps/app_remoteswitchcfg_clientmcu2_1 上的 EthFw 远程客户端。使用远程客户端与 EthFw 通信并获取分配给 mcu2_1 的 CPSW9G 资源

EthFw boot flow

  • 在 A72 上使用 Linux 时,在 PSDKLA 和 PSDKRA 中,R5 SPL (tiboot3.bin) 加载 EthFw (/lib/firmware/j7-main-r5f0_0-fw)。 Linux 内核后期通过远程 proc 与 EthFw 连接。
  • 在 PSDKRA 中,运行在 mcu2_0 上的 EthFw 也可以通过 TI SBL 启动。

Getting started on CPSW & EthFw

Refer to CPSW integration guide [LINK], section Examples for available examples.

1.配置网口模式

根据您的板卡配置,端口可以处于 RMII、RGMII 等模式。您需要执行以下操作以在所需模式下配置端口。

  • 使用板库将端口 ENET 控制配置为所需模式。

  • 配置 CPSW 接口。

    • 对于RMII,它应该配置为下面
      • interface->layerType = CPSW_MAC_LAYER_MII; interface->sublayerType = CPSW_MAC_SUBLAYER_REDUCED; interface->variantType = CPSW_MAC_VARIANT_NONE;
    • 对于RGMII,它应该被配置为下面
      • interface->layerType = CPSW_MAC_LAYER_GMII; interface->sublayerType = CPSW_MAC_SUBLAYER_REDUCED; interface->variantType = CPSW_MAC_VARIANT_NONE;

2.运行 CPSW 环回示例

我们建议先运行 CPSW 环回示例,因为这对电路板/EVM 设置没有任何依赖性
请参阅 PDK 用户指南 [LINK],构建步骤部分的构建步骤

3.运行 CPSW NIMU 示例(TCP/IP 示例)

运行回送示例后,您可以运行 cpsw_nimu_example,该示例将 TI NDK 用于 TCP/IP 应用程序。
您需要将 EVM 连接到运行 DHCP 服务器的 PC。运行示例后,您应该会在 UART 上看到打印出的 IP。 EthFw 使用 UART2 进行日志记录。 PDK CPSW 示例使用基于其正在运行的内核的 UART。有关 Core-UART 映射,请参阅 PDK 文档。如果要使用静态 IP 配置,请编辑 cpsw_nimu_example/nimu_example.cfg 以启用静态 IP。
您可以使用此 IP 地址 ping 登板

4.在 CPSW 中集成新的 PHY

如果 cpsw/src/phy/* 中存在的现有 PHY 驱动程序不支持您的电路板上存在的 PHY,则您需要添加新的 PHY 驱动程序。
请参阅 PHY 集成指南 [LINK],其中详细介绍了在 CPSW LLD 中添加对新 PHY 的支持。

5.修改示例以支持您的电路板配置

修改示例以更改 PHY 地址、速度(10M/100M/1G 等)设置、模式(RMII/RGMII 等)设置。
重新构建示例并在您的板上运行。您应该能够看到正在发生的数据传输。

6.使用 GEL 文件进行调试和诊断

CPSW LLD 包括调试和诊断凝胶文件,以帮助将 CPSW 集成到您的应用程序中。

凝胶文件存在于 pdk/packages/ti/drv/cpsw/tools/debug_gels
        cpsw_stats_print_regs.gel - 打印 CPSW 的非零统计信息
        cpsw_mdio_config.gel - 可用于读/写 PHY 寄存器
        cpsw_ale_print_table.gel - 打印 ALE 表的所有条目
        cpsw_enectrl_cfg.gel - 确保板模式匹配配置的模式。

7.使用 Linux j721e_virt_mac

Linux 上的虚拟 mac 驱动程序在内核启动期间自动加载。它当前配置为 DHCP 模式,因此它通过连接到 CPSW9G 端口的 PC 上运行的 DHCP 服务器获取 IP。要获取虚拟 mac 驱动程序的 IP 地址,请运行“ifconfig”

root@j7-evm:~# ifconfig

eth0 链接封装:以太网 HWaddr 50:51:A9:FB:F4:2E
    inet addr:172.24.190.24 Bcast:172.24.191.255 Mask:255.255.252.0 inet6 addr:fe80::5251:a9ff:fefb:f42e/64 Scope:Link UP BROADCAST RUNNING packet:255.255.252.0 inet6 addr: fe80::5251:a9ff:fefb:f42e/64 0 丢弃:120 溢出:0 帧:0 TX 数据包:215 错误:0 丢弃:0 溢出:0 载波:0 冲突:0 txqueuelen:1000 RX 字节:177194 (173.0 KiB) TX 字节:21218 (20.7 KiB)
eth1 链接封装:以太网 HWaddr 70:FF:76:1D:87:95
    inet addr:192.168.1.31 Bcast:192.168.1.255 Mask:255.255.255.0 inet6 addr: fe80::72ff:76ff:fe1d:8795/64 Scope:Link UP BROADCAST RUNNING packet:115RX0 MULTIC 0 0 丢弃:0 溢出:0 帧:0 TX 数据包:56 错误:0 丢弃:0 溢出:0 载波:0 冲突:0 txqueuelen:1000 RX 字节:684 (684.0 B) TX 字节:10769 (10.5 KiB)
lo 链路封装:本地环回
    inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX包:2错误:0丢弃:0溢出:0帧:0 TX包: 2个错误:0丢弃:0溢出:0载波:0碰撞:0 txqueuelen:1000 RX字节:140(140.0 B)TX字节:140(140.0 B)

下面的标准 Linux 命令可以在虚拟 mac 界面上运行。

    ifconfig dev 上/下
    ifconfig dev <IP>
    ifconfig dev hw ether <MAC> – 仅当接口关闭时
    ethtool -k dev
Logo

更多推荐