当前位置: 首页 > news >正文

uboot中调试景略phy JL3111A2-NA

型号:JL3111A2-NA

Phy address: 0x03

1.首先在uboot下读取下phy的id

uboot$ mii write 0x03 0x0d 0x0001
uboot$ mii write 0x03 0x0e 0x0002
uboot$ mii write 0x03 0x0d 0x4001
uboot$ mii read 0x03 0x0e        
937C

查看datasheet,可以发现上面读出来的数值和datasheet一致,至少说明mdio接口是好的。

image

2.由于景略phy对端的phy设备是主,所以我们这里设置为slave

uboot$ mii write 0x03 0x0d 0x0001    //设置为slave
uboot$ mii write 0x03 0x0e 0x0834
uboot$ mii write 0x03 0x0d 0x4001
uboot$ mii write 0x03 0x0e 0x8000 

mii write 0x03 0x0e 0xc000 (设置为master)

mii write 0x03 0x0e 0x8000 (设置为slave)

image

景略提供的sample code代码体现如下

// Master or Slave [1.0x834]
#define REG_BASE_T1_PMAPMD_CONTROL   0x0834
#define PMA_MASTER_SLAVE               BIT(14)
#define CFG_FORCE_MASTER               0x1
#define CFG_FORCE_SLAVE                0x0

 3.由于我们想设置成千兆,看下目前的phy是否为千兆

uboot$ mii write 0x03 0x0d 0x0001   //上电默认,读出来千兆
uboot$ mii write 0x03 0x0e 0x0000
uboot$ mii write 0x03 0x0d 0x4001         
uboot$ mii read 0x03 0x0e
0040

mii write 0x03 0x0e 0x2000(设置为百兆)

image

景略提供的sample code代码体现如下

// Speed [1.0x0]
#define REG_PMAPMD_CONTROL1          0x0000
#define PMA_SOFT_RESET                 BIT(15)
#define PMA_SPEED_MASK                 (BIT(13) | BIT(6))
#define PMA_SPEED_1000                 BIT(6)
#define PMA_SPEED_100                  BIT(13)
#define CFG_FORCE_SPEED_1000           0x1
#define CFG_FORCE_SPEED_100            0x0

 4.由于我们想使用rgmii模式,看下现在的模式

uboot$ mii write 0x03 0x0d 0x0003  //上电默认,rgmii
uboot$ mii write 0x03 0x0e 0x8000
uboot$ mii write 0x03 0x0d 0x4003
uboot$ mii read 0x03 0x0e
0240                               //已经是默认rgmii

景略提供的sample code代码体现如下

// PHY Mode [3.0x8000]
#define REG_COMMON_USER_CONFIG0      0x8000
#define USER_SYSTEM_MODE_MASK          (BIT(3) | BIT(2) | BIT(1) | BIT(0))
#define ENABLE_TSEN                    BIT(5)
#define ENABLE_LED_0                   BIT(6)
#define ENABLE_LED_1                   BIT(7)
#define RGMII_COPPER                   0x0
#define SGMII_COPPER                   BIT(0)
#define MII_COPPER                     BIT(1)
#define RvMII_COPPER                   (BIT(1) | BIT(0))
#define RGMII_SGMII_PHY                BIT(2)
#define RGMII_SGMII_MAC                (BIT(2) | BIT(0))
#define RMII_COPPER                    (BIT(2) | BIT(1))

 

5.一切设定已经结束,下面最终的一步是 通过softreset生效刚刚的配置

uboot$ mii write 0x03 0x0d 0x0001  //soft reset
uboot$ mii write 0x03 0x0e 0x0000
uboot$ mii write 0x03 0x0d 0x4001
uboot$ mii write 0x03 0x0e 0x8040

由于是通过softreset bit位 self clean,自动清除来告知我们soft reset生效,所以可以查看一下是否已经self clean

uboot$ mii write 0x03 0x0d 0x0001  //check soft reset self clean
uboot$ mii write 0x03 0x0e 0x0000
uboot$ mii write 0x03 0x0d 0x4001
uboot$ mii read 0x03 0x0e
0040

景略提供的sample code代码体现如下

