神州龙芯GSC3290适配裕太YT8521S操作说明

2024-02-18 02:10

本文主要是介绍神州龙芯GSC3290适配裕太YT8521S操作说明,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一,环境介绍

        1.主控芯片        

            GSC3290是北京神州龙芯集成电路设计有限公司基于自主知识产权龙芯32位处理器核设计的工业级SoC芯片。芯片采用先进 CMOS工艺,主频300MHz,片内集成了丰富的功能模块与外围设备。
         GSC3290保持了工业级高可靠性,是GSC328X的升级版,相比GSC3280功能升级为双千兆网口、双CAN接口、16位外部并行总线、I/O配置与分布更适于整体系统设计,可广泛应用于工业控制、能源电力等终端类应用

        2.PHY芯片

        YT8521S是一款单口千兆以太网PHY,支持RGMII,SGMII等接口,支持输出25M,125M clk  

二.操作说明

  1.硬件检查

   电源检查
  VDDL = DVDDL = AVDDL = 1.2V;由 YT8521S的32 脚 LX 输出;
   该电压为PHY芯片内部供电 

检查DVDD_RGMII 电压是否符合下表,由YT8521S的 36、37 脚来选择电压;
检查电压值是否符合配置的电压值,是否与MAC端电压匹配
根据外部电路我们配置的电压为3.3V,所以该寄存器的值为“00”
  

 时钟检查
  
YT8521由外部晶振提供一个25MHz的时钟
 MAC端需要phy 额外提供一个 125M 的 clk 信号,硬件上需要利用到,YT8521的 clk out,管脚(pin44), 所以该管脚应输出125M clk。

 接线检查
  
检查MDI、RGMII、MDIO、MDC 等是否正确连接;

 检查PHY地址
   

  2.软件调试

      在uboot下使用mii info命令查看是否可以获取到两张网卡的phy id,如果没有获取多半是
 硬件的问题。
  

网卡驱动使用裕太官方提供的即可,以下是YT8521芯片寄存器的配置:
                 

 SMI_SDS_PHY (EXT_0xA000) (EXT_0xA000):
extReg0xA000 bit1 置 0 // 硬件配置该位默认为 0,用来切换UTP与SDS模式,0为UTP模式,1为
为SDS模式
我们使用的模式为UTP电口模式,所以该位置0。

0xC
 对于龙芯芯片,当PHY与主控通过RGMII相连时,主控要求RX CLK(YT8521 pin28)  的   时钟信号要一直提供,YT8521上电默认的 rx clk 信号是 link down 时会被取消。
 extReg0x0C bit12 清 0 // 该位默认为 1表示当 phy link down时rx clk不输出

 0x27:
 extReg0x27 bit15 清 0 // 该位默认为 1表示检测到不插网线一段时间后,phy进入sleep  模式

 SyncE_CFG (EXT_0xA012):
 上电后,phy需要额外提供一个125M的clk信号
  extReg0xA012 bit5 置 1 // 该位默认为 0,disable clk out;改为 1,则使其 输出

  Basic Control Register (0x00) :
  0x00寄存器bit15 置1,芯片软复位,使上述配置生效

 Uboot下gsc3290_eth.c部分代码如下
 (ADDR_OFFSET_REG为地址偏移寄存器0x1e   DATA_REG为数据寄存器0x1f)

if ((phy_id & YT8521_PHY_ID_MASK) == YT8521_PHY_ID){printf("Found phy YT8521(%d:%d) 0x%08x\n", index, i, phy_id);phy_dev->phy_addr = i;phy_dev->phy_id = YT8521_PHY_ID;phy_dev->phy_mode = 1;phy_dev->phy_speed = 1000;if((index == 0)){*(u32 *)(GSC3290_REGADDR_SYSCTL_GMAC0_CFG) = 1;}else{*(u32 *)(GSC3290_REGADDR_SYSCTL_GMAC1_CFG) = 1;}/* Config the mode to UTP_TO_RGMII */ret = ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0xa001);if(ret < 0)return ret;ret = ytphy_read(dev->name, i, DATA_REG, &value);if(ret < 0)return ret;ret = ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0xa001);if(ret < 0)return ret;ret = ytphy_write(dev->name, i, DATA_REG, value & ~(7<<0));if(ret < 0)return ret;/* Waiting for the whole chip reset finished */while(1){ret = ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0xa001);if(ret < 0)return ret;ret = ytphy_read(dev->name, i, DATA_REG, &value);if(ret < 0)return ret;if((value & (1<<15)) != 0){break;}}/* Config the mode to UTP_TO_RGMII */ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0xa000);if(ret < 0)return ret;ytphy_write(dev->name, i, DATA_REG, 0x0);if(ret < 0)return ret;ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0x27);if(ret < 0)return ret;ytphy_read(dev->name, i, DATA_REG, &value);if(ret < 0)return ret;ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0x27);if(ret < 0)return ret;ytphy_write(dev->name, i,DATA_REG, value & ~(1<<15));if(ret < 0)return ret;/*ebnable SyncE clock output all the time*/ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0xa012);if(ret < 0)return ret;ytphy_read(dev->name, i, DATA_REG, &value);if(ret < 0)return ret;ytphy_write(dev->name, i, ADDR_OFFSET_REG, 0xa012);if(ret < 0)return ret;ytphy_write(dev->name, i, DATA_REG, value | (1<<5));if(ret < 0)return ret;ytphy_read(dev->name, i, 0xc, &value);if(ret < 0)return ret;ytphy_write(dev->name, i, 0xc, value | (1<<12));if(ret < 0)return ret;/* Soft reset */ytphy_read(dev->name, i, MII_BMCR, &value);if(ret < 0)return ret;ytphy_write(dev->name, i, MII_BMCR, value | (1<<15));if(ret < 0)return ret;while(1){ytphy_read(dev->name, i, MII_BMCR, &value);if(ret < 0)return ret;if((value & (1<<15)) == 0){break;}}

  三.网络测试

    配置完成后,设置网卡ip,ping操作查看网络是否通
     Uboot下测试:
                eth0:
                
                eth1:
                

      内核下测试:
                

                

              经过上面的配置,完成GSC3290芯片适配YT8521,网络可以正常ping通。

