海思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)首先需要协调硬件工程师 就复位,时钟,电源挨个检查,大概率是硬件问题。最后果然检查到电源部分有个电阻阻值不对,导致工作电压不稳定进而影响了寄存器的配置


相关文章
|
9月前
|
机器学习/深度学习 人工智能 开发工具
Clone-voice:开源的声音克隆工具,支持文本转语音或改变声音风格,支持16种语言
Clone-voice是一款开源的声音克隆工具,支持16种语言,能够将文本转换为语音或将一种声音风格转换为另一种。该工具基于深度学习技术,界面友好,操作简单,适用于多种应用场景,如视频制作、语言学习和广告配音等。
1635 9
Clone-voice:开源的声音克隆工具,支持文本转语音或改变声音风格,支持16种语言
|
编解码 开发工具 Android开发
低延迟播放超高分辨率(4K+)帧率(50帧+)RTSP|RTMP流技术探讨和实现
为满足安检等场景需求,需支持4K+分辨率与50帧以上的高帧率视频流播放。实现这一目标的关键步骤包括:确保视频源支持高帧率输出、选用高性能RTSP/RTMP播放器以处理高负载视频解码、采用硬件解码以降低CPU负担、保证充足的网络带宽以维持流畅播放并控制延迟、合理配置播放器缓冲策略以适应网络波动、进行性能监控与调试以优化播放效果,以及确保播放器在多平台上的良好兼容性和表现。例如,大牛直播SDK的SmartPlayer在不同平台上实现了稳定且低延迟(150-300ms)的播放体验,支持多种视频和音频格式及多种功能,如多实例播放、事件回调、视频快照等。
540 1
|
传感器 编解码 Linux
V4L2框架 | MIPI Camera指令调试笔记
V4L2框架 | MIPI Camera指令调试笔记
5992 2
|
Linux Windows 内存技术
PCIe初始化枚举和资源分配流程分析
本文主要是对PCIe的初始化枚举、资源分配流程进行分析,代码对应的是alikernel-4.19,平台是arm64 ## 1. PCIe architecture ### 1.1 pcie的拓扑结构 在分析PCIe初始化枚举流程之前,先描述下pcie的拓扑结构。 如下图所示: ![11.png](https://ata2-img.oss-cn-zhangjiakou.aliyuncs
8366 1
PCIe初始化枚举和资源分配流程分析
|
中间件 Linux 开发工具
海思3559U-Boot移植(一):一路next的默认模式
Hi3559AV100 单板的 Bootloader 采用 U-boot。当选用的外围芯片的型号与单板上外围芯片的型号不同时,需要修改 U-boot 配置文件,主要包括存储器配置、 管脚复用。sdk包里有uboot的源码,可以进行修改后编译
908 0
海思3559U-Boot移植(一):一路next的默认模式
|
存储 缓存 Linux
【C函数】读寄存器为什么要用ioremap_nocache
【C函数】读寄存器为什么要用ioremap_nocache
365 0
|
物联网 Linux 编译器
海思3559开发环境搭建:从这里开始
海思的文档已经非常详细了,分门别类详尽整齐。但是对于刚刚接手的开发者而言,每次编译都不得不从一个文档看到另一个文档,再是另一个文档,跳来跳去又跳到readme……这一过程实在是繁琐之至。为了是这一过程清晰并且一目了然,在此整理出整个编译过程(以Hi3559AV100为例),给自己也给其他用到海思SDK的人提供方便之门。
1757 0
|
存储 并行计算 物联网
海思3559万能平台搭建:VGS的画线处理
海思3559万能平台搭建:VGS的画线处理
1683 0
海思3559万能平台搭建:VGS的画线处理