免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 6010 | 回复: 16
打印 上一主题 下一主题

[硬件及驱动] 如何遍历PCI设备 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2013-04-28 17:12 |只看该作者 |倒序浏览
我想遍历系统上面的PCI设备,用代码怎么实现?

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
2 [报告]
发表于 2013-04-28 17:29 |只看该作者
回复 1# liuaiping0205
看过PCI总线遍历所有PCI设备的原理设计(《存储技术原理分析》),没有具体读过代码。

   

论坛徽章:
0
3 [报告]
发表于 2013-04-28 17:36 |只看该作者
你可以看看pci_scan_root_bus。

论坛徽章:
0
4 [报告]
发表于 2013-04-28 17:45 |只看该作者
回复 3# xs3c
恩,我会去看看,我现在是想用汇编代码实现(因为我现在想添加代码的那个阶段内核的很多PCI接口还不能使用),能不能给个细路啊

   

论坛徽章:
0
5 [报告]
发表于 2013-04-28 17:46 |只看该作者
回复 2# 瀚海书香
恩,我会去看看,我现在是想用汇编代码实现(因为我现在想添加代码的那个阶段内核的很多PCI接口还不能使用),能不能给个细路啊

   

论坛徽章:
0
6 [报告]
发表于 2013-04-28 18:19 |只看该作者
估计比较麻烦吧,之前在应用层做过扫描,直接遍历/sys/bus/pci/devices

论坛徽章:
0
7 [报告]
发表于 2013-04-28 22:28 |只看该作者
回复 4# liuaiping0205
x86的话是通过端口0xCF8和0xCFC访问pci。每个pci总线上应该只能连接有32个设备。循环的去读这些设备,那个得到正确的返回值。就说明有这个设备。具体的你参照下linux的代码。ppc类似。也有两个地址。具体值看板子手册。汇编些应该也好弄。


   

论坛徽章:
0
8 [报告]
发表于 2013-04-28 23:36 |只看该作者
只所以说没那么简单是因为现在的计算机外设管理不再像以前的ISA,PCI那么简单单一,MPS功能也逐渐被ACPI替代,反正挺麻烦的,之前看过一段时间的intel MPS ACPI APIC等相关手册.

或LZ用的是简单嵌入式板子?

论坛徽章:
0
9 [报告]
发表于 2013-04-30 16:05 |只看该作者
回复 8# lenky0401
不是,就是现在有一台机器,有块特别的芯片,我需要在linux系统加载内核之前对它进行访问控制,读写一些信息,所以我得首先在PCI总线上找到这个设备。

   

论坛徽章:
7
丑牛
日期:2013-10-18 14:43:21技术图书徽章
日期:2013-11-03 09:58:03辰龙
日期:2014-01-15 22:57:50午马
日期:2014-09-15 07:04:39丑牛
日期:2014-10-16 14:25:222015年亚洲杯之伊朗
日期:2015-03-16 10:24:352015亚冠之城南
日期:2015-05-31 09:52:32
10 [报告]
发表于 2013-04-30 21:14 |只看该作者
回复 8# lenky0401


    acpi 和PCI查询没有直接关系,只是说设备可设计成支持ACPI。这主要是设备自身硬件和driver设计成支持信息保存或关断功能。然后ACPI来统一管理硬件供电。
即使IA的BIOS中提供E820查询设备的地址mapping功能也是事先分配的形式。
即便已经被BIOS分配好地址的PCI设备,还是可以通过自己查0xcf8/0xcfc获得信息。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP