惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
Visual Studio Blog
Google DeepMind News
Google DeepMind News
V
V2EX
B
Blog RSS Feed
有赞技术团队
有赞技术团队
博客园 - Franky
美团技术团队
月光博客
月光博客
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
腾讯CDC
云风的 BLOG
云风的 BLOG
L
LangChain Blog
GbyAI
GbyAI
The Cloudflare Blog
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
C
Check Point Blog
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Stack Overflow Blog
Stack Overflow Blog
博客园 - 【当耐特】
The Register - Security
The Register - Security
大猫的无限游戏
大猫的无限游戏
D
Docker
Vercel News
Vercel News
Blog — PlanetScale
Blog — PlanetScale
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
雷峰网
雷峰网
阮一峰的网络日志
阮一峰的网络日志
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
博客园_首页
A
About on SuperTechFans
J
Java Code Geeks
量子位
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
MongoDB | Blog
MongoDB | Blog
Recent Announcements
Recent Announcements
G
Google Developers Blog
小众软件
小众软件
博客园 - 叶小钗
WordPress大学
WordPress大学
博客园 - 聂微东
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
Martin Fowler
Martin Fowler
S
SegmentFault 最新的问题
F
Full Disclosure
Jina AI
Jina AI
H
Help Net Security

博客园 - midhillzhou

windows 11关闭防火墙 以使得 外部的开发板可以主动发起ping通电脑 uboot中调试景略以太网phy JL3111A2-NA windows上excel运行macro之后出现错误 在linux上移植sgdisk 在linux上移植phytool + 调试tja1103 以太网phy 使用gdb调试user程序 之 某个线程的调用栈 porting perf性能观测工具 porting 开源memtester uboot 2020版本下gpio命令的使用 + linux下的libgpiod lib库的移植使用 ubi文件系统的 制作 + 挂载 + 若干问题 i2c指令使用 + 仿照开源i2ctransfer实现的自己的i2ctransfer windows下outlook 撤回邮件 安装repo 使用lauterbach debug uboot之重定位 uboot中各种memory读写命令 uboot nand flash dump 环境变量 + 制作环境变量分区 + 代码结构详解 uboot bootm代码详解图 Beyond Compare 进行二进制文档的比对时,怎么去对齐(转载) notepad++分析log小技巧 使用继电器控制开发板上下电 uboot debug小技巧
在uboot中修改tja 1103以太网phy from slave to master
midhillzhou · 2025-12-02 · via 博客园 - midhillzhou

1.首先并不急于修改uboot的代码,而是在uboot命令行中通过mdio协议c22配置tja1103,使其从slave变成master。

1.1 查看phy address,查看电路原理图可知,phyad为0x1a,用这个地址测试下mdio通信是否正常

UBOOT=>mii info 0x1a
PHY 0x1A: OUI = 0x06EC, Model = 0x01, Rev = 0x03,  10baseT, HDX

1.2 查阅下tja1103的datasheet发现,

寄存器BASE_T1_PMA_CONTROL register - BASE-T1 PMA control register (address 834h)的定义如下

image

image

所以我们通过c22协议来访问c45的寄存器

1.3 具体uboot命令行指令如下

# read
mii write 0x1a 0x0d 0x0001    #0x0001:tja1103里面有mmd1,mmd3,mmd30,而PMA是mmd1,所以这里写0x0001
mii write 0x1a 0x0e 0x0834    #0x0834:我们要访问的寄存器是mmd1(PMA)下面的834h寄存器
mii write 0x1a 0x0d 0x4001    #0x4000 means "Next access is data phase". 0x0001 is MMD1 again. So 0x4001 = Data phase for MMD1
mii read  0x1a 0x0e           #this returns 0x8000
# write new value
mii write 0x1a 0x0d 0x0001 
mii write 0x1a 0x0e 0x0834
mii write 0x1a 0x0d 0x4001
mii write 0x1a 0x0e 0xC000   #0xC000 = 0x8000 | bit(14) , set bit14

# read back
mii write 0x1a 0x0d 0x0001
mii write 0x1a 0x0e 0x0834
mii write 0x1a 0x0d 0x4001
mii read  0x1a 0x0e

1.4 将phy外接的t1转tx网络转接盒子设置为slave模式,然后ping外面的网络

此时发现虽然设置成功,但是仍然ping不通。

插拔下t1的线之后,发现可以ping通了,应该是没有对phy进行reset导致配置没有生效。待办项:有时间可以查下reset是对应哪个寄存器。

而插拔t1线会使得phy之间重新link,使配置生效。

2.在命令行成功之后,我们来修改代码,按下图增加两行即可

image

3.验证结果

重新编译uboot烧录进去,到uboot命令行观察结果。

发现,第一次ping仍然不通,第二次ping就可以通了。

原因是uboot在启动过程中并没有加载网络驱动,等到你运行ping的时候才会去加载网络驱动。而此时phy已经根据硬件设定自动link为slave模式。

由于目前硬件上仍然是将phy设置为slave模式,所以运行ping   -》-》-》加载网络驱动,设置mmd1 834h bit14  -》-》-》phy在物理层需要重新link,这个时间会有点长,导致ping失败

而当第二次ping的时候,phy在物理层已经link为master模式,所以可以ping通了。