这篇关于神州龙芯GSC3290适配裕太YT8521S操作说明的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/719712

相关文章

Zookeeper安装和配置说明

一、Zookeeper的搭建方式 Zookeeper安装方式有三种,单机模式和集群模式以及伪集群模式。 ■ 单机模式:Zookeeper只运行在一台服务器上,适合测试环境; ■ 伪集群模式:就是在一台物理机上运行多个Zookeeper 实例; ■ 集群模式:Zookeeper运行于一个集群上,适合生产环境,这个计算机集群被称为一个“集合体”(ensemble) Zookeeper通过复制来实现

git使用的说明总结

Git使用说明 下载安装(下载地址) macOS: Git - Downloading macOS Windows: Git - Downloading Windows Linux/Unix: Git (git-scm.com) 创建新仓库 本地创建新仓库:创建新文件夹,进入文件夹目录,执行指令 git init ,用以创建新的git 克隆仓库 执行指令用以创建一个本地仓库的

log4j2相关配置说明以及${sys:catalina.home}应用

${sys:catalina.home} 等价于 System.getProperty("catalina.home") 就是Tomcat的根目录:  C:\apache-tomcat-7.0.77 <PatternLayout pattern="%d{yyyy-MM-dd HH:mm:ss} [%t] %-5p %c{1}:%L - %msg%n" /> 2017-08-10

android应用中res目录说明

Android应用的res目录是一个特殊的项目,该项目里存放了Android应用所用的全部资源,包括图片、字符串、颜色、尺寸、样式等,类似于web开发中的public目录,js、css、image、style。。。。 Android按照约定,将不同的资源放在不同的文件夹中,这样可以方便的让AAPT(即Android Asset Packaging Tool , 在SDK的build-tools目

动手学深度学习【数据操作+数据预处理】

import osos.makedirs(os.path.join('.', 'data'), exist_ok=True)data_file = os.path.join('.', 'data', 'house_tiny.csv')with open(data_file, 'w') as f:f.write('NumRooms,Alley,Price\n') # 列名f.write('NA

线程的四种操作

所属专栏:Java学习        1. 线程的开启 start和run的区别: run:描述了线程要执行的任务,也可以称为线程的入口 start:调用系统函数,真正的在系统内核中创建线程(创建PCB,加入到链表中),此处的start会根据不同的系统,分别调用不同的api,创建好之后的线程,再单独去执行run(所以说,start的本质是调用系统api,系统的api

Java IO 操作——个人理解

之前一直Java的IO操作一知半解。今天看到一个便文章觉得很有道理( 原文章),记录一下。 首先,理解Java的IO操作到底操作的什么内容,过程又是怎么样子。          数据来源的操作: 来源有文件,网络数据。使用File类和Sockets等。这里操作的是数据本身,1,0结构。    File file = new File("path");   字

MySQL——表操作

目录 一、创建表 二、查看表 2.1 查看表中某成员的数据 2.2 查看整个表中的表成员 2.3 查看创建表时的句柄 三、修改表 alter 3.1 重命名 rename 3.2 新增一列 add 3.3 更改列属性 modify 3.4 更改列名称 change 3.5 删除某列 上一篇博客介绍了库的操作,接下来来看一下表的相关操作。 一、创建表 create

Adblock Plus官方规则Easylist China说明与反馈贴(2015.12.15)

-------------------------------特别说明--------------------------------------- 视频广告问题:因Adblock Plus的局限,存在以下现象,优酷、搜狐、17173黑屏并倒数;乐视、爱奇艺播放广告。因为这些视频网站的Flash播放器被植入了检测代码,而Adblock Plus无法修改播放器。 如需同时使用ads

封装MySQL操作时Where条件语句的组织

在对数据库进行封装的过程中,条件语句应该是相对难以处理的,毕竟条件语句太过于多样性。 条件语句大致分为以下几种: 1、单一条件,比如:where id = 1; 2、多个条件,相互间关系统一。比如:where id > 10 and age > 20 and score < 60; 3、多个条件,相互间关系不统一。比如:where (id > 10 OR age > 20) AND sco