Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1240906
  • 博文数量: 122
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 4004
  • 用 户 组: 普通用户
  • 注册时间: 2014-02-20 08:27
文章分类
文章存档

2016年(1)

2015年(21)

2014年(100)

分类: LINUX

2014-07-09 17:14:57

pci配置空间中有6个bar,表示mmio或端口在CPU域物理地址空间的分布情况。
在写驱动时,通常需要从配置空间中读取相关bar信息,然后使用request_mem_region之类的接口,申请资源,然后使用ioremap将相关的区域映射到内核地址空间中,然后即可使用。
问题是:pci配置空间中的bar信息,即mmio或io端口的分布,到底是谁决定、谁填写的呢?是硬件自己 or BIOS or OS kernel
答案:对于x86环境来说(其它硬件环境不确认),pci配置空间中的bar信息最初是由BIOS根据当前环境中的硬件分布信息,进行分配后填入的,32位环境,PCI设备的mmio基本分布于3.5G-4G范围中,基本能保证各设备分配的空间不冲突。在OS kernel启动硬件扫描和初始化时,会读取相应内容,如果有需要,会根据需要进行调整(通常不会)。
阅读(4614) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~