为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

PCI_配置空间(中文)

2012-01-08 31页 doc 1MB 88阅读

用户头像

is_221545

暂无简介

举报
PCI_配置空间(中文)PCI Configuration 名词说明: PCI为Peripheral Component Interconnect 的缩写,它是由 Intel 所发表的另一种局部总线 (另一种为 VESA Local Bus),以配合 Pentium 系列的微处理机为主,PCI 的最大特点在于它是和主机板不相关的接口,而且一台主机最多支持 16 台使用 PCI 接口的外围设备,这种总线架构还支持 PowerPC 等机种,因此 PCI 适配卡将可在不同工作平台上使用。 PCI 的数据总线 (data bus) 是 32 位或是 64...
PCI_配置空间(中文)
PCI Configuration 名词说明: PCI为Peripheral Component Interconnect 的缩写,它是由 Intel 所发的另一种局部总线 (另一种为 VESA Local Bus),以配合 Pentium 系列的微处理机为主,PCI 的最大特点在于它是和主机板不相关的接口,而且一台主机最多支持 16 台使用 PCI 接口的外围设备,这种总线架构还支持 PowerPC 等机种,因此 PCI 适配卡将可在不同工作平台上使用。 PCI 的数据总线 (data bus) 是 32 位或是 64 位宽,工作频率为33 MHz,在 64 位宽的总线之下,每个 clock 可传送 8 个字节,因此最高的数据传输速率为每秒 33×8=264 MB。 而PCI的改良版称为PCI-X,采用六十四位的总线宽度与133MHz的传输速率,可以使得数据传输量为1.064GBps,而且可以使用于现有的PCI界面卡,PCI-X初期以工作站或是服务器为主。 架构说明: System(系统讯号): CLK: CLK讯号为一个输入讯号,其提供所有交易,包括总线仲裁等的时序,PCI装置的所有输入都是在CLK讯号的上升边缘被取样的.PCI总线上的所有动作都与PCI CLK讯号同步,其讯号频率的范围在0Mhz~33Mhz. RST(Reset Signal) 当重置讯号被驱动成低态时,它会强迫所有PCI组态缓存器,master及target状态机器与输出驱动器回到初始化状态. Device Identification Vendor ID(Offset 00h~01h) PCI厂商识别码,如Intel ID是 8086, VIA ID是 1106,Ali ID是 10B8. Device ID(Offset 02h~03h) 记录PCI装置识别码. 以BIOS观点来看,通常为了避掉某些装置与系统的兼容性常藉由判断Vendor ID与Device ID 做不同的处理. Device Control Command Register(Offset 04h~05h) 指令缓存器 它是一个16位缓存器,提供基本装置响应或进行PCI存取能力的控制. 位 功能 0 IO空间(IO Space).当此位被设定为1时,显示该装置需求IO地址. 1 内存空间(Memory Space).当此位被设定为1时,显示该装置需求内存地址. 2 Bus Master.当被设定为1时,此装置能当作bus master来用,组态软件用此位来决定装置是否具有bus master能力. 3 特殊周期(Special Cycle). 当被设定为1时,装置可以监视PCI特殊周期. 4 Memory Write and Invalidate Enable. 当被设定为1时,装置可以产生Memory Write-and-Invalidate指令, 当设定为0时,装置使用Memory Write指令来取代,软件不应该致能此位,直到装置的快取线大小组态缓存器以系统快取线大小来初始化,组态软件可以用它及位2,Bus Master一起来侦测master是否能够使用Memory Write-and-Invalidate指令,假设它可以的话,则快取线大小将会被写入到master的快取线大小组态缓存器. 5 VGA调色盘监管(VGA Pallete Snoop). 当此位被设定为1时,此位指示其与VGA兼容的装置去监管对VGA Color Pallete(调色盘)缓存器的IO写入,在非VGA图形装置,重置会将此位设定为1,开启调色盘监管功能. 6 同位错误响应(Parity Error Response). 当此位被设定为1时,装置可以报告同位错误(以驱动PERR#到低组态的方式),当清除为0时,装置不会在发生同位错误事件时,驱动PERR#到低组态,不过,它仍必须设定在其状态缓存器里的侦测到同位错误状态位. 7 逐步驱动控制(Stepping Control).控制装置是否可以进行地址/数据逐步驱动,从不使用逐步驱动的装置必须将此位以硬件接线设定为0,一定要使用逐步驱动的装置必须将此位以硬件接线设定为1,能够使用这两种方式的装置必须将此位实做成一个可读/可写的位,并且在重置后初始化为1. 8 SERR# Enable.当设定为1时,装置可以驱动SERR#线,设定为0会关闭装置的SERR#输出驱动器,此位与位6(同位错误报告)必须被设定,以便报告地址同位错误 9 Fast Back-to-Back Enable.假如Bus Master可以在第一次和第二次交易中,与不同的Target进行Fast Back-to-Back交易的话,此位可用来启动或关闭这功能,假如所有在Bus Master所在之PCI总线上的Target是可以进行Fast Back-to-Back交易的话,组态软件可以设定此位来致能此Master进行Fast Back-to-Back交易的能力,无需担心在第一次和第二次交易里是否寻址相同的Target.. 15:10 保留 Status Register 状态缓存器(Offset 06h~07h) 位 R/W 功能 3:0 R 保留 4 R 能力串行(Capabilities List).它是一个硬件接线,只读位,假如 设定为1的话,则表示新能力串行指针缓存器必须在装置组态空间的Offset 34h里实作,在这种情况,组态程序执行装置应该去读取指针缓存器,以决定装置是否支持额外的能力(AGP,VPD等等),并且使用它们各自的组态缓存器,去组态它们. 5 R 66Mhz能力(66Mhz Capable). 1=装置能够在66Mhz速度下执行. 0=只能在33Mhz速度下执行. 6 R 保留 7 R Fast Back-to-Back能力(Fast Back-to-Back Capable).此只读位 元表示Target装置是否支持不同Target的Fast Back-to-Back交易,1=装置支持 0=装置不支持. 8 R/W Master数据同位错误(Master Data Parity Error).此位只在 Bus Master里实作,并且只有在下列条件时才会被设定: · 报告的Bus Master是交易的initiator. · (在读取过程中)它自己设定PERR#,或(在写入过程中)侦测到它被Target驱动到低态. · 在Master的指令缓存器里的同位错误响应位被设定为1. 10:9 R 装置选择时序(Device Select (DEVSEL#)Timing). 它定义了Target装置最慢的DEVSEL#时序. 00b=Fast(快速的) 01b=Medium(中速的) 10b=Slow(慢速的) 11b=Reserved(保留) 11 R/W 发出Target Abort讯号(Signaled Target Abort).每当Target装 置以Target Abort终止交易时,Target就会设定此位,不能发出 Target Abort讯号的装置不需要实作此位. 12 R/W 接收到Target Abort讯号(Received Target Abort).每当Bus Master的交易是以目前寻址的Target发出的Target Abort终止 的时候,它就会设定此位. 13 R/W 接收到Master Abort讯号(Received Target Abort).每当Bus Master的交易是因Master Abort而终止(特殊周期除外)的时候, 它就会设定此位. 14 R/W 发出系统错误讯号(Signaled System Error).每当装置在SERR# 在线产生一个错误讯息(System Error)时,它应该设定此位. 15 R/W 侦测到同位错误(Detected Parity Error).每当装置侦测到一 个同位错误时, 它应该设定此位(实时同位错误报告功能指 令缓存器里的同位错误响应位关闭). Revision ID(Offset 08h) 版本识别码缓存器 记录PCI装置版本序号,由装置制造商指派,假如制造商提供版本特定的驱动程序,这可确保OS加载正确的驱动程序. Class Code 类别码(Offset 09h~0Bh) 它是一个24位只读的缓存器,它被分成三个字段:基本类别(Base Class)子类别(Sub Class)及程序界面(Programming Interface), · 较高的字节定义功能的基本类别. · 中间的字节定义在基本类别里的子类别. · 较低的字节定义程序界面. 当OS尝试找出一个可以配合类别驱动程序(Class Driver)一起工作的装置时,此暂 存器是很有用的,如OS找到一个具有类别码03h,以及子类别码为01h的装置(XGA),则它必须提供与其兼容的显示配接卡驱动程序和该装置一起工作. Base Class 00h 在类别码定义之前建立的装置. 00h 00h 所有非VGA装置. 00h 01h 与VGA兼容的装置. Base Class 01h 大量储存媒体控制器. 子类别 程序界面 描述 00h 00h SCSI控制器  01h xxh IDE控制器 02h 00h 软式磁盘驱动器控制器  03h 00h IPI 控制器 04h 00h RAID 控制器 05h 00h 其它大量储存媒体控制器 Base Class 02h 网络控制器. 子类别 程序界面 描述 00h 00h Ethernet 控制器 01h 00h Token Ring 控制器 02h 00h FDDI 控制器 03h 00h ATM 控制器 04h 00h ISDN 控制器 80h 00h 其它网络控制器 Base Class 03h 显示控制器. 子类别 程序界面 描述 00h 00h 与VGA兼容的控制器,响应内存地址 000A0000h到 000BFFFh(Video Frame Buffer, 视讯画面缓冲区),以及IO地址03B0h到03BBh, 及03C0h到03DFh,还有这些地址的所有别名 (alias). 01h 与8514兼容的控制器,响应IO地址02E8h以及它 的别名,02EAh和02EFH. 01h 00h XGA控制器. 02h 00h 3D控制器.  80h 00h 其它显示控制器. Base Class 04h 多媒体控制器. 子类别 程序界面 描述 00h 00h 视讯装置. 01h 00h 音效装置. 02h 00h 计算机电话装置. 80h 00h 其它多媒体装置. Base Class 05h 内存控制器. 子类别 程序界面 描述 00h 00h RAM内存控制器. 01h 00h Flash(快闪)内存控制器. 80h 00h 其它内存控制器. Base Class 06h 桥接器装置 子类别 程序界面 描述 00h 00h Host / PCI 桥接器 01h 00h PCI / ISA 桥接器 02h 00h PCI / EISA 桥接器 03h 00h PCI / Micro Channel 桥接器 04h 00h PCI / PCI 桥接器 01h 相减解碼PCI-to-PCI 桥接器,支持除正常PCI-to- PCI功能之外的相减译码. 05h 00h PCI / PCMCIA 桥接器 06h 00h PCI / NuBus 桥接器 07h 00h PCI / CardBus 桥接器 08h xxh RACEway 桥接器,RACEway是一个ANSI标准( ANSI / VITA 5-1994)的交换架构(Switching Fabric) 界面位7:1是保留,位0值为0表示桥接器是 在通透模式(Transparent Mode),值为1表示它是再 端点模式(End-Point Mode). 80h 00h 其它桥接器型态. Base Class 07h 简单的通讯控制器 子类别 程序界面 描述 00h 00h 通用的XT兼容序列控制器. 01h 与16450兼容的序列控制器. 02h 与16550兼容的序列控制器. 03h 与16650兼容的序列控制器. 04h 与16750兼容的序列控制器. 05h 与16850兼容的序列控制器. 06h 与16950兼容的序列控制器. 01h 00h 平行阜. 01h 双向平行阜.  02h 遵循ECP 1.X规格的平行阜.  03h IEEE 1284控制器. Feh IEEE 1284 Target装置(非控制器). 02h 00h 多阜序列控制器. 03h 00h 通用调制解调器. 01h 与Hayes兼容的调制解调器,与16450兼容的界面,BAR 0映像或IO映像(如BAR型态所指示). 02h 与Hayes兼容的调制解调器,与16550兼容的界面,BAR 0映像或IO映像(如BAR型态所指示). 03h 与Hayes兼容的调制解调器,与16650兼容的界面,BAR 0映像或IO映像(如BAR型态所指示). 04h 与Hayes兼容的调制解调器,与16750兼容的界面,BAR 0映像或IO映像(如BAR型态所指示). 80h 00h 其它通讯装置. Base Class 08h 基本的系统周边装置. 子类别 程序界面 描述 00h 00h 通用8259可程序中断控制器(Programmable Interrupt Controller, PIC). 01h ISA PIC. 02h EISA PIC. 10h IO PIC. 20h IO(x)APIC中断控制器. 01h 00h 通用8237DMA控制器. 01h ISA DMA控制器. 02h EISA DMA控制器. 02h 00h 通用8254定时器. 01h ISA系统定时器. 02h EISA系统定时器. 03h 00h 通用RTC控制器. 01h ISA RTC控制器. 04h 00h 通用热插拔(PCI Hot-Plug). 80h ooh 其它系统外围装置. Base Class 09h 输入装置. 子类别 程序界面 描述 00h 00h 键盘控制器. 01h 00h Diditizer(pen). 02h 00h 鼠标控制器.  03h 00h 扫瞄器控制器.  04h 00h 通用游戏连接阜控制器.  10h 游戏连接阜控制器.具有程序界面=10h的游戏连 接阜控制器表示任何在这请求/指定IO地址空间 之功能里的基地址缓存器,在该IO空间的缓存器符合标准的”传统” 游戏连接阜,在IO区域里位移为00h的字节其行为与传统游戏连接阜界面 相同,当读取此字节时,会传回游戏杆/手把(Joystick/Gamepad)的信息,在写入此字节时会启动RC定时器,位移为01h的字节是位移为00h 字节的别名,所有在IO区域里的其它字节是未指定的,且可以给制造商以自己特有的方式来使用. 80h 00h 其它输入控制器. Base Class 0Ah 船屋系统. 子类别 程序界面 描述 00h 00h 通用的船乌系统. 80h 00h 其它型态的船乌系统. Base Class 0Bh 处理器 Base Class 0Ch 序列总线控制器. 子类别 程序界面 描述  00h 00h Firewire(IEEE 1394). 10h 使用1394 OpenHCI规格的IEEE 1394. 01h 00h ACCESS.bus 02h 00h SSA(Serial Storage Architecture,序列储存架 构). 03h 00h 使用Universal Host Controller规格的USB (Universal Serial Bus,通用序列阜)控制器. 10h 使用Open Host Controller规格的USB (Universal Serial Bus,通用序列阜)控制器. 80h 无特定程序界面的USB控制器. FEh USB装置(非主控器(Host Controller)) 04h 00h Fiber(光纤)Channel. 05h 00h SMBus(System Management bus,系统管理汇流 排). Base Class 0Dh 无线控制器 子类别 程序界面 描述 00h 00h 与iRDA兼容的控制器. 01h 00h 消费型IR控制器. 02h 00h RF控制器. 80h 00h 其它型态无线控制器. Base Class 0Eh 智能型IO控制器 子类别 程序界面 描述  00h xxh 遵循I20架构规格的智能型IO控制器. 00h 在相对地址(Offsset)40h的讯息FIFO. Base Class 0Fh 卫星通讯控制器 子类别 程序界面 描述 01h 00h TV(电视). 02h 00h Audio(音效). 03h 00h Voice(语音). 04h 00h Data(资料). Base Class 10h 加密/解密(Encryption/Decryption) 子类别 程序界面 描述 00h 00h 网络与运算加密/解密. 10h 00h 娱乐加密/解密.  80h 00h 其它加密/解密. Base Class 11h 数据撷取与讯号处理控制器 子类别 程序界面 描述  00h 00h DPIO模块  80h 00h 其它数据撷取与讯号处理控制器. Cache Line Size Register 快取线大小缓存器(Offset 0Ch) 此读/写组态缓存器指定了以dword为单位的系统快取线大小(例如:在P6的系统 里此缓存器的值为08h,表示其快取线大小为8个dword,或32个字节),实作了 Memory Write-and-Invalidate指令的Bus Master必须实作此缓存器,因为它必须 知道快取线大小,以便确保它从快取线边界起始交易,并遵守它将整条线写入内存的约定,所以当这缓存器被设定为0(表示组态软件尚未把快取线大小告诉它)时, Bus Master不可以使用Memory Write-and-Invalidate指令,在这种情况,Master 只能够使用Memory Write(内存写入)指令来更新内存. 装置可以限制它所支持的快取线大小数目,假如组态软件写入一个未支持的数值, 则装置会将此数值当作0来动作. Latency Timer 等待时间(Offset 0Dh) 等待时间以PCI频率周期为单位,定义了在bus master起始新交易时,它可保留总线有权的最小时间量,最理想的是,每一个bus master都应该将此缓存器实作为可读/写的缓存器,藉此给予组态软件在bus master群组间分配可用的总线时间上有最大的弹性,组态软件以读取功能的Min_Gnt(Minimum Grant最小授权)缓存器,决定bus master想要的时间片段. Header Type 表头型态缓存器(Offset 0Eh) 每一个PCI功能拥有保留给实作其组态缓存器用的64个组态dword区块,前16个dword的格式(Offset 00h~3Fh)与使用是由PCI规格预先定义的,这区域被称为装置的组态表头区域(或表头空间(Header Space)),规格目前定义了三种表头格式,称为Header Type Zero,One与Two: · Header Type One是为PCI-to-PCI桥接器定义的(01h). · Header Type Two是为PCI-to-CardBus桥接器定义的(02h). · Header Type Zero是给所有除了PCI-to-PCI与CardBus桥接器以外的装置使用的(00h). Header Type位7是用来表示此装置含有除了桥接器功能以外的其它功能, 固位7=1表示为多功能,0=表示为单功能. Built-in Self Test BIST内建自我测试(Offset 0Fh) 非必要的,假如装置不支持BIST的话,在读取此缓存器时,它必须要传回为0,装置的BIST是以设定位6为1的方式来请求,在完成BIST后,装置会将位6重置,但必须在二秒钟内完成重置,位0~3为0则表示成功,非零值代表装置特定的错误码. Bass Address 基地址缓存器(Offset 10h~27h) 在开机时,系统必须自动地组态,以便让所有IO与内存能占用户不相干的地址范围, 为了达到此目标,系统必须有能力侦测到装置需要多少个内存与IO地址范围,以及每一个大小.当位0传回1则表示这是一个IO译码器,不是内存译码器,位[31:2]是基地址字段,并且用来IO区块所需的大小以及设定它的起始地址. 区块大小的决定与地址范围的指定: · 是否实作基地址缓存器? · 它是一个内存,还是IO地址译码器? · 假如它是内存译码器,它是一个32位还是64位的基地址缓存器? · 假如它是内存译码器,与此缓存器相关的内存是可预读的还是不可预读的? · 它需要多少内存或地址空间,并且是以什么单位来排列? 这所有信息可以很简单的用写入一个全部为1的值到基地址缓存器里,然后读取它来确认,传回值为0表是没有实作基地址缓存器,假设所读取的值不为0,程序执行装置可从基地址栏的最低有效位向上扫瞄传回值,以找出第一个被设定为1的位来决定所需的内存或IO空间的大小. 内存范例: 假设FFFFFFFFh被写入在组态13h~10h的基地址缓存器里,然后再读取时,所得的值为FFF00000h,由此可知有任何位可以被更改成1表示实作了基地址缓存器, · 位 0 = 0 表示这是一个内存地址译码器. · 位 [2:1] = 00b表示它是一个32位内存地址译码器. · 位 3 = 0 表示它不是可预读的内存. · 位20是在基地址字段里所找到的第一个1,此位的二进制权值为1,048,576,表示这是一个1MB大小的内存地址译码器. 接下来,程序执行装置写入32位基地址到缓存器里,不过只有位[31:20]是可写入的,译码器接荍位[31:20]并假设所指定的基地址的位[19:0]为0,这表示基地址可以被1MB,既所请求的内存范围大小整除,所指定的起始地址一定会被所请求的内存范围大小整除是PCI译码器的特性. IO范例: 假设FFFFFFFFh被写入在组态17h~14h的基地址缓存器里,然后再读取时,所得的值为FFFFFF01h,位0为1,表示这是一个IO地址译码器,从位2(基地址栏的最低有效位向上扫瞄)开始向上扫瞄,找到位8是第一个被成功地改成1的位,此二进权值为256,表示此IO地址译码器大小为256B,或将所得的值作一补码运算后再加1,易可得相同的值. CardBus CIS Pointer CardBus与PCI共享的装置实作此非必要的缓存器,此字段指向CardBus卡的借面 卡信息结构(CardBus Information Structure,CIS),此缓存器是只读的,并且包含在下列 其中一个地方的CIS相对地址(offset): · 在功能的装置特定组态空间里(在功能的组态空间的Offset 40h之后)的相对地址(Offset). · 与其中一个装置内存基地址缓存器所指示的起始地址间之相对地址(offset). · 在装置扩充ROM程序代码影像(Code Image)里的相对地址(offset). CIS的详细说明请参考”CardBus System Architecture”. Subsystem Vendor ID and Subsystem ID Subsystem Vendor ID 子系统制造商识别码(Offset 2Ch~2Dh) Subsystem ID 子系统识别码(Offset 2Eh~2Fh) PCI功能可以位于界面卡上或内建装置里,使用相同PCI核心逻辑(由third-party(其它厂商)生厂)的两个界面卡或子系统可能会有相同制造商识别码与装置识别码(假如核心逻辑制造商以硬件接线将它们自己的识别码设定在这些缓存器里),假如在这种情况下,在OS辨识要加载到内存的真正装置驱动程序上,可能会有问题. 这两个强制性的缓存器被用来确认装置所在的附加卡或子系统,使用这两个缓存器,OS可以分辨在由不同制造商制造,但使用相同third-party核心逻辑的界面卡或子系统之间的差异,这使得随插即用(Plug-and-Play)OS有能力去寻找要加载到内存的正确驱动程序. Expansion ROM Base Address 扩充ROM基地址缓存器(Offset 30h~33h) 对于含有装置ROM的装置来说是必要的,许多PCI装置都含有一个内含装置的装置驱动程序之装置ROM, 在开机时,系统必须自动地组态,以便让所有IO与内存能占用户不相干的地址范围,为了达到此目标,系统必须有能力侦测到ROM需要多少个内存空间,可以很简单的用写入一个全部为1的值到基地址缓存器里,然后读取它来确认,它必须检查在ROM里的前两个位置是否有扩充ROM的签名,以决定ROM是否真的被安装,假如有安装的话,组态程序必须SHADOW此ROM,并且执行其初始化程序代码. · 位0 = 1 致能装置的ROM地址译码器. · 位[10:1]保留. · 位[31:11]用来指定ROM的起始地址. 假设FFFFFFFFh被写入到ROM的基地址缓存器里(位0,既扩充ROM致能位被清除,所以ROM地址译码器不会被致能,直到指定起始内存地址之后),随后再读取此缓存器,所得的值为FFFE0000h,这表示: · 位0 = 0 ,表示ROM地址译码器目前被关闭. · 位[10:1]保留. · 在基地址字段(位[31:11])里,位17为程序执行装置可以设定为1的最低有效位,其二进制权值为128K,表示ROM译码器需要128K的内存地址,然后,程序执行装置写入一个32位的起始地址到此缓存器中,指定128KB的地址边界当作ROM的起始地址. PCI Expansion ROM Header Format PCI Data Structure Format ROM Header Extensions Interrupt Line 中断讯号线(Offset 3Ch) PCI装置的中断号码配置与绕线设定处理和此字段密不可分. PCI装置对于中断讯号的定义中,设计了以下四组中断讯号线. INT A# , INT B#, INT C#, INT D# 在今的许多PC系统里,内崁在PCI/ISA桥接器内的可程序化路由器都具有四个输入端,用来连接PCI中断线路,目前大多数的PCI装置是单功能装置, 单功能PCI装置只能用INT A#(不得使用INT B#,INT C#,INT D#)来产生中断请求,在多功能PCI装置上,装置设计者可以实作最多四支中断接脚,INT A#,INT B#,INT C#,INT D#,因其是内含二到八个功能的实体套件,ISA中断请求线是正缘触发(Positive edge-triggered),且不可共享,但PCI中断请求线是低态动作的(Active low),准位触发的(Level-sensitive),可共享的(Shareable)请求线,PCI中断只能连接到未被ISA装置占用的ISA中断请求在线. 在系统内存F0000到FFFFF搜寻的签名(Signature)($PIR),便可侦测到PCI中断路由表格.格式如下: 从表格起点算起的相对字节 大小 说明 0 4 Signature 4 2 Version 6 2 Table Size 8 1 PCI Interrupt Router’s Bus 9 1 PCI Interrupt Router’s DevFunc 10 2 PCI Exclusive IRQs 12 4 Compatible PCI Interrupt Router 16 4 Miniport Data 20 11 Reserved 31 1 Checksum 32 16 First Slot Entry 48 16 Second Slot Entry (N+1)*16 16 nth Slot Entry align 16 public ms_irq_route_table_sign ms_irq_route_table_sign label byte db "$PIR" ms_irq_route_table_ver dw 0100h ms_irq_route_table_size dw 32+(5*16) ms_irq_route_table_bus db 00h ms_irq_route_table_dev db VT586_P2I_DEV_FUNC ms_irq_route_table_irq dw 0h ms_irq_route_table_id dd 05861106h ; VIA 82C586 ;ms_irq_route_table_id dd 05961106h ; VIA 82C596 ms_irq_route_table_mini dd 0h ms_irq_route_table_resd db 11 dup(0) ms_irq_route_table_cksm db 0 紧接着是16字节的插槽项目格式,依系统主机板所使用的芯片组,内建装置与插槽数而有所不同. 格式如下: 从表格起点算起的相对字节 大小 说明 0 1 PCI Bus Number 1 1 PCI Device Number 2 1 Link Value for INT A# 3 2 IRQ Bitmap for INT A# 5 1 Link Value for INT B# 6 2 IRQ Bitmap for INT B# 8 1 Link Value for INT C# 9 2 IRQ Bitmap for INT C# 11 1 Link Value for INT D# 12 2 IRQ Bitmap for INT D# 14 1 Slot Number 15 1 Reserved Interrupt Pin 中断讯号脚(Offset 3Dh) 中断讯号线记录器其记录该 PCI 装置使用何者 INT#讯号,BIOS则依其所提供的信息 告知CHIPSET并给予正确中断绕线设定. 值为1表示其使用INT A,2则为INT B,3则为INT C,4则为INT D. 此记录器是只读并无法写入. MIN_GNT and MAX_LAT MIN_GNT(Minimum Grant 最小授权)(Offset 3Eh) 此为只读的组态缓存器,其值为0,代表此Bus Master对于指派给予的LT的设定值并没有特定的,若非为0则表示master需要多长的时间片段以得到适当的效能,以250ns为单位. Max_LAT:Max_Lat(Offset 3Fh) 缓存器的值表示master多久会想要存取总线一次, 此为只读的组态缓存器,对于bus master来说是非必要的. Device Status PCI 2.2 新增新能力(New Capabilities) 组态缓存器offset 06h~07h为装置状态缓存器,其位4=1表示支持新能力,新能力指针缓存器在组态缓存器offset 34h,其细节如下: 位0~7为能力识别码 位8~15为指向下一个新能力的指标. 识别码: 说明 00h 保留 01h PCI Power Management Interface 02h AGP 03h VDP(Vital Product Data) 04h Slot Identification 05h MSI(Message Signaled Interrupt) 06h CompactPCI Host Swap 7~255d 保留 PMC Register: 位 说明 15:11 PME支持(PME_Support)字段,表示功能可以在该状态下,驱动 PME#到低态(电源管理事件PM Event)的PM状态,位为0表示 在这个PM状态下不支持PME#产生. 位 对应的PM状态 11 D0 12 D1 13 D2 14 D3 hot 15 D3 cold(功能需要辅助电源来供应PME逻辑电力) 10 D2支持位 9 D2支持位 8:6 辅助电流(Aux_Current)字段. 5 装置特定的初始化(Device-Specific Initialization,简称DSI)位. 4 保留 3 PME频率(PME Clock)位,此位为1表示功能需要有PCI频率存 在,才能产生PME#,不需要频率或不产生PME#的功能会以硬件接线 将本位元设定为0. 2:0 版本字段(Version). 位 遵循的规格版本 210 001 1.0 010 1.1 PM控制/状态(PMCSR)缓存器 · 假如功能实作PME能力的话,则此缓存器含有一个用来反应先前致能之PME是否发生的PME状态(PME Status)位. · 假如功能实作PME能力的话, 则此缓存器含有一个PME致能(PME Enable)位,它允许软件去致能或关闭功能驱动PME#讯号到低态的能力. · 假如实作了非必要的数据缓存器的话,则此缓存器含有两个字段: · 允许软件选择可以透过数据缓存器来读取的信息. · 并提供数据缓存器数值必须相乘的比例因子. · 软件使用此缓存器的电源状态(Power State)字段,来决定功能目前的PM状态,以及把功能转移到新PM状态. 位 读/写(R/W) 说明 15 读/写,想要将 PME状态(PME Status)位,假如功能支持PME 1清除为0的话, 的话,此位会反应功能是否遇到PME(即使在 把1写入其中 此缓存器里的PME_En位将功能在发生PME 事件时,驱动PME#到低态的能力关闭),假如设定为1,则功能遇到PME,而软件可以用写入1到其中的方式将它清除. 14:13 只读 数据比例(Data Scale)字段. 12:9 读/写 数据选择(Data Select)字段. 8 读/写 PME致能(PME_En)位. 1=致能功能在发生PME事件时,驱动PME#到低  态的能力. 0=关闭. 7:2 只读 保留. 1:0 读/写 电源状态(Power State)字段,软件用此字段来居 决定功能目前的PM状态(以读取此字段的方式) 或是将它放入到一个新的PM状态(以写入此字段的方式),假如软件选择功能不支持的PM状态,则写入必须正常地完成,但是写入的数据会被丢弃,且状态不变. 10 PM状态 00b D0 01b D1 10b D2 11b D3hot 相关信息与实例 当客户要求支持S5 PME Wake up功能但PCI装置不支持时,BIOS可利用下列程序来做到: STR_SAVE_PCI_DEVICE LABEL BYTE dw MKF_PCI_SLOT1_DEV_FUNC ;(25-11)shl 3 dw MKF_PCI_SLOT2_DEV_FUNC ;(26-11)shl 3 dw MKF_PCI_SLOT3_DEV_FUNC ;(27-11)shl 3 dw MKF_PCI_SLOT4_DEV_FUNC ;(28-11)shl 3 dw MKF_PCI_SLOT5_DEV_FUNC ;(29-11)shl 3 NO_OF_STR_PCI_TABLE equ ($ - offset cgroup:STR_SAVE_PCI_DEVICE)/2 mov si,offset cgroup:STR_SAVE_PCI_DEVICE mov cx,NO_OF_STR_PCI_TABLE loop_for_pme_d3: push cx mov dx, word ptr cs:[si] mov ah,00h ; 00h call read_pci cmp al,0ffh jz next_for_pme_d3 mov ah,PCI_REG_STATUS ; 06h call read_pci test al, CAPABILITIES_BIT ; 10h jz next_for_pme_d3 mov ah,PCI_CAP_PTR ; 34h read_cap_id: call read_pci cmp al, 00 jz next_for_pme_d3 mov ah,al call read_pci cmp al, PME_CAP_ID ; 01h jz found_for_pme_id inc ah jmp read_cap_id found_for_pme_id: add ah,PMECS_REG+1 ; 05h call read_pci and al,0feh ; Clear & Disable PME call write_pci dec ah call read_pci and bl,0fch ; set power on state call write_pci inc ah call read_pci or al,01h ; Enable PME call write_pci next_for_pme_d3: inc si inc si pop cx loop loop_for_pme_d3 mov cx,3333 call pm_fixed_delay popa for_pme_disable: ret ;----------------------------------------------------------- -----------; ; STACK REQUIRED ; ; ; ; Input : (AL) Mask of PCI register bits to test. ; ; (optional) ; ; (AH) Index of PCI register to access. ; ; (DL) 7:3 PCI device # ; ; 2:0 PCI function # on device ; ; (DH) 7:0 PCI bus # of device ; ; ; ; Output: (AL) Value read from chip set register. ; ; (ZF) ZR Corresponding bits in chip set ; ; register to mask are all zero. ; ; NZ Corresponding bits in chip set ; ; register to mask has at least ; ; one bit set. ; ; ; ; Register destroyed : (AL) ; ; NOTE : ; ; * Do not invoke with "ret_sp". Invoke with "call" only. ; ; * Do not change IF status. ; ;----------------------------------------------------------------------- ; read_pci PROC NEAR push edx push eax pushf xchg ax,dx movzx eax,ax ; (eax) = device & func # shl eax,8 ; (eax) = dev & func # in ; proper position. bts eax,31 mov al,dh ; (al) = reg # to access. and al,0fch ; (eax) = proper config enb. shl edx,16 mov dx,00cf8h ; (dx) = CONFIG_ADDRESS cli out dx,eax jcxz short $+2 jcxz short $+2 shr edx,24 ; (dl) = reg # to access. and dl,003h ; (dl) = byte to access of reg or dx,00cfch ; (dx) = CONFIG_DATA in al,dx ; (al) = data read from reg jcxz short $+2 jcxz short $+2 mov dl,al popf pop eax test al,dl ; For returning proper flag info. mov al,dl pop edx ret read_pci ENDP · Host/PCI Bridge: 通常被称为北桥(North Bridge),它连接主处理器总线与root PCI 总线. · PCI-to-ISA Bridge: 通常被称为南桥(South Bridge),它连接root PCI总线与ISA(或EISA) 总线,南桥通常还整合中断控制器(Interrupt Controller),IDE控制器(IDE Controller),USB Host控制器(USB Controller)与DMA控制器(DMA Controller). · PCI-to-PCI Bridge: 它连接root PCI总线与PCI总线 � EMBED PBrush ��� _1046176051.doc _1047538642.doc
/
本文档为【PCI_配置空间(中文)】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索