PCI设备操作

上传人:豆浆 文档编号:11126760 上传时间:2017-09-02 格式:PDF 页数:7 大小:120.15KB
返回 下载 相关 举报
PCI设备操作_第1页
第1页 / 共7页
PCI设备操作_第2页
第2页 / 共7页
PCI设备操作_第3页
第3页 / 共7页
PCI设备操作_第4页
第4页 / 共7页
PCI设备操作_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《PCI设备操作》由会员分享,可在线阅读,更多相关《PCI设备操作(7页珍藏版)》请在金锄头文库上搜索。

1、 34实验五 PCI 设备操作 一、实验目的 1 了解 PCI 设备工作原理 2 了解 PCI 设备自动配置过程 3 掌握 PCI BIOS 的使用方法 二、实验原理 1. PCI 总线基本原理 图 5.1 PCI 管脚定义 PCI 总线是一种时分复用的双向应答总线, 传输发起方称为主设备, 接收方称为从设备。主设备用 FRAME 信号指示,从设备拉低它的 DEVSEL 线来表示响应传输请求。 PCI 总线的数据传输以帧为单位,每次传输由一个地址周期( Address Phase)和多个数据周期( Data Phase)组成。 AD0 AD31 首先给出本次传输的首地址,后面紧跟一个或多个 3

2、2 位( 4 字节)的数据,多个数据的地址自动递增。在地址周期, C/BE0 C/BE3 这四根线的不同组合指示出在 AD0 AD31 上将要进行何种类型的操作, 如 C/BE0 C/BE3=0110 表示存储器读,C/BE0 C/BE3=0011 表示 I/O 写。在数据周期, C/BE0 C/BE3 对应 AD0 AD31 上四个字节的使能。 IRDY 和 TRDY 分别表示主设备准备好和从设备准备好。在传输过程中,只有IRDY 和 TRDY 同时有效,传输才能继续;否则插入等待周期,用于在不同速度的设备之间协调工作。 计算机的接口卡一般会用到 I/O 端口、存储器空间、中断及 DMA 等

3、计算机资源。传统ISA 接口卡通过更改跳线来避免多块卡之间的资源冲突, PCI 接口卡则摒弃了硬件跳线,由软件统筹分配资源,这被称为即插即用。为实现此功能, PCI 协议除了可以对 I/O 空间、存储器空间读写外,还定义了对配置空间的读写( C/BE0 C/BE3=1010、 1011) 。所谓配置空间,是指映射到每块接口卡上的 256 字节的特殊功能寄存器。主板上电后,由 PnP-Bios 读 35取各卡的配置空间,对它们所需的资源进行统筹分配,再将分配结果写回对应的配置空间地址,完成自动配置。 2. PCI 总线配置空间 PCI配置空间是长度为 256 个字节的一段内存空间, 前 64 个

4、字节包含 PCI 接口的关键配置信息: 表 5.1 PCI 设备的配置空间 在这 64 个字节中,第一个 32 位的地址包含了 DeviceID 和 VendorID, VendorID 是一个 16 位的数,它由 PCISIG 分配,代表了制造这个板卡的厂商,如果插槽没有安装板卡,从这个位置读出的值就为 FFFFH。 DeviceID 由厂商自己分配,代表设备的类型。通过这两个值就可以唯一的确定板卡。 Base Address,即基址寄存器,是 32 位寄存器,如果从这个位置读出的值最低位是 1,代表 IO 地址,否则代表内存地址。系统加电后,引导程序通过向基址寄存器写入全 1,并重新读回,

5、如果认为最低位为 0,整个地址可以分成高位的全“1”部分,和低位的全“0”部分。引导程序可以判断出全“0”部分是 PCI 设备自己寻址空间,因而可以确定板卡需要资源的大小,并给它分配一块空闲的 I/O 或内存空间,并把分配地址的首地址写回到基址寄存器。驱动程序可以通过读这个基址寄存器取得基地址,再加上设备的偏移地址就可以访问这个设备的寄存器了。 例 1(PCI 设备资源配置): 以第一个基址寄存器为例,BIOS 对它进行配置的过程如下: 配置空间地址 字节 3 字节 2 字节 1 字节 0 00H 设备 ID, Device ID 供应商 ID, Vendor ID 04H 状态, Statu

