免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: yuyinyuyin664
打印 上一主题 下一主题

PCI BAR是怎么确定的呀!? [复制链接]

论坛徽章:
0
11 [报告]
发表于 2008-12-07 21:12 |只看该作者

虽然问题没全解决,但已知道方向了!

开始只看了南桥的datasheet,没想到重要的部分还在北桥!  
等研究完了再分享了哩!!

论坛徽章:
0
12 [报告]
发表于 2008-12-07 21:14 |只看该作者

这分怎么给呢!?

郁闷了!

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
13 [报告]
发表于 2008-12-08 13:03 |只看该作者
原帖由 yuyinyuyin664 于 2008-12-7 21:14 发表
郁闷了!


可以考虑把分给回帖比较详细的或者有助于你解决问题的帖子吧。

论坛徽章:
0
14 [报告]
发表于 2008-12-08 13:31 |只看该作者
原帖由 yuyinyuyin664 于 2008-12-5 20:39 发表
PCI 设备通过BAR +OFFSET 但是这个BAR 怎么得到呢!?
能给个访问这个SATA 设备,比如硬盘寄存器的例子哩,要汇编的! 好懂.. 就是怎么向SATA HDD 硬盘发送命令,并完成一次数据读写. 汇编的更容易理解.
哎没钱了!  ...



host controller是哪个芯片? 还是AHCI依从的? 南桥手册里有没有描述?

正常情况下, ATA controller是一个PCI设备, 因此, 在枚举的时候firmware/OS kernel会为它分配resources (物理地址区间), 此后driver被加载的时候, 在probe函数中进行2步工作:

1) pci_request_region(s)
2) ioremap或者pci_iomap,将BAR区间映射到一个线性地址区间, 得到起始线性地址

此后就可以用普通的方式读写该BAR所指向的区间里的寄存器了(上面步骤2中得到的线性地址,加上offset)。


如果你问的是, Linux kernel怎么为BAR分配物理地址, 这个问题就很麻烦了, 涉及到很多方面的知识。 我没有全部搞懂, 即使懂了也没法说——内容太多了。

论坛徽章:
0
15 [报告]
发表于 2008-12-08 22:53 |只看该作者
原帖由 proware 于 2008-12-8 22:17 发表
可以看一下PCI规范的书,你的第一张图到offset为3dh的地方是标准的PCI配置空间。
访问方式,按照13的网友所说就可以了。
如果如你图所示,你的sata硬盘就是一个PCIE设备了,PCI的配置空间没有那么大 。 ...


仅仅从图片中好象看不出来是PCIE设备,PCI配置空间可达256字节,从0x0到0xff,第一张图没有超过这个范围。

第二张图是某个/某些BAR区间里的寄存器,不是配置空间里的。

论坛徽章:
0
16 [报告]
发表于 2008-12-09 16:11 |只看该作者
原帖由 proware 于 2008-12-8 22:17 发表
可以看一下PCI规范的书,你的第一张图到offset为3dh的地方是标准的PCI配置空间。
访问方式,按照13的网友所说就可以了。
如果如你图所示,你的sata硬盘就是一个PCIE设备了,PCI的配置空间没有那么大 。 ...

我也查到了像你说的那样的方法! 虽然我先查到了,不过你在这里又说了次! 所以分就给你了哈!  有点少,请见谅!
SATA 应该还是个PCI 设备 不是PCI-E的!

论坛徽章:
0
17 [报告]
发表于 2008-12-16 02:25 |只看该作者

linux好像没用BIOS那些信息

linux好像没用BIOS那些信息 不过microsoft到用到不少!

论坛徽章:
0
18 [报告]
发表于 2009-01-18 14:53 |只看该作者
原帖由 proware 于 2008-12-5 20:39 发表
可以看一下PCI规范的书,你的第一张图到offset为3dh的地方是标准的PCI配置空间。
访问方式,按照13的网友所说就可以了。
如果如你图所示,你的sata硬盘就是一个PCIE设备了,PCI的配置空间没有那么大 。 ...


最近我也正在看这方面的东西,一直不知道哪里规定的CF8h和CFCh,昨天才知道原来在PCI规范里。


PCI spec 3.0, section 3.2.2.3.2:

Two DWORD I/O locations are used to generate configuration transactions for PC-AT
compatible systems. The first DWORD location (CF8h) references a read/write register
that is named CONFIG_ADDRESS. The second DWORD address (CFCh) references a
read/write register named CONFIG_DATA...

论坛徽章:
0
19 [报告]
发表于 2009-01-18 15:37 |只看该作者

回复 #18 Solaris12 的帖子

PCI规范是工业界规范, 只是提了一下这两个ports, 毕竟这只是x86的东西。

这两个寄存器在host bridge里实现, 其datasheet有详细讲解。 还有IA32 SDM也有提到。

论坛徽章:
0
20 [报告]
发表于 2009-01-19 11:37 |只看该作者
原帖由 albcamus 于 2009-1-18 15:37 发表
PCI规范是工业界规范, 只是提了一下这两个ports, 毕竟这只是x86的东西。

这两个寄存器在host bridge里实现, 其datasheet有详细讲解。 还有IA32 SDM也有提到。



是啊,所以在代码里看到使用了这两个port的时候,没有觉得PCI规范里会提到。

昨天发现的另外一个必有有意思的地方是, 一个MCFG表里得到的设备的配置空间地址被转换成写入CONFIG_ADDRESS的地址。

因为一个是Memory mapped的地址,令一个是in/out使用的地址所以觉得不可思议。

后来研究了一下 PCI 3.0 spec 的P50页和PCI firmware spec 3.0的第40页才知道地址格式的相同之处。

等你回来,可以聊一下Linux的实现。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP