在U_boot下调试以太网的mdio总线

我这里调试的案例是通过的复旦微的FMQL45T900+88E1111来调试的,最开始我是直接参考复旦微的官方手册 (坑有点多,需要自己多做两次才能避开)直接使用FSBL+U_BOOT来测试 上板调试的时候发现网络不通。

pl工程采取的是vivado工程导入proces来开发的fsbl工程

U_boot工程是复旦微的原始psb工程移植的。

第一步:先验证环境

知识点1:在U_boot下的MDIO配置和解析命令

1、指令:mdio list        解析:列出当前所有的MDIO总线

并且显示当前设备挂载的驱动型号 设备号等详细

2、指令mdio read mdio总线   总线地址 寄存器地址

解析:列出当前mdio总线 下寄存器的值 ps:(多个寄存器:mdio read mdio总线   总线地址 开始寄存器地址 -结束寄存器地址。)

在这里的我phy地址为0x06

3、gmac

GMAC是为了满足千兆网传输而发展起来的,它是构成千兆网必备的条件之一。GMAC在七层ISO标准中属于数据链路层,它对逻辑链路和物理链路之间的通道进行控制和协调,可以连接各种不同物理媒介,不同物理媒介有不同的GMAC标准,GMAC的标准由IEEE802工作组制定。

4、设备树架构

设备树出现以前,所有关于设备的具体信息都要写在驱动里,一旦外围设备变化,驱动代码就要重写。 引入了设备树之后,驱动代码只负责处理驱动的逻辑,而关于设备的具体信息存放到设备树文件中,这样,如果只是硬件接口信息的变化而没有驱动逻辑的变化,驱动开发者只需要修改设备树文件信息,不需要改写驱动代码。

所以在这里我们需要了解设备树的配置

下面是我在设备树下做的修改:

ps:在设备树下不能指定驱动

5、u_boot初始化PHY流程

下面是我手绘的一个u_boot相关结构图 经供参考:

6、mac->phy的传输方式

这里的设计采用是下面的架构

7、u_boot调试

到这里已经将整体的思路梳理清楚了然后读取相关寄存器来分析在什么环节出现了问题

我这里是参考IAR里面的裸机最后定位在了U_boot初始化88e1111的时候phy->rg45接口的时候配置问题。

在bsp工程的

u-boot-2018.07-fmsh\drivers\net\phy\marvell.c中的函数:static int m88e1111s_config(struct phy_device *phydev)

下加入下面代码:

reg=phy_read(phydev,MDIO_DEVAD_NONE,PHY_88E1111_ESST);

reg= 0x8484 ;

phy_write(phydev,MDIO_DEVAD_NONE,PHY_88E1111_ESST,reg);

reg=phy_read(phydev,MDIO_DEVAD_NONE,PHY_88E1111_ESST);

phy_reset(phydev);

phy_write(phydev, MDIO_DEVAD_NONE,

PHY_88E1111_ESCT_CFG, PHY_88E1111_ESCT_CFG_REG);

然后编译环境 ,上板调试。

调试完成。

