我用am3359的rmii2接口连接的lan8710a,配置的外置50M的有源晶振,
pinmux的设置
static struct module_pin_mux rmii2_pin_mux[] = {
{OFFSET(gpmc_a11), MODE(3) | RXACTIVE}, /* RMII2_RXD0 */
{OFFSET(gpmc_a10), MODE(3) | RXACTIVE}, /* RMII2_RXD1 */
{OFFSET(gpmc_wpn), MODE(3) | RXACTIVE}, /* RMII2_RXERR */
{OFFSET(gpmc_a0), MODE(3)}, /* RMII2_TXEN */ {OFFSET(gpmc_a5), MODE(3)}, /* RMII2_TXD0 */
{OFFSET(gpmc_a4), MODE(3)}, /* RMII2_TXD1 */
{OFFSET(gpmc_wait0), MODE(3) | RXACTIVE}, /* RMII2_CRS_DV */
{OFFSET(mii_col), MODE(1)}, /* RMII2_REFCLK */
{OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN},/* MDIO_DATA */
{OFFSET(mdio_clk), MODE(0) | PULLUP_EN}, /* MDIO_CLK */
{-1},
};
phy上面的决定phy_id的三个引脚全都下拉,phy_id应该是为0,
static struct cpsw_slave_data cpsw_slaves[] = {
{
.slave_reg_ofs = 0x208,
.sliver_reg_ofs = 0xd80,
.phy_id = 1,
},
{
.slave_reg_ofs = 0x308,
.sliver_reg_ofs = 0xdc0,
.phy_id = 0,
},
};
GMII_SEL配置为0x75,在uboot下执行dhcp还总是超时
link up on port 0, speed 100, full duplexBOOTP broadcast 1BOOTP broadcast 2BOOTP broadcast 3BOOTP broadcast 4BOOTP broadcast 5BOOTP broadcast 6BOOTP broadcast 7
这是怎么回事,是我的配置有什么问题吗?rmii2的解法还有什么需要配置的吗
Jian Zhou:
最新的SDK06.00.00中的u-boot,实际上只对port 0做了auto negotiation, 你的port0可以DHCP吗?
kedacom:
回复 Jian Zhou:
你好,Jian Zhou
port0是不是指rmii1接口?目前只是接了rmii2接口。
你的意思是rmii2接口在u-boot中无法做dhcp?
我有一个疑问,系统如何知道是选择rmii1接口工作还是rmii2接口工作?需要什么配置吗?
谢谢
Jian Zhou:
回复 kedacom:
这个port0应该是对应cpsw_slaves结构体数组中的第一个,也就是第一个数组的phy_id应该和板子上的PHY_ADDR对应上。
如果你的PHY_ADDR是0,第一个数组应该是:
{ .slave_reg_ofs = 0x208, .sliver_reg_ofs = 0xd80, .phy_id = 0, },
我看你设的是1而不是0
kedacom:
回复 Jian Zhou:
嗯 也就是说 如果设置的phy_id对应cpsw_slaves结构体数组中的第一个话 对应的要使用rmii1接口,
对应结构体数组中的第二个的话则使用rmii2接口,是这个意思吧?
如果没有对port1做dhcp的话,在u-boot下改如何测试网络是不是通的?
内核中有没有做?
谢谢
kedacom:
回复 Jian Zhou:
今天改了一下内核,pinmux phy_id
等系统启动起来,插入网线,会有打印提示
PHY: 0:00 – Link is Up – 100/Full
但是我执行udhcpc,还是没有回应
Sending discover… Sending discover…
…..
我用示波器看了AM3359的RMII2 的发送引脚 发现上面完全没有数据传输,这是什么情况
leo chen:
回复 kedacom:
你的uboot是那个版本的
我在linux下也遇到这样的问题,可能是不同版本的驱动有问题
Jian Zhou:
回复 kedacom:
port0对应的是cpsw_slaves的第一个数组,这个数组的.phy_id属性是是MDIO访问的PHY地址。如果你的RMII2所连接的PHY_addr是0,而cpsw_slaves的第一个数组.phy_id属性也是0,那么port0所对应的应该就是RMII2。
最好先在U-boot下ping通,再调试DHCP和TFTP等命令。
很奇怪你为什么不用RMII1呢?
kedacom:
回复 leo chen:
我用的是最新版的SDK06.00.00里面的uboot-2013.01.01,目前感觉是无处下手,你的问题解决了吗 或者有什么测试方法吗
kedacom:
回复 Jian Zhou:
RMII1的一些引脚被其他功能占用了,所以选了RMII2,
我现在为板子分配了ip并执行了ping命令
U-Boot# setenv ipaddr 192.168.1.124 U-Boot# ping 192.168.1.102 link up on port 0, speed 100, full duplex Using cpsw device ping failed; host 192.168.1.102 is not alive
ip 192.168.1.102是我的主机地址,可就是ping不通
现在该怎么做?
sfc sshw:
回复 kedacom:
跟你遇到了同样的问题,现在同样无解中,关注。我现在强烈怀疑根本有没有人成功的在uboot中使用port1,查了N多资料,还是无果。