Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1399135
  • 博文数量: 277
  • 博客积分: 2551
  • 博客等级: 少校
  • 技术积分: 3918
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 22:46
文章分类

全部博文(277)

文章存档

2017年(3)

2016年(9)

2015年(65)

2014年(27)

2013年(85)

2012年(61)

2011年(27)

分类: 嵌入式

2014-11-01 12:43:09

      pci的设备标识  域:总线编号:设备编号:功能号
     pci规范中,设备的探测过程已经省去了,交给了bios引导过程中完成识别,也就是说在/sys/bus/pci/devices下的设备硬件信息,所以pci设备驱动开发者不需要去探测设备了,只需要读取这些已经探测完成的信息即可
     pci设备的总线地址就是在/sys/bus/pci/devices/设备标识/device中的值,这个值已经映射到内核的地址空间了
     cpu访问的设备的物理地址,都是设备的寄存器展现给总线的地址,这个地址只是在CPU和北桥芯片之间通信用的,这个地址到了北桥,需要转换为总线:设备号:功能号 给总线来区分pci设备。
      这个地址的识别不仅仅是设备的地址,还包括设备内存,IO端口,这些内核空间的地址,北桥芯片都要负责转换       pci设备的中断线是共享的。
     pci的设备内存映射,pci设备在引导过程中,会将这些信息放在/sys/bus/pci/device/设备标识/resource下,在设备驱动的资源初始化时,会将映射后的结果放在/sys/bus/pci/drivers/设备驱动名/maps下能知道这个映射后的地址
     pci的设备资源包括了bar0~bar5,对应了设备下的resource,pci设备最多可实现6个IO地址区域,这个IO区域一般映射了IO寄存器,在内核中,pci设备的IO区域已经集成到通用资源管理,无需访问配置寄存器来了解设备被映射到内存或者IO空间的何处,只需要调用pci_resource_start这些函数就可以了。
    在linux下,设备就是文件,最后可以通过mmap设备文结合设备的IO地址和内存资源,可以重新映射,达到操作内存就能操作设备的效果
阅读(5166) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~