summaryrefslogtreecommitdiff
path: root/PCI9052/PCI.org
diff options
context:
space:
mode:
Diffstat (limited to 'PCI9052/PCI.org')
-rw-r--r--PCI9052/PCI.org47
1 files changed, 47 insertions, 0 deletions
diff --git a/PCI9052/PCI.org b/PCI9052/PCI.org
new file mode 100644
index 0000000..1f721f8
--- /dev/null
+++ b/PCI9052/PCI.org
@@ -0,0 +1,47 @@
+* PCI
+ - 配置空间: 映射到接口卡上256字节的特殊功能寄存器
+ - 访问: 物理连接情况
+ - 总线号: 0-255(8bit)
+ - 设备号: 0-31(5bit)
+ - 功能号: 0-8(3bit)
+ - 通过端口访问:
+ - 地址端口: 0xCF8, 把总线号,设备号,功能号,偏移写入该端口
+ - 数据端口: 0xCFC
+* PCI BIOS 系统调用
+ AH=B1H
+ INT 1AH (BIOS中断)
+ - AL=01H
+ - 检查PCI是否存在
+ - AH=00 存在
+ BL: 接口版本
+ CL: 最后一个局部总线号
+ CF=0 存在BIOS
+ - AL=02H CX=DevID DX=VenderID SI:索引号(区别设备号和厂商号相同的设备)
+ - PCI设备查找
+ - BH=总线号
+ BL:高5位设备号,低3位功能号
+ AH=00 检测成功 86 未发现
+ CF=0 成功
+ - AL=03H ECX低3字节为分类代码 SI:索引号
+ - PCI类码查找
+ - 返回值同AL=02H
+ - AL=08H BH=总线号 BL=设备号:功能号 DI=寄存器号(配置空间地址)
+ - 读配置字节
+ - CL=读出的配置字节
+ - AH=00 成功
+ CF=0 成功
+ - AL=09H BH,BL,DI(0,2,4)意义同上
+ - 读配置字
+ - CX=读出的配置字,其余同上
+ - AL=0BH,0CH BH,BL,DI意义同上,CL/CX=写入内容
+ - 写配置字节/字
+ - AH=00,CF=0 表示成功
+* PCI 9052
+ 设备ID: 9050H 厂商ID: 10B5H
+ 1. 基址寄存器 0
+ 这部分被作为内存方式访问 PCI9052 配置寄存器的地址。
+ 2. 基址寄存器 1
+ 这部分被作为 IO 方式访问 PCI9052 配置寄存器的地址。
+ 3. 基址寄存器 3
+ 这部分是我们实验中需要使用的 IO 空间
+