海思3559:百兆网口的配置

简介: 百兆网口的配置

前言

海思3559的开发板网口是默认支持千兆/百兆的,这里的自适应,是从RJ45出来后和PC侧的自适应,而实际上3559对于网口的设置,默认都是RGMII模式,除了对应的软件配置,硬件部分需要通过上拉电阻的方法和phy芯片的的支持决定3559最终要选择那个模式,比如PHY芯片只支持到百兆,硬件部分就需要配置成RMII模式,对应的软件配置也需要对应的改为RMII,官方文档不知道是没有写还是太杂了没找到,这里补充完整的移植方法。此外,不同的SDK版本需要改不同的参数,这里给出Hi3559AV100_SDK_V2.0.3.1的改法用于参考

Uboot:

配置表格:

 /Hi3559AV100_SDK_V2.0.3.1/osdrv/tools/pc/uboot_tools/Hi3559AV100-DMEB_8L_T-DDR4_2664M_4GB_16bitx4-A73_1608M.xlsm其中的IOCFG_REG87要从0x91改为0x94,具体含义参考pinout表格

c10827f3164b40a5bcb866fc312fd3c6.png

头文件

 /Hi3559AV100_SDK_V2.0.3.1/osdrv/opensource/uboot/u-boot-2016.11/include/configs/hi3559av100.h要把phy0(看具体使用情况)工作模式同样改为rmii

83  /*Network configuration*  
84  #define CONFIG PHY GIGE 
85  #ifdef CONFIG NET HIGMACV300  
2
8786#define CONFIG GMAC NUMS#define CONFIG HIGMAC PHYO ADDR1
88  #define CONFIG HIGMAC PHY0 INTERFACE MODE 1 /* rgmii 2, rmii 1, mii 0 */  
3
89  #define CONFIG HIGMAC PHY1 ADDR.  
90  #define CONFIG HIGMAC PHY1 INTERFACE MODE 2 /* rqmii 2, rmii 1, mii 0 */  
91  #define CONFIG HIGMAC DESC 4 WORD 
92  #define CONFIG SYS FAULT ECHO LINK DOWN 1 
93  #endif  
94  Hx--1024

kernel

设备树:

 Hi3559AV100_SDK_V2.0.3.1/osdrv/opensource/kernel/linux-4.9.y_multi-core/arch/arm64/boot/dts/hisilicon路径下

 .hi3559av100-demb-flash.dtb.dts.tmp修改

&higmac {
phy-handle =<&ethphy>; phy-mode ="rmii";};
&higmac1{
phy-handle =<&ethphy1>; phy-mode ="rmii";
:{  Hx--1024

 hi3559av100-demb.dts修改

&higmac {
phy-handle =<&ethphy>; phy-mode ="rmii";
};
&higmac1{
phy-handle =<&ethphy1>; phy-mode ="rmii";
};
Hx--1024

补充说明

 phy的具体配置可以参考厂家提供的技术手册

 软件到手后,最基本的可以在uboot阶段通过mii指令,读到phy寄存器正确的状态

mii

mii - MII utility commands
Usage:
mii device - list available devices
mii device - set current device
mii info - display MII PHY info
mii read - read MII PHY register
mii write - write MII PHY register
mii dump - pretty-print (0-5 only)

mii device示例,会输出MDC/MDIO总线设备

uboot>mii device                                                           
MII devices: 'FSL_MDIO0' 'FM_TGEC_MDIO'
Current device: 'FSL_MDIO0'

 mii info打印输出,PHY后面跟的就是addr

uboot> mii info
PHY 0x00: OUI = 0x5043, Model = 0x1D, Rev = 0x01, 1000baseT, FDX
PHY 0x01: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x02: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x03: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x04: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x05: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x06: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
PHY 0x07: OUI = 0x0000, Model = 0x00, Rev = 0x00,  10baseT, HDX
mii read - read MII PHY register
  mii write - write MII PHY register

上述两个命令,需要根据具体的芯片手册寄存器设置来进行配置。以下命令为示例

mii write 0 0 0x8000    向地址为0的phy芯片的0寄存器写入0x8000
mii  read 0 0     读取地址为0的phy芯片的寄存器0的值

 部分uboot也支持直接使用mdio指令,需要时自行查录

奇怪的问题:读寄存器状态不对

 如果连读寄存器的状态都存在问题时,(博主遇到了读同样的寄存器,连着读读到的值竟然不一样,有00有ff有正常的0x7949)首先需要协调硬件工程师 就复位,时钟,电源挨个检查,大概率是硬件问题。最后果然检查到电源部分有个电阻阻值不对,导致工作电压不稳定进而影响了寄存器的配置


相关文章
|
4天前
|
监控 物联网 数据安全/隐私保护
|
4天前
|
传感器 监控 物联网
PoE 交换机:为现代网络供电
【4月更文挑战第21天】
15 0
网络基础 - 如何区分百兆网线和千兆网线?
网络基础 - 如何区分百兆网线和千兆网线?
193 0
网络基础 - 如何区分百兆网线和千兆网线?
|
数据中心
光纤跳线检测方法,校园网如何用光纤跳线连接?
在光纤跳线在连接设备之前一定要先检测光纤跳线是否合格,否则当光纤跳线都已全部布线好才发现故障导致光纤链路无法正常工作,到那时就会造成没有必要的麻烦。那么光纤跳线如何检测呢?下面易天光通信(ETU-LINK)教给大家几个简单的办法: 方法一:通过红光笔检测光纤跳线是否连通,确定光纤跳线没有断点或故障即可使用; 方法二:使用光回波损耗测试仪测量光纤跳线的插入损耗和回波损耗,一般插入损耗值小于0.3dB,回波损耗值大于45dB,测量结果满足要求即可使用; 方法三:使用光功率计或OTDR光时域反射仪测量光纤接头损耗和光纤衰减(甚至可以检测光纤故障点),只要符合标准即可使用。
1416 0
|
数据安全/隐私保护 Java 存储