Kernel_Lover

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover  发布于  2017-10-11 09:45:08
采纳率 0%
17个问答
7236

关于网卡 AR8035 的问题

 
开发板:hi3536
sdk:Hi3536 V100R001C02SPC050

我按照论坛里的帖子,开启了 stmmac ,phy0 和phy1 的 id 都为 2,STMMAC PHY0 MDIO INTERFACE 和 STMMAC PHY1 MDIO INTERFACE 设为7,启动信息为:

libphy: Fixed MDIO Bus: probed
tun: Universal TUN/TAP device driver, 1.6
tun: (C) 1999-2004 Max Krasnyansky <[email]maxk@qualcomm.com[/email]>
STMMAC driver:
        platform registration...
        done!
        done!
        DWMAC1000 - user ID: 0x10, Synopsys ID: 0x36
        Enhanced descriptor structure
MACADDR in get is 0:b:3f:0:0:1
stmmac_associate_phy: phy 0 mode=7
        eth0 - (dev. name: stmmaceth - id: 0, IRQ #55
        IO base addr: 0xfc020000)
libphy: STMMAC MII Bus: probed
eth0: PHY ID 004dd072 at 2 IRQ -6 (1:02) active
        DWMAC1000 - user ID: 0x10, Synopsys ID: 0x36
        Enhanced descriptor structure
MACADDR in get is ff:ff:ff:ff:ff:ff
        no valid MAC address for MAC 1;please, use ifconfig or nwhwconfig!
stmmac_associate_phy: phy 1 mode=7
        eth1 - (dev. name: stmmaceth - id: 0, IRQ #55
        IO base addr: 0xfc024000)
eth1: PHY ID 004dd072 at 2 IRQ -6 (1:02) active
stmmac_reset: RESET COMPLETE!

**************************************************
*  TNK driver built on Oct  9 2017 at 13:45:20
*  TNK driver mode is BYPASS
**************************************************
stmmac: Rx Checksum Offload Engine supported
        TX Checksum insertion supported
stmmac: Rx Checksum Offload Engine supported
        TX Checksum insertion supported

在启动内核后:

/* 配置ip地址 */

/ # ifconfig eth0 192.168.1.138
IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
/ # libphy: 1:02 - Link is Up - 1000/Full
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
libphy: 1:02 - Link is Up - 1000/Full
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0B:3F:00:00:01  
          inet addr:192.168.1.138  Bcast:192.168.1.255  Mask:255.255.255.0  /* 配置ip成功 */
          inet6 addr: fe80::20b:3fff:fe00:1/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:0 (0.0 B)  TX bytes:468 (468.0 B)
          Interrupt:55

/ # ping 192.168.1.176
PING 192.168.1.176 (192.168.1.176): 56 data bytes
^C
--- 192.168.1.176 ping statistics ---
10 packets transmitted, 0 packets received, 100% packet loss  /* 但是 ping 不通 */
/ # --- 192.168.1.176 ping statistics ---

请教一下,能够配置ip地址,但是 ping 不通,是哪里配置有问题,谢谢!
我来回答
回答14个
时间排序
认可量排序

Benz

0个粉丝

29

问答

0

专栏

0

资料

Benz 2017-10-11 18:14:16
认可0
应该是虚拟机的网络配置问题,网络编辑器里面要选择物理网卡

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-12 08:58:36
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79306&ptid=37928]Benz 发表于 2017-10-11 18:14[/url]
应该是虚拟机的网络配置问题,网络编辑器里面要选择物理网卡[/quote]

好的,我去试一下,谢谢!

杨工

0个粉丝

7

问答

0

专栏

0

资料

杨工 2017-10-12 09:09:57
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79321&ptid=37928]Kernel_Lover 发表于 2017-10-12 08:58[/url]
好的,我去试一下,谢谢![/quote]

我也在搞这个,加个好友

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-12 09:10:05
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79306&ptid=37928]Benz 发表于 2017-10-11 18:14[/url]
应该是虚拟机的网络配置问题,网络编辑器里面要选择物理网卡[/quote]

我的网络配置应该是连接到了物理网卡了

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-10-12 09:14:02
认可0
看log有
“# libphy: 1:02 - Link is Up - 1000/Full”

说明phy的状态是ok的,即cpu和phy之间的mdio通信是ok的

而ping不通,一般是数据通道不通,AR8035需要设置RGMII的延时, 楼主可以试一下

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-12 09:55:52
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79324&ptid=37928]zhuangweiye 发表于 2017-10-12 09:14[/url]
看log有
“# libphy: 1:02 - Link is Up - 1000/Full”

[/quote]

我用的代码at803x.c是从论坛里的一个帖子下载的,sdk 中的linux版本为3.10.0,而下载的代码版本在4.0以上。


设置延时的代码:

static int at803x_config_init(struct phy_device *phydev)
{
        .................................................

        if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||
                         phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
                 ret = at803x_enable_rx_delay(phydev);
                 if (ret < 0)
                         return ret;
                 printk(" at803x_enable_rx_delay\n");
         }

         if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
                         phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {
                 ret = at803x_enable_tx_delay(phydev);
                 if (ret < 0)
                         return ret;
                printk(" at803x_enable_tx_delay\n");
        }

        //at803x_resume(phydev);
        return 0;
}