6、s 命令, command 08H 类代码 Class Code 版本 ID Revision ID 0CH 自测 首部类型 Header Type 延迟定时器 Latency Timer Cache 行容量 CacheLineSize 10H 基址寄存器 0, Base Address Register 0 14H 基址寄存器 1, Base Address Register 1 18H 基址寄存器 2, Base Address Register 2 1CH 基址寄存器 3, Base Address Register 3 20H 基址寄存器 4, Base Address Registe

7、r 4 24H 基址寄存器 5, Base Address Register 5 28H CardBus 卡信息结构指针, CardBUs CIS Pointer 2cH 子系统 ID Subsystem ID 子系统供应商 ID Subsystem Vendor ID 30H 扩展 ROM 基址, Expansion ROM Base Address 34H 保留, Reserved 功能指针 Capabiltities Pointer 38H 保留, Reserved 3CH 优先级请求 MAX Lat 时间片请求 MIN Gnt 中断引脚 Interrupt pin 中断线 Interr

8、upt Line 36 BIOS 向基址寄存器写入 0FFFFFFFFH 假设重新读这个寄存器获得的结果是 0FFFFFFC1H,二进制表示法中低位有 6 位为0(最低位的 1 也算为 0),表示板卡的寻址空间为 03F,共需要 40H 大小的 IO空间 假设可用的空闲地址为 0E480H,BIOS 把这个值写回到基址寄存器中。 现在从这个地址读出来的值为 0E481H Interrupt Line,中断线寄存器,它是一个 8 位寄存器,用来报告中断的连接情况,它是一个可读写的寄存器,凡是使用中断引脚的设备必须对它进行设置,设备驱动程序和操作系统可以利用这个信息来确定中断向量。该寄存器的值要受

9、系统体系的支配。对于 X86体系结构,该寄存器的值和标准 8259 配置中的 IRQ 编号(015)相对应。255 表示没有连接到任何中断控制器,15255 之间的值为保留。 3. PCI 总线配置空间的访问 如果要访问 PCI 设备的配置空间,就必须知道这个设备在系统中的物理连接情况。描述这个连接情况的数据是“总线号” 、 “设备号”和“功能号” 。一个系统可以有 256 个 PCI总线,每个总线上可以有 32 个设备,每个设备可以具有 8 个功能(每个功能作为一个 PCI设备) 。当这三个数据确定的时候,就可以在系统中唯一确定一个 PCI 设备。 PCI 设备的配置信息可以通过两个 32

10、位 IO 端口访问,这两个端口是: ( 1) 32 位配置地址端口,占用 IO 地址的 0xCF8 ( 2) 32 位配置数据端口,占用 IO 地址的 0xCFC 将 PCI 设备的总线号( 8 位) 、设备号( 5 位) 、功能号( 3 位)和配置空间的偏移地址写入 0xCF8,就可以通过 0xCFC 端口访问相应位置的配置值。 在 DOS 下访问 PCI 设备一般采用 PCI BIOS 服务功能,通过执行 INT 1AH 指令可以调用 PCI BIOS。在这种情况下,调用者必须首先将需要的请求参数装入处理器的寄存器组:在入口 AH 寄存器必须包含 PCI 功能 ID B1H, AL 寄存器

