您好!
我们具有 Micrel KSZ8895的定制板、当前 Ping 失败。
U-Boot# setenv ipaddr 192.168.1.1
U-Boot# ping 192.168.1.10
ksz8895_startup
ksz8895_startup
端口0、速度100、全双工上的链路
使用 cpsw 器件
Ping 失败;主机192.168.1.10未激活
U-Boot# MII 信息
PHY 0x01:OUI = 0x0885、模型= 0x05、版本= 0x00、10baseT、HDX
PHY 0x02:OUI = 0x0885、模型= 0x05、版本= 0x00、10baseT、HDX
PHY 0x03:OUI = 0x0885、模型= 0x05、版本= 0x00、100BaseT、FDX
PHY 0x04:OUI = 0x0885、模型= 0x05、版本= 0x00、10baseT、HDX
PHY 0x05:OUI = 0x0885、模型= 0x05、版本= 0x00、10baseT、HDX
PHY 0x06:OUI = 0x0100、模型= 0x00、版本= 0x04、10baseT、HDX
PHY 0x07:OUI = 0x0180、模型= 0x00、版本= 0x00、10baseT、HDX
PHY 0x0E:OUI = 0x0180、模型= 0x00、版本= 0x00、10baseT、HDX
PHY 0x0F:OUI = 0x0100、模型= 0x00、版本= 0x04、10baseT、HDX
PHY 0x16:OUI = 0x2100、型号= 0x08、版本= 0x00、10baseT、HDX
PHY 0x17:OUI = 0x01C0、模型= 0x00、版本= 0x00、10baseT、HDX
PHY 0x1E:OUI = 0x2200、模型= 0x08、版本= 0x04、10baseT、HDX
PHY 0x1F:OUI = 0x2200、模型= 0x08、版本= 0x04、10baseT、HDX
只有 PHY 0x06能够读取正确的信息
U-Boot# MDIO 读取 cpsw 6 0
从总线 CPsw 读取
地址6处的 PHY:
0 - 0x95
0x95是芯片系列 ID。
但我们的硬件设计地址是3、因此我将 phy_addr 修改为3。
静态结构 cpsw_slave_data cpsw_slave[]={
{
.SLAVE_REG_OFS = 0x208、
slidver_reg_ofs = 0xd80、
phy_addr = 3、
}、
{
.SLAVE_REG_OFS = 0x308、
slidver_reg_OFS = 0xdc0、
phy_addr = 1、
}、
};
U-Boot# MDIO 列表
CPsw:
3 - Micrel KSZ8895/KSZ8864 <-> CPsw
我们已将 KSZ8895驱动程序移植到 uboot。 UBoot 打印信息如下所示。
U-Boot 2014.10脏(2018年2月26日- 15:20:20)
启用看门狗
I2C:就绪
DRAM:512 MiB
MMC:OMAP SD/MMC:0、OMAP SD/MMC:1.
SF:检测到 W25Q64CV、页面大小为256字节、擦除大小为4 KiB、总共8 MIB
***警告- CRC 错误,使用默认环境
NET:PHY_INIT
PHY_INIT
PHY_Micrel_init
PHY_Micrel_init
ksz8895_write_smireg
ksz8895_write_smireg
ksz8895_config
ksz8895_config
CPsw、USB_ether
按任意键停止自动引导:0
我已经定义了 CONFIG_PHY_Micrel、我们使用 RMII 模式。
#define CONFIG_PHY_Micrel
writel (RMII_MODE_ENABLE | RMII_CHIPCKL_ENABLE、&cdev->miisel);
cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
PHY_INTERFIT_MODE_RMII;
我还修改了多路复用器:
静态结构 MODULE_PIN_mux rmii1_PIN_mux[]={
{offset (mii1_txen)、mode (1)}、/* RMII1_TXEN *
{offset (mii1_txd1)、mode (1)}、/* RMII1_TD1 *
{offset (mii1_txd0)、mode (1)}、/* RMII1_TD0 */
{offset (mii1_rxd1)、mode (1)| RXACTIVE}、/* RMII1_RD1 *
{offset (mii1_rxd0)、mode (1)| RXACTIVE}、/* RMII1_RD0 *
{offset (mii1_rxdv)、mode (1)| RXACTIVE}、/* RMII1_RXDV *
{offset (mii1_crs)、mode (1)| RXACTIVE}、/* RMII1_CRS_DV *
{offset (mii1_rxerr)、mode (1)| RXACTIVE}、/* RMII1_RXERR *
{offset (rmii1_REFCLK)、mode (0)| RXACTIVE}、/* RMII1_REFCLK *
{OFFSET (MDIO_DATA)、MODE (0)| RXACTIVE | PULLUP_EN}、//* MDIO_DATA *
{offset (MDIO_clk)、mode (0)| PULLUP_EN}、/* MDIO_CLK *
{-1}、
};
CONFIG_MODULE_PIN_mux (rmii1_PIN_mux);
感谢您的任何帮助。