主题中讨论的其他器件: SysConfig
工具与软件:
您好、我想在 AM2632中将一个新的 phy BCM89884与 mido45一起使用、但 SDK 中的默认 phy 是 mdio22、我如何在 syscfg 中添加新的 phy 并使用 mdio45来控制 phy reg
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.
您好!
1.按照此处的步骤集成 默认 SDK 不支持的 PHY: https://software-dl.ti.com/mcu-plus-sdk/esd/AM263X/latest/exports/docs/api_guide_am263x/custom_enetphy_guide.html
2. SDK 也可以支持第45条帧格式、可在 example.syscfg 文件中进行配置。 在此处的"支持 MDIO 条款-45"中、输入您的 PHY 地址
并选中"MAC Port Config"中的"Clause 45 Support"框
此致、
Shaunak
您好、ZX、
对于延迟响应的道歉、您还可以执行以下步骤:
1.在以下位于以下 JavaScript 文件中(位于 mcu_plus_sdk/source/networking/enet/core/sysconfig/networking/.met/enet_cpsw/am263x/enet_cpsw_macport_config.syscfg.js )、请删除行号-199 (只读:true)
2.执行第1步后、当您在应用程序中重新打开 example.syscfg 时、您将能够选中"Clause-45 Support"复选框。 重新编译您的应用。
3、在 MDIO_open 函数中、设置断点并确保正确写入 MDIO 配置、并 调用 CSL_MDIO_setClause45EnableMask 来设置第45条的掩码
此外、由于 BCM89884是非 TI PHY、因此请确保您在应用中注意 PHY 配置(如果 PHY 需要任何配置来支持 Clause45)。 此外、确保在应用 syscfg 中正确提及 PHY 地址。 这也应显示在 syscfg 自动生成的 ti_enet_open_close.c 文件中的 Mdio_Cfg enetAppCpswMdioCfg 中
此致、
Shaunak
您好:
按照您的步骤进行修改后、可以确认调用了 CSL_MDIO_setClause45EnableMask 来设置第45条的掩码、但 PHY 的操作接口默认仍与22连接、、我们需要手动将其修改为 45
是否有任何其他配置项缺失?
int32_t EnetPhy_readReg(void* pArgs, uint32_t reg, uint16_t *val) { EnetPhy_Handle hPhy = (EnetPhy_Handle)pArgs; EnetPhy_MdioHandle hMdio = hPhy->hMdio; uint32_t phyGroup = hPhy->group; uint32_t phyAddr = hPhy->addr; int32_t status; status = hMdio->readC22(phyGroup, phyAddr, reg, val, hPhy->mdioArgs); ENETTRACE_ERR_IF(status != ENETPHY_SOK, "PHY %u: Failed to read reg %u: %d\r\n", phyAddr, reg, status); ENETTRACE_VERBOSE_IF(status == ENETPHY_SOK, "PHY %u: reg %u val 0x%04x %s\r\n", phyAddr, reg, *val); return status; } int32_t EnetPhy_writeReg(void* pArgs, uint32_t reg, uint16_t val) { EnetPhy_Handle hPhy = (EnetPhy_Handle)pArgs; EnetPhy_MdioHandle hMdio = hPhy->hMdio; uint32_t phyGroup = hPhy->group; uint32_t phyAddr = hPhy->addr; int32_t status; status = hMdio->writeC22(phyGroup, phyAddr, reg, val, hPhy->mdioArgs); ENETTRACE_ERR_IF(status != ENETPHY_SOK, "PHY %u: Failed to write reg %u: %d\r\n", phyAddr, reg, status); ENETTRACE_VERBOSE_IF(status == ENETPHY_SOK, "PHY %u: reg %u val 0x%04x\r\n", phyAddr, reg, val); return status; }
期待您的回复
ZX
您好、ZX、
该驱动程序实际上是通用的、适用于第22条和第45条。 由于所有 AM263x 板载 PHY 都支持 Clause22、因此该函数直接调用 Clause22、并且由于我们端没有某些硬件、因此完全未使用条款-45帧格式进行测试 由于存在一些发布活动、完成验证需要几周时间。
通用流程是从 IOCTL 调用的 EnetPhy_readReg 或 EnetPhy_writeReg 函数、这些函数在内部调用 hmdio->read22或 hmdio->write22。
目前、有两种选择、
1.如果只想让第45条进行读写而不使用第22条、可以修改 EnetPhy_readReg 和 EnetPhy_writeReg 来调用 hMdio->read45和 hMdio->write45、而不是 read22和 write22函数、因此每当调用任何 PHY Reg 读或写时、都将调用
2.在 PHY 驱动程序中、您可以直接调用 EnetPhy_readC45Reg 和 EnetPhy_writeC45Reg 来执行基于第45条的读取或写入
此致、
Shaunak