阅读:2477回复:17
base address register 的内容是怎样写进去的
我在softice 使用pci 命令
得到下面信息 在base address register 的内容都是0 请问 这里面得值是在驱动程序加上以后 由windows 分配,在写入这些寄存器里的马 我看到有一些 device base address register 是 有值得 下面是我的pci卡的信息 ########################################## Bus 03 Device 02 Function 00 Vendor: 6809 Device: 8115 Revision: 10 Device class: 04 Multimedia device Device subclass: 00 Video Device sub-subclass: 00 Interrupt line: 00 Interrupt pin: 01 Min_Gnt: 00 MaxLat: 00 Cache line size: 00 Latency timer: 00 Header type: 00 BIST: 00 Command Register: I/O:0 Mem:0 BusMast:0 Special:0 MemInv:0 Parity:0 Wait:0 SERR:0 Back2Back:0 Snoop:0 Status Register: Caps:0 66MHz Cap:0 UDF:0 FB2B Cap:0 DevSel: Medium PERRDet:0 PERRRcvd:0 TASgnld:0 TARcvd:0 MARcvd:0 SERRSgnld:0 00: 81156809 02000000 04000010 00000000 10: 00000000 00000000 00000000 00000000 20: 00000000 00000000 00000000 81156809 30: 00000000 00000000 00000000 00000100 ##################################################### 下面是base address register 是 有值得Bus 03 Device 05 Function 00 Vendor: 1000 LSI Logic Device: 0030 Revision: 07 Device class: 01 Mass storage controller Device subclass: 00 SCSI bus controller Device sub-subclass: 00 Base address 0: 00002000 256 bytes I/O Base address 1: DA120000 128K Memory 64-bit Base address 2: 00000000 16 bytes Memory 32-bit Base address 3: DA100000 128K Memory 64-bit Base address 4: 00000000 16 bytes Memory 32-bit ROM base: 00000000 1MB Disabled Interrupt line: 1A Interrupt pin: 01 Min_Gnt: 11 MaxLat: 12 Cache line size: 08 Latency timer: F8 Header type: 80 BIST: 00 Command Register: I/O:1 Mem:1 BusMast:1 Special:0 MemInv:1 Parity:1 Wait:0 SERR:1 Back2Back:0 Snoop:0 Status Register: Caps:1 66MHz Cap:1 UDF:0 FB2B Cap:0 DevSel: Medium PERRDet:0 PERRRcvd:0 TASgnld:0 TARcvd:0 MARcvd:0 SERRSgnld:0 00: 00301000 02300157 01000007 0080F808 10: 00002001 DA120004 00000000 DA100004 20: 00000000 00000000 00000000 10101000 30: 00000000 00000050 00000000 1211011A |
|
|
沙发#
发布于:2005-02-22 17:02
不是这样的。这些值是芯片里边的默认值或者是上电以后由板卡上的EEPROM里边的内容自动写到芯片里边去的。
|
|
板凳#
发布于:2005-02-22 17:56
不是这样的。这些值是芯片里边的默认值或者是上电以后由板卡上的EEPROM里边的内容自动写到芯片里边去的。 是不是,在驱动程序正确加载以后 base register 的值才能显示正确 在驱动程序的那部分处理这个值 是否要向这个寄存器里写地址 |
|
|
地板#
发布于:2005-02-22 18:06
不是,这个过程在机器启动以后,驱动程序加载之前就完成了。你如果想改变它里边的值,就得改EEPROM 的值,否则它用芯片里边的默认的值
|
|
地下室#
发布于:2005-02-22 18:08
我做的是PCI的板卡,用的是9052芯片,是我上述所说。你的就不是很清楚。你应该查你用的PCI芯片的资料,再定夺
|
|
5楼#
发布于:2005-02-22 18:20
我做的是PCI的板卡,用的是9052芯片,是我上述所说。你的就不是很清楚。你应该查你用的PCI芯片的资料,再定夺 我有的是xilinx 的ip core 在开始,他的地址的值 全是零 我看到其他的pci device 是有值的, 这个值是根据pci 接口后面的memeory 的大小自己设置的吗 |
|
|
6楼#
发布于:2005-02-23 09:41
每种PCI桥芯片都有配置空间,让系统启动时去读它,以便分配资源。应该是那样的。你在网上搜索一下你的芯片,资料肯定不少的。
|
|
7楼#
发布于:2005-02-23 10:43
每种PCI桥芯片都有配置空间,让系统启动时去读它,以便分配资源。应该是那样的。你在网上搜索一下你的芯片,资料肯定不少的。 如果不能在softice 显示base register 的值 是不是说明硬件问题,因为这个ip core 可以自己改 |
|
|
8楼#
发布于:2005-02-23 16:29
你可一用sofice的pci命令来枚举所有的PCI设备。看系统能否识别你的设备
|
|
9楼#
发布于:2005-02-23 17:14
你可一用sofice的pci命令来枚举所有的PCI设备。看系统能否识别你的设备 我在最上*楼主( 显示的信息 就是softice中的pci命令信息 |
|
|
10楼#
发布于:2005-02-24 09:15
那就是你的芯片没有被写入值,查你的芯片资料了吗?一般PDF资料里边都介绍了用什么方法写入
|
|
11楼#
发布于:2005-02-24 15:08
9052的基址寄存器好像不是eeprom可写的巴?
我只是看手册,没具体试过,请大侠指点! |
|
12楼#
发布于:2005-02-24 15:54
不是这样的。这些值是芯片里边的默认值或者是上电以后由板卡上的EEPROM里边的内容自动写到芯片里边去的。 基地址的值应该是芯片映射以后系统分配的吧. |
|
|
13楼#
发布于:2005-02-24 17:25
按手册上说这几个寄存器是pci writable,可以由pci host写入,这是什么意思?
是系统通过pci bus分配,还是用户写入??? |
|
14楼#
发布于:2005-02-24 17:28
系统是不是根据LASXRR寄存器中的值来指定基址寄存器的值?
|
|
15楼#
发布于:2005-02-24 17:43
按手册上说这几个寄存器是pci writable,可以由pci host写入,这是什么意思? 我个人觉得应该是系统分配的,用户自己怎么分配啊? |
|
|
16楼#
发布于:2005-02-25 13:11
是这样的:基址积存器里边有所要申请的空间大小。PCI HOST(即系统)往基址积存器里写入全1,然后回读,根据读回来的值来给它分配基地址。至于基地址积存器里边的值可以自己编程序写入或者用EEPROM。不过你要是为了保证每次上电都保持一样。就必须用EEPROM
|
|
17楼#
发布于:2005-02-25 14:36
是这样的:基址积存器里边有所要申请的空间大小。PCI HOST(即系统)往基址积存器里写入全1,然后回读,根据读回来的值来给它分配基地址。至于基地址积存器里边的值可以自己编程序写入或者用EEPROM。不过你要是为了保证每次上电都保持一样。就必须用EEPROM 这个值是根据pci 接口后面的memeory 的大小自己设置的吗 |
|
|