硅天下科技

硅天下科技

1个粉丝

38

问答

0

专栏

9

资料

硅天下科技  发布于  2020-08-27 15:49:02
采纳率 0%
38个问答
3380

Hi3516DV300【四】

 
Hi3516DV300uboot有线网口调试

1 uboot下修改PHY芯片的PHYADDR和添加PHY_ID支持

1). 修改PHYADDR

cd Hi3516CV500_SDK_V2.0.1.1/osdrv/opensource/uboot/u-boot-2016.11
vi include/configs/hi3516dv300.h

软件上的PHYADDR配置要根据每个人板子上的PHY芯片手册查询;
/*-----------------------------------------------------------------------
* HIETH driver
-----------------------------------------------------------------------*/
/* default is hieth-switch-fabric */
#ifdef CONFIG_NET_HISFV300
        #define HISFV_RESET_PHY_BY_CRG
        #define HISFV_MII_MODE                          0
        #define HISFV_RMII_MODE                         1
        #define HIETH_MII_RMII_MODE_U                   HISFV_RMII_MODE
        #define HIETH_MII_RMII_MODE_D                   HISFV_RMII_MODE
#if 1   // add by wei
        #define HISFV_PHY_U                             0
        #define HISFV_PHY_D                             1
        // add by wei end
#else
        #define HISFV_PHY_U                             1
        #define HISFV_PHY_D                             2
#endif
#endif /* CONFIG_NET_HISFV300 */



2). 添加PHYID

vi ./drivers/net/hisfv300/mii-drv.c

添加PHY的新宏PHY_ID_KSZ8081_SM, 这个PHYID每个人要根据自己板子上的PHY芯片手册查询;

#define PHY_ID_KSZ8081_SM       0x00221561 // add by wei for my phy

if ((phy_id & PHY_ID_MASK) == PHY_ID_KSZ8081 || (phy_id & PHY_ID_MASK) == PHY_ID_KSZ8081_SM) { // add by wei
#define PHY_ID_KSZ8051          0x00221550
#define PHY_ID_KSZ8081          0x00221560
#define PHY_ID_KSZ8081_SM       0x00221561 // add by wei for my phy
#define PHY_ID_MASK             0xFFFFFFF0


...


//added by wzh 2009-4-15
bool phy_detected(const char *devname, unsigned char phyaddr)
{
        printf("phy_detected devname=%s phyadd=%x[wei]\n", devname, phyaddr);
        u32 phy_id = 0;
        u16 id1 = 0, id2 = 0;

        if (miiphy_read(devname, phyaddr, MII_PHYSID1, &id1)) {
                printf("%s,%d:PHY_PHYIDR1 read failed!\n", __func__, __LINE__);
                return false;
        }
        if (miiphy_read(devname, phyaddr, MII_PHYSID2, &id2)) {
                printf("%s,%d:PHY_PHYIDR2 read failed!\n", __func__, __LINE__);
                return false;
        }

        phy_id = (id1 & 0xffff) << 16;
        phy_id |= (id2 & 0xffff);
        printf("phy_id = 0x%x[wei]\n", phy_id);

        /* If the phy_id is all Fs, there is no device there */
        if (0xffffffff == phy_id || 0 == phy_id
                || phy_id == 0xFFFF || phy_id == 0xFFFF0000)
        {
                return false;
        }

        /* run this at RMII mode */
        if (HIETH_MII_RMII_MODE_U == 1)
        {
                /* PHY-KSZ8051RNL */
                if ((phy_id & PHY_ID_MASK) == PHY_ID_KSZ8051) {
                        unsigned short reg = 0;

                        if (miiphy_read(devname, phyaddr, 0x1F, ®)) {
                                printf("PHY 0x1F read failed\n");
                                return false;
                        }
                        reg |= BIT(7); /* set phy RMII 50MHz clk;*/
                        if (miiphy_write(devname, phyaddr, 0x1F, reg)) {
                                printf("PHY 0x1F write failed\n");
                                return false;
                        }

                        if (miiphy_read(devname, phyaddr, 0x16, ®)) {
                                printf("PHY 0x16 read failed\n");
                                return false;
                        }
                        reg |= BIT(1); /* set phy RMII override; */
                        if (miiphy_write(devname, phyaddr, 0x16, reg)) {
                                printf("PHY 0x16 write failed\n");
                                return false;
                        }
                }

                /* PHY-KSZ8081 */
                if ((phy_id & PHY_ID_MASK) == PHY_ID_KSZ8081
                        || (phy_id & PHY_ID_MASK) == PHY_ID_KSZ8081_SM) { // add by wei
                        printf("PHY_ID_KSZ8081[wei]\n");
                        unsigned short val = 0;

                        if (miiphy_read(devname, phyaddr, 0x1F, &val) != 0) {
                                printf("PHY 0x1F read failed\n");
                                return false;
                        };
                        val |= BIT(7);       /* set phy RMII 50MHz clk; */
                        if (miiphy_write(devname, phyaddr, 0x1F, val) != 0) {
                                printf("PHY 0x1F write failed\n");
                                return false;
                        }
                        printf("set phy RMII 50MHz clk[wei]\n");
                }
        }
        return true;
}


3). 时钟配置

这个uboot里配置是RMII模式,无需修改;定义在hi3516dv300.h中

2 uboot有线网口测试
hisilicon # setenv serverip 192.168.1.74
hisilicon # setenv ethaddr FE:FC:AC:98:E8:01
hisilicon # setenv ipaddr 192.168.1.75      
hisilicon # setenv netmask 255.255.255.0
hisilicon # setenv gatewayip 192.168.1.1
hisilicon # ping 192.168.1.74
Hisilicon ETH net controler
phy_id = 0x221561[wei]
eth0 : phy status change : LINK=UP : DUPLEX=FULL : SPEED=100M
Using eth0 device
host 192.168.1.74 is alive
hisilicon #
hisilicon # printenv
arch=arm
baudrate=115200
board=hi3516dv300
board_name=hi3516dv300
bootargs=mem=512M console=ttyAMA0,115200 root=/dev/mtdblock2 rootfstype=jffs2 rw mtdparts=hi_sfc:1M(boot),5M(kernel),26M(rootfs)
bootcmd=sf probe 0;sf read 0x82000000 0x100000 0x500000;bootm 0x82000000
bootdelay=2
cpu=armv7
ethact=eth0
ethaddr=FE:FC:AC:98:E8:01
gatewayip=192.168.1.1
ipaddr=192.168.1.75
netmask=255.255.255.0
serverip=192.168.1.74
soc=hi3516dv300
stderr=serial
stdin=serial
stdout=serial
vendor=hisilicon
verify=n

Environment size: 540/262140 bytes

我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区