Chinaunix首页 | 论坛 | 博客
  • 博客访问: 582485
  • 博文数量: 353
  • 博客积分: 1104
  • 博客等级: 少尉
  • 技术积分: 1457
  • 用 户 组: 普通用户
  • 注册时间: 2008-12-23 23:02
个人简介

1、刚工作时做Linux 流控;后来做安全操作系统;再后来做操作系统加固;现在做TCP 加速。唉!没离开过类Unix!!!但是水平有限。。

文章存档

2015年(80)

2013年(4)

2012年(90)

2011年(177)

2010年(1)

2009年(1)

分类:

2012-06-09 19:44:45

最近搞bcm5461 PHY寄存器,遇到一个怪问题:
网口明明已经up了,读取phy寄存器居然是link fail,再读一次就变成link up了。

问了问牛人,看了看datasheet,原来是低锁存搞的鬼。

低锁存(Latched low,LL) 当寄存器的相关bit为0后,就会“锁住”不更新此bit,直到连续读两次才更新
高锁存(Latched High,LH) 当寄存器的相关bit为1后,就会“锁住”不更新此bit,直到连续读两次才更新

搞这套坑爹玩意的目的:
    让用户在读取寄存器时,寄存器bit能够保持一个相对稳定的状态,不会实时更新频繁变动
    更重要的是,它也可以用来记录某些“重要的事情”发生过
    在以上例子中,link fail就是比较“重要的事情”,此bit设置低锁存,就要要告诉你:在这次读动作之前,link曾经down过 !!!

读取寄存器的锁存bit,记住操作方法就OK了:
       低锁存(LL)的bit,读到0的话,再读一次才行
       高锁存(LH)的bit,读到1的话,再读一次才行
阅读(1320) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~