MDIO总线+88E1111调试笔记相关推荐

  1. linux内核 can总线,Linux Canbus调试笔记

    http://blog.csdn.net/flydream0/article/details/8161418 CAN总线在嵌入式Linux下驱动程序的实现 http://www.21ic.com/ap ...

  2. 基于STM32的CAN总线通信学习笔记

    转自:https://blog.csdn.net/ludaoyi88/article/details/53350077 基于STM32的CAN总线通信学习笔记 本文主要简单介绍CAN总线的相关概念,以 ...

  3. Arduino驱动QMC6308地磁传感器调试笔记(1)

    一.QMC地磁传感器介绍(矽睿科技) QMC6308是三轴磁传感器,它将磁传感器和信号环境ASIC集成到一个硅芯片中. 该晶片级芯片级封装(WLCSP)适用于移动和可穿戴设备中的电子罗盘,地图旋转,游 ...

  4. 调试笔记--jlink 变量转实时波形小技巧

    调试笔记–jlink 变量转实时波形小技巧 上篇讲了jlink RTT组件在RAM中开辟一段内存,将printf字符串存入然后通过jlink调试接口读取RAM,将printf字符串在jlink-RTT ...

  5. 调试笔记--keil 测量周期小技巧

    调试笔记–keil 测量周期小技巧 本文参考安富莱专题教程第7期 http://www.armbbs.cn/forum.php?mod=viewthread&tid=87176&ext ...

  6. 调试笔记--keil 断点调试小技巧

    调试笔记–keil 断点调试小技巧 给变量打断点 调试不熟悉的项目时,卧槽!怎么这么多全局变量?这玩意又在那修改了??这个时候会给变量打断点就能省好多事. 将要监视的全局变量添加到watch窗口 选中 ...

  7. gpio驱动广播Android,[RK3288][Android6.0] 调试笔记 --- 通用GPIO驱动控制LED【转】

    Platform: ROCKCHIP OS: Android 6.0 Kernel: 3.10.92 由于板子没有lcd无法得知sd卡升级是否完成,因此使用LED显示. Recovery中升级完成后控 ...

  8. linux网络设备—mdio总线

    一.结构体 struct mii_bus {const char *name; //总线名char id[MII_BUS_ID_SIZE]; //idvoid *priv; //私有数据int (*r ...

  9. keil4怎么移植其他人的程序_【调试笔记】韦东山:在100ask_imx6ull上移植使用六轴传感器ICM20608...

    之前发了LCD调试笔记,大家很感兴趣,所以这次再来一篇:六轴传感器ICM20608驱动移植笔记,大家还需要什么移植笔记?可以留言.我们尽量满足. 1.1 移植思路 先找到驱动:也许内核里已经有,也许需 ...

最新文章

  1. 2021年大数据HBase(三):HBase数据模型!!!【建议收藏】
  2. android定义空字符串数组,android – retrofit:处理可以是空字符串或数组的属性
  3. “双十一”即来 电商如何开启安全大战?
  4. PYTHON之DEF
  5. mysql选择数据库创建数据库
  6. 重拾MVC——第二天:Vue学习与即时密码格式验证
  7. java用对话框输出计算结果_Java怎么实现输入一个string表达式然后输出计算的结果...
  8. 如何使用Windows、Ubuntu甚至手机登录远程计算机
  9. Python SimpleHTTPServer – Python HTTP服务器
  10. BZOJ4060 : [Cerc2012]Word equations
  11. 【Proteus仿真】Arduino UNO步进电机驱动示例
  12. Adobe Photoshop CS6 缩小图片保持不失真的最佳方案
  13. 澳大利亚博士后招聘|国立大学—太阳能电池方向
  14. 【路径规划】基于模糊逻辑系统实现车辆的自主导航附matlab代码
  15. BlazePose: On-device Real-time Body Pose tracking
  16. 关于objectArx /CAD二次开发中“属性块”操作
  17. Android 调用系统照相机拍照和录像
  18. Python四平方和
  19. 双人坦克大战 - Unity3D
  20. 技嘉计算机主板排行,2019人气电脑主板排名前十 买个好主板相当于给电脑买个好身体...

热门文章

  1. ZYNQ PL采集AD7606数据PS LWIP发送
  2. 【科普】光谱(光学频谱)分布图及波长
  3. 客如云第二届开放平台大会 餐饮零售业新升级再赋能
  4. android 记事本ppt,基于Android记事本软件设计与实现.ppt
  5. 南加大的计算机科学与工程,2019上海软科世界一流学科排名计算机科学与工程专业排名南加州大学排名第15...
  6. 南加大计算机本科学费,南加州大学学费多少
  7. 关于SPING与EJB的胡言乱语
  8. openlayers设置黑色底图,自定义修改天地图颜色
  9. 雨落竹轩(来自好友)
  10. RabbitMQ可靠性投递与高可用架构