阅读:2035回复:6
关于PCI设备地址映射的几个问题。
我在用9054开发PCI板卡,有几个比较困惑的问题:
1)9054local总线上的资源地址(不管他是memory还是其他I/O设备)是通过什么方式映射到系统的内存地址空间和I/O地址空间上去的。 我的理解是这样的:PCI的config register里面提供了base memory address,local bus上的地址都是在base memory address的基础上的偏移量。 2)PCI local bus上的地址到底是根据什么来决定是映射到I/O地址空间还是内存地址空间 我的理解是这样的:到底是映射到I/O地址空间还是内存地址空间是没有硬性规定的。完全可以将一段地址同时映射成I/O地址和内存地址。只是I/O地址是相当有限的。而映射到内存地址空间的设备也未必就是local bus上的ram,只是在软件上完全可以将其当成是内存来访问而已。 3)地址映射到底是由PCI总线控制器决定的还是由每个PCI设备自己决定的 我的理解是这样的:每个PCI设备自己决定的是需要映射的地址的宽度,比如需要0x10000长度的地址范围。而基地址是又系统根据所有需要分配地址空间的设备(包括内存,PCI设备等)然后分配基地址。 以上的理解肯定是有很多荒谬的地方,希望大家能够将自己的理解和我分享,谢谢。希望大家能够和我交流。 |
|
最新喜欢:jmzz00...
|
沙发#
发布于:2001-12-12 16:44
看来是没有人来看了。Wuwuwu.......好凄惨啊。 :(
|
|
|
板凳#
发布于:2001-12-12 22:43
1) 你的理解是错误的,映射是通过Remap寄存器完成的。你再好好看看DS。
|
|
地板#
发布于:2001-12-12 22:45
2) Local 不分I/O或MEM,只是PCI总线区分它们,通过Remap,他们都在Local中占据一段地址。
|
|
地下室#
发布于:2001-12-12 22:45
3) 地址映射是通过对控制器编程实现的。PCI占用的系统地址是由系统分配的。而本地地址在设计完成后就是固定的。
你在概念上好像有些模糊。 |
|
5楼#
发布于:2001-12-12 22:52
谢谢。我真的希望多些像您一样的人能给我批评和指正。
|
|
|
6楼#
发布于:2008-08-03 16:03
掺和一下,受益了
|
|
|