summaryrefslogtreecommitdiff
path: root/PCI9052/PCI.org
blob: 1f721f803000cdb91a97f31d27e4e042e6f96576 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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 空间