Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1597143
  • 博文数量: 92
  • 博客积分: 2002
  • 博客等级: 大尉
  • 技术积分: 4717
  • 用 户 组: 普通用户
  • 注册时间: 2010-09-01 17:09
文章分类

全部博文(92)

文章存档

2013年(1)

2012年(6)

2011年(85)

分类: LINUX

2011-02-16 23:32:02

困扰了N天的PCI网卡问题,无意间找到了方向

现象: linux启动PCI枚举时,初次读PCI网卡82546的寄存器空间,有一定概率会卡死,内核无法执行下去
       出问题时,测量PCI总线上的各个管脚,发现 FRAME# IDSEL# DEVSEL# 居然都有周期性的波形!
       由此可以推断,此时CPU和PCI网卡间正不断进行着PCI硬件时序。
       但测量发现FRAME#的有效时间只保持两个CLK,太短了(导致进入PCI硬件时序死循环?)

解决: 出问题时用探针接触PCI网卡的LAN_PWR_GOOD管脚,PCI硬件时序马上恢复正常,内核正常跑下去了
       最终解决方法是,每次上电时,CPLD先拉低再拉高82546GB的LAN_PWR_GOOD管脚
      
原因:读82546GB的datasheet,拉高LAN_PWR_GOOD管脚,会导致N多resettable寄存器重置。
      那为什么有时候启动,有时候启动不了呢?
      PCB布线的问题?
      TODO....

阅读(2913) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~