11、必须包含具体的函数编号。 PCI BIOS 系统调用主要有: 函数功能 入口参数 出口参数 备注 PCI 存在否 AH: 0B1H AL: 01H EDX:返回值为“ PCI” AH 存在状态, 00H 为存在 AL:硬件机制 BL:接口版本 CL:系统中最后一个 PCI 局部总线号 CF:状态标志, 1-无 BIOS,0-存在 BIOS 检查 PCI BIOS 是否存在,及版本号 PCI 设备查找 AH:B1h AL:02h CX:DeviceID DX:vendorID SI:索引号 * BH:总线号 0255 BL:高 5 位为设备号,低 3 位为功能号 AH:00-检测成功, 86-未

12、发现, 83,无效 CF:状态标志。 1-错误, 0-成功 查找指定厂商和设备号的 PCI设备 PCI 类码查找 AH:B1h AL:03H ECX:低三个字节为分类代码 SI:索引号 BH:总线号( 0255) BL:高 5 位为设备号,低 3 位为功能号 AH:00成功, 86未发现 CF:1错误, 0成功 查找指定类代码和索引号的PCI 设备 37读配置字节 AH:B1H AL:08H BH:总线号 BL:(73)设备号 (20)功能号 DI:寄存器号 CL:读出的配置字节 AH:返回代码, 00 成功 CF:状态标志 1错误, 0成功 字节读取PCI 设备配置空间 读配置字 AH:B1

13、H AL:09H BH:总线号 BL:(73)设备号 (20)功能号 DI:寄存器号 0、 2、4. CX:读出的配置字节 AH:返回代码, 00 成功 CF:状态标志 1错误, 0成功 字读取 PCI设备配置空间 写配置字节 AH:B1H AL:0BH BH:总线号 BL:(73)设备号 (20)功能号 DI:寄存器号 CL:写入内容 AH:返回代码, 00 成功 CF:状态标志 1错误, 0成功 字节写 PCI设备配置空间 写配置字 AH:B1H AL:0CH BH:总线号 BL:(73)设备号 (20)功能号 DI:寄存器号 0、 2、4 CX:写入内容 AH:返回代码, 00 成功 C

14、F:状态标志 1错误, 0成功 字写 PCI设备配置空间 表 5.2 PCI BIOS 调用 注:当有多个设备采用相同的设备号和厂商号的时候,用从“ 0”开始的索引号来区别。 4. PCI9052 简介 PCI9052 芯片是 PLX 公司出产的一种 PCI 接口芯片,它最大的特点就是具有 ISA 兼容模式,可以把 PCI 总线信号“翻译”成 ISA 信号,关于 PCI9052 芯片的细节这里不详细说明,具体可以查询 PCI9052 的数据手册。实验所用接口卡已经通过板上的 EEPROM 配置为ISA 模式,并把实验所需要的配置空间进行了规划。 PCI9052 芯片的设备 ID 是 9050H

15、,厂商 ID 是 10B5H,下面查看一下 BIOS 为这个板卡所分配的资源。 1. 配置空间 0 这部分被作为内存方式访问 PCI9052 配置寄存器的地址。 2. 配置空间 1 这部分被作为 IO 方式访问 PCI9052 配置寄存器的地址。 3. 配置空间 3 这部分是我们实验中需要使用的 IO 空间 38三、实验内容 1. 在 DOS 下编程得到 PCI9054 的总线号、 设备号和功能号, 并获得其使用资源的信息。重点从配置空间中获得实验板的基地址和 PCI9052 寄存器的基地址。 参考程序如下: STACK SEGMENT PARA STACK DW 128H DUP(0) STACK ENDS DATA SEGMENT NOFOUND DB NOT FOUND!, 0DH, 0AH, $ IO DB 0DH, 0AH, IO ADDRESS IS: $ DATA ENDS CODE SEGMENT ASSUME CS:CODE, SS:STACK, DS:DATA START: MOV AX, DATA MOV DS, AX MOV AH, 0B1H MOV AL, 2 MOV CX, 9050H ; 设备 ID MOV DX, 10B5H ; 厂商 ID MOV SI, 0 ; 索引号为 0 INT 1AH ; 查找设备 CMP AH, 0 JZ GOT

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号