wasd4862

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862  发布于  2013-07-24 00:41:31
采纳率 0%
8个问答
14775

hi3531网卡phy芯片为rtl8211bg的问题!

 
在uboot里面进行ping测试的时候出现:
ARP Retry count exceeded; starting again

ARP Retry count exceeded; starting again

ARP Retry count exceeded; starting agayn

请问是什么原因?
我来回答
回答33个
时间排序
认可量排序

solo_web

0个粉丝

5

问答

0

专栏

2

资料

solo_web 2013-07-24 09:25:46
认可0
ARP time out了吧 估计。

你用PC ping 板子 能ping 通么?

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-24 10:10:02
认可0
是uboot下面哈
pc是ping不通板子的!

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-24 13:03:38
认可0
看下uboot里面的几个超时控制参数, 调整下。 跟进 ping里面看看。

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-24 13:36:25
认可0
跟踪到最后,发现是接收不了数据!
我单独把板子和电脑连接,发现能正常连接上。但是ping的时候就ping不通!

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-24 16:13:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=3452&ptid=1870]wasd4862 发表于 2013-7-24 13:36[/url]
跟踪到最后,发现是接收不了数据!
我单独把板子和电脑连接,发现能正常连接上。但是ping的时候就ping不通 ...[/quote]

先排除一下网段,MAC地址,防火墙等外部原因。

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-24 18:21:35
认可0
这些都排除了!
还有怎么样判断phy芯片已经发生哦给数据到网络上面了??
我现在用wireshark都抓不到板子发送的arp的包!

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-24 22:46:40
认可0
明天 我看下31的uboot

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-24 23:05:44
认可0
我现在用示波器测试RGMII数据线上面的信号,发现都有数据信号,但是就是接收不到数据!

wifi_man

0个粉丝

19

问答

0

专栏

22

资料

wifi_man 2013-07-25 10:38:24
认可0
连接上并不代表 phy正常工作了。。 驱动不正常 照样能连接上。

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-25 12:20:54
认可0
检查方法。
   你看看启动到linux下是否能正常。
  到 linux下使用his 的 himm工具,直接操作 寄存器看看。

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-25 16:36:27
认可0
现在我PC机能够抓到板子送给过来的数据,但是板子接收不了PC机的回的数据

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-25 18:02:05
认可0
RX上有数据么? 用示波器量下这几个地方。RXCK , RXDV 以及数据线上有没有东西。抓一下先

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-25 19:11:21
认可0
都能抓到数据!
波形都正常,RXDV在ping的时候是有波形的,没有ping就没有波形,这样就可以说明是正常的吧!
RXCK是25M的波形!

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-26 15:50:39
认可0
请问uboot中的mii read 和mii write 是怎么用的!

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-26 16:15:30
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=3495&ptid=1870]wasd4862 发表于 2013-7-25 19:11[/url]
都能抓到数据!
波形都正常,RXDV在ping的时候是有波形的,没有ping就没有波形,这样就可以说明是正常的吧 ...[/quote]

看样子是驱动问题

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-26 23:47:24
认可0
波形都正常,RXDV在ping的时候是有波形的,没有ping就没有波形,这样就可以说明是正常的吧 ...


这个能说明是驱动的问题吗?
官方用的是RGMII,我现在用的是MII!

哦!正常情况下,会收到广播包,我测试接收的数据线上面都有数据的!按道理的话,RXDV应该也是要有波形的吧!没有的话,就是不正常了哈!应该是这样理解吗?

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-26 23:49:27
认可0
我刚刚认真的测试了下!没有ping的时候rxdv也是有波形的!

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-27 09:19:56
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=3503&ptid=1870]wasd4862 发表于 2013-7-26 23:47[/url]
波形都正常,RXDV在ping的时候是有波形的,没有ping就没有波形,这样就可以说明是正常的吧 ...


[/quote]

是的。 RXDV 必须要有波形。让驱动代码里面跟下吧,在读的地方能不能读到东西。

wasd4862

0个粉丝

8

问答

0

专栏

1

资料

wasd4862 2013-07-27 11:43:01
认可0
int eth_rx(void)
{
        struct stmmac_netdev_local *ld = stmmac_curr;
        int timeout_us = 100000;
        int lenth = 0;
        unsigned int rx_status = 0;

        rd.length |= 0x7d0;
        rd.buffer1 = (unsigned int)NetRxPackets[0];
        rd.status = DESCOWNBYDMA;

        /* Start RCV */
#ifdef CONFIG_TNK
        writel(DMA_CONTROL_SR | 0x3200000, ld->iobase_dma + DMA_CONTROL);
#else
        writel(DMA_CONTROL_SR, ld->iobase_dma + DMA_CONTROL);
#endif

        while((--timeout_us) && ((rd.status & DESCOWNBYDMA) == DESCOWNBYDMA))
        {}

        printf("%s MAC_CTRL_REG:=%x\n", __func__, readl(ld->iobase_gmac + MAC_CTRL_REG));

        if (!timeout_us) {
                memset((void *)&rd, 0, sizeof(struct dma_desc));
                rd.length = RXDESCENDOFRING;

                return -1;
        }

    //printf("%s:DMA_STATUS:%x\n", __func__, readl(ld->iobase_dma + DMA_STATUS));
       
        rx_status = rd.status;
        lenth = ((rx_status & DESCRXLENTHMASK) >> DESCRXLENTHSHIFT) - 4;
        NetReceive((uchar *)NetRxPackets[0], lenth);

        /* Reset desc */
        memset((void *)(&rd), 0, sizeof(struct dma_desc));
        rd.length = RXDESCENDOFRING;

        return 0;
}

就是在这段代码里面。根本没有接收到数据!我现在用的是MII接口!官方用的是RGMII的模式!

david

33个粉丝

368

问答

253

专栏

229

资料

david 2013-07-27 12:20:12
认可0
这个没关系吧,不放心就配置成RGMII.既然用MII,看下 控制RXCK的 配置时间对不 和 接受字节计数器的 寄存器值会不会变。

主要注意两点吧。  RGMII 和 MII 模式有没有错乱。

读出 接受字节计数器的 内容。看看有没有变化, 没有 往 MII的配置这边查。

读出内容有变化,往TOE和 DMA的地方查。祝好。


加载中···
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区