// soft reset [1.0x0]
#define REG_PMAPMD_CONTROL1          0x0000
#define PMA_SOFT_RESET                 BIT(15)
#define PMA_SPEED_MASK                 (BIT(13) | BIT(6))
#define PMA_SPEED_1000                 BIT(6)
#define PMA_SPEED_100                  BIT(13)
#define CFG_FORCE_SPEED_1000           0x1
#define CFG_FORCE_SPEED_100            0x0

6.好了,现在就可以看下link status了

uboot$ mii write 0x03 0x0d 0x0001 //check link status
uboot$ mii write 0x03 0x0e 0x0001
uboot$ mii write 0x03 0x0d 0x4001
uboot$ mii read 0x03 0x0e
0000

注意这里显示失败了,确实显示失败了,为什么?

link状态是低锁存,第一次读把低(0)的状态清除,第二次读到的是正确状态。

所以我们需要再读一次才能看到现在的link状态。

这一种设计并不是景略独有的,各大phy都通过这种精妙的设计来反映 曾经发生过link down,这样才能捕获是否以前快速发生过link down

uboot$ mii write 0x03 0x0d 0x0001 //check link status
uboot$ mii write 0x03 0x0e 0x0001
uboot$ mii write 0x03 0x0d 0x4001
uboot$ mii read 0x03 0x0e
0004

image

景略提供的sample code代码体现如下

// Link Status [1.0x1]
#define REG_PMAPMD_STATUS1           0x0001
#define PMA_LINK_STATUS                BIT(2)

 

7.至此一个完整的通过uboot命令行让phy link up的过程结束。

整个过程截图如下

image

 

http://www.jsqmd.com/news/691748/

相关文章:

  • 为什么叫向量嵌入
  • 武汉做社群团购商城选有赞,性价比高的公司是哪家? - 工业推荐榜
  • WebPlotDigitizer完整指南:3步从任何图表图像中提取精准数据
  • nli-MiniLM2-L6-H768候选重排序教程:提升搜索相关性,替代传统BM25二次精排
  • OnLogic CL260工业级无风扇迷你主机解析与应用
  • 大润发购物卡放着也是闲着,找个靠谱地方换成钱才香 - 团团收购物卡回收
  • 如何为create-react-app实现多语言支持:从零开始的国际化完整指南
  • Godot PCK文件解包终极指南:3种方法高效提取游戏资源
  • 2026想做全渠道私域找有赞服务,武汉靠谱公司Top10 - myqiye
  • Transformer实战(31)——解释Transformer模型决策
  • 华硕笔记本性能优化终极指南:用G-Helper告别卡顿,释放全部潜能![特殊字符]
  • 有哪些支持团购配送的板栗仁品牌,唐山凤凰人家好用吗 - 工业推荐榜
  • 如何高效限制ACE-Guard进程资源占用:sguard_limit完整使用指南
  • SyncTV OAuth2配置详解:集成Google、GitHub等第三方登录
  • 如何使用React Native Maps构建现代化农田管理和作物生长监测系统
  • 微信网页版访问技术范式:wechat-need-web的逆向工程实现机制
  • 向量嵌入(Embedding)概念及原理解析
  • 2026唐山有机板栗仁靠谱品牌推荐,满足你的品质需求 - myqiye
  • 3MF格式转换难题?Blender3mfFormat插件5步解决你的3D打印烦恼
  • 8088汇编测试程序 (MASM/TASM) — 显示 “HELLO 8088!“ + “LCD1602 OK“
  • 明日方舟智能助手MAA:解放双手的全能游戏管家
  • 3个步骤彻底解决Zotero-Style插件标签显示问题:从异常到完美显示
  • ncmdump:解决网易云音乐NCM加密格式播放限制的专业工具
  • 无需代码!7 个实用爬虫软件,三分钟高效搞定数据采集
  • 3分钟搞定输入法词库迁移:深蓝词库转换终极指南
  • 2026年北京老房改造推荐企业排名,多彩宜居装饰实力入围 - 工业品网
  • 魔兽争霸3终极优化方案:5分钟彻底解决游戏卡顿与显示问题
  • 终极指南:如何在3分钟内掌握Zotero插件市场,一键安装所有学术工具
  • intel8088如何实现单步运行控制
  • 解决SystemInformer属性窗口层级显示异常的终极指南