/* 配置 IP 地址 */

/ # ifconfig eth0 192.168.1.138
at803x_config_init in
at803x_config_init 100M
at803x_config_init 1000M
at803x_enable_rx_delay     /* 自己加的printk,可以看到两个延时都设置了 */
at803x_enable_tx_delay

IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
/ # libphy: 1:02 - Link is Up - 1000/Full
IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready

/ # ping 192.168.1.176
PING 192.168.1.176 (192.168.1.176): 56 data bytes
^C
--- 192.168.1.176 ping statistics ---
6 packets transmitted, 0 packets received, 100% packet loss

结果还是ping不通

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-10-12 10:01:41
认可0
本帖最后由 zhuangweiye 于 2017-10-12 10:09 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=79327&ptid=37928]Kernel_Lover 发表于 2017-10-12 09:55[/url]
我用的代码at803x.c是从论坛里的一个帖子下载的,sdk 中的linux版本为3.10.0,而下载的代码版本在4.0以上 ...[/quote]

如果设了, 也可以试一下disable的情况

另外,设了不代表设的值适合您的板子,延时有好几个值,多试试

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-12 10:08:32
认可0
谢谢啊,我去看一下在哪里设置。

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-12 11:42:11
认可0
本帖最后由 Kernel_Lover 于 2017-10-12 11:44 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=79328&ptid=37928]zhuangweiye 发表于 2017-10-12 10:01[/url]
如果设了, 也可以试一下disable的情况

另外,设了不代表设的值适合您的板子,延时有好几个值,多试 ...[/quote]

我看了代码,at803x_enable_rx_delay和at803x_enable_tx_delay函数,分别让接受数据时钟延时和发送数据时钟延时使能,还有disable延时,也ping不通,还需要设置哪些延时参数?

#define AT803X_DEBUG_REG_0                      0x00
#define AT803X_DEBUG_RX_CLK_DLY_EN              BIT(15)
#define AT803X_DEBUG_REG_5                      0x05
#define AT803X_DEBUG_TX_CLK_DLY_EN              BIT(8)


static inline int at803x_enable_rx_delay(struct phy_device *phydev)
{
         return at803x_debug_reg_mask(phydev, AT803X_DEBUG_REG_0, 0,
                                         AT803X_DEBUG_RX_CLK_DLY_EN);
}

static int at803x_debug_reg_mask(struct phy_device *phydev, u16 reg,
                                 u16 clear, u16 set)
{
        u16 val;
        int ret;
         ret = at803x_debug_reg_read(phydev, reg);
        if (ret < 0)
                return ret;
        val = ret & 0xffff;
        val &= ~clear;
         val |= set;
/* 将 val 写入寄存器 AT803X_DEBUG_DATA ,使能延时 */
         return phy_write(phydev, AT803X_DEBUG_DATA, val);

}

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-10-12 11:53:30
认可0
本帖最后由 zhuangweiye 于 2017-10-12 11:55 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=79342&ptid=37928]Kernel_Lover 发表于 2017-10-12 11:42[/url]
我看了代码,at803x_enable_rx_delay和at803x_enable_tx_delay函数,分别让接受数据时钟延时和发送数据 ...[/quote]

试试disable tx, enable rx

不然,看看debug register 0x0B

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-12 14:30:46
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79344&ptid=37928]zhuangweiye 发表于 2017-10-12 11:53[/url]
试试disable tx, enable rx

不然,看看debug register 0x0B[/quote]

非常感谢你!我的可以ping通了。

STMMAC PHY0 MDIO INTERFACE 和 STMMAC PHY1 MDIO INTERFACE 设为6

在at803x.c文件中改一下代码:

//if (phydev->interface == PHY_INTERFACE_MODE_RGMII_RXID ||            
                         //phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {

                 ret = at803x_enable_rx_delay(phydev);
                 if (ret < 0)
                         return ret;
                 printk(" at803x_enable_rx_delay\n");
         //}

         //if (phydev->interface == PHY_INTERFACE_MODE_RGMII_TXID ||
                         //phydev->interface == PHY_INTERFACE_MODE_RGMII_ID) {

                 ret = at803x_enable_tx_delay(phydev);
                 if (ret < 0)
                         return ret;
                 printk(" at803x_enable_tx_delay\n");
        //}


将红色的代码注释掉就可以了

fengyezhixing

0个粉丝

0

问答

0

专栏

0

资料

fengyezhixing 2017-10-12 18:00:56
认可0
楼主,您好,我现在也在调试ar8327驱动,请问方法跟这个ar8035一样的吗,驱动是要在哪找呢?

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-13 09:03:40
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79372&ptid=37928]fengyezhixing 发表于 2017-10-12 18:00[/url]
楼主,您好,我现在也在调试ar8327驱动,请问方法跟这个ar8035一样的吗,驱动是要在哪找呢?[/quote]

驱动在 drivers/net/phy/at803x.c 下

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-10-13 09:07:39
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=79372&ptid=37928]fengyezhixing 发表于 2017-10-12 18:00[/url]
楼主,您好,我现在也在调试ar8327驱动,请问方法跟这个ar8035一样的吗,驱动是要在哪找呢?[/quote]

我看了AR8327的简介,这个芯片是用于交换机的芯片,好像不太一样
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区