CPSW 9G 由主 R5F 2_0 上运行的以太网固件控制,因此所有更改必须在以太网固件和 ENET-LLD 中完成。要求的主要更改都在端口开放序列中,后者用于获取端口参数并配置 PHY。参考补丁 (0002-*.patch for ti-processor-sdk-rtos-j721e-evm-07_03_00_07) 可从工程配套资料和源代码链接下载。
注: 在 ti-processor-sdk-rtos-j721e-evm-07_03_00_07 上应用 0002-*.patch。应用补丁后,重建使用“make pdk ; make ethfw; make vision_apps”的 PDK/ETHFW/VISION_APPS。接下来,运行“make linux_fs_install”将映像更新到 targetfs。
- 在 EnetPer_PortLinkCfg::macPort 中设置端口号。
- 通过 EnetPer_PortLinkCfg::mii 的层、子层和变量字段设置 MAC 端口接口(RMII、RGMII、SGMII 等)。
- 使用 CpswMacPort_initCfg() 初始化 MAC 配置参数,手动覆盖不同于默认参数的任何参数。
- 将 PHY 地址设置为 ENETPHY_INVALID_PHYADDR,以指示这是没有 PHY 的连接
- 在 EnetPer_PortLinkCfg::linkCfg 中设置链路速度和双工配置,使之与 MAC 搭档端口的配置匹配。速度和双工必须是固定值,不能是 ENET_SPEED_AUTO 或 ENET_DUPLEX_AUTO,因为它们用于自动协商,这与 MAC 到 MAC 模式无关
- 完成所有 MAC 和 PHY 配置后,可通过调用 ENET_PER_IOCTL_OPEN_PORT_LINK 命令打开端口
- 如果上述所有步骤都成功,没有任何错误,则 Enet 驱动程序、以太网外设和 MAC 端口已成功打开
- 检测到链路接通时,该应用应使用 CPSW_ALE_IOCTL_SET_PORT_STATE IOCTL 命令将 ALE 端口状态设置为正向状态,并通过调用 ENET_HOSTPORT_IOCTL_ENABLE 命令启用 CPSW 的主机端口。
所述更改源于 ENET-LLD 视角,但在以太网固件环境下,这些步骤分别在以太网固件和 Enet LLD utils 库中实施。下面介绍了以太网固件和 Enet LLD 如何互动以实现端口配置。
在以太网固件中配置端口时,发生如下序列:
- EthFw_initLinkArgs() 由 Enet MCM(多客户端管理器)调用,以获取要用于给定端口的端口配置参数。
- 以太网固件填充 EthFw_initLinkArgs() 中的常见参数,例如 CPSW MAC 端口默认配置、速度/双工。
- MAC 到 MAC 模式的速度和双工当前设置为 1Gbps 全双工,需要时可更改它。
- 以太网固件调用 EnetBoard_setPhyConfig() 以设置接口类型和 PHY 配置参数(例如 PHY 地址)。
- EnetBoard_setPhyConfig() 是一个 Enet LLD 电路板 utils 函数。
- 需要在此函数中对 MAC 到 MAC 进行更改。
- EnetBoard_setPhyConfig() 中提供参考补丁及更改,其中 MAC 端口 4 是 MAC 到 MAC 连接需要使用的端口。参考补丁 (0003-*.patch) 可从工程配套资料和源代码链接下载。
- 完成所有更改后,再次编译以太网固件并加载。如果使用 Linux,则将固件 (app_remoteswitchcfg_server_strip.xer5f) 复制到 rootfs 分区中的 /lib/firmware/ethfw 并重新引导。