6.4.2. 小型资源数据类型
小型资源数据类型的大小可以为 2 到 8 字节,并遵循以下格式:
表 6.26 小型资源数据类型标签位定义
| 偏移 | 字段说明 |
|---|---|
| 字节 0 | 标签位 [7]:类型-0(小型项) |
| 字节 1 到 n | 数据字节(长度 0 - 7) |
当前为即插即用设备定义的小型信息项如下:
表 6.27 小型资源项
| 小型项名称 | 值 |
|---|---|
| 保留 | 0x00-0x03 |
| IRQ 格式描述符 | 0x04 |
| DMA 格式描述符 | 0x05 |
| 开始依赖功能描述符 | 0x06 |
| 结束依赖功能描述符 | 0x07 |
| I/O 端口描述符 | 0x08 |
| 固定位置 I/O 端口描述符 | 0x09 |
| 固定 DMA 描述符 | 0x0A |
| 保留 | 0x0B-0x0D |
| 厂商定义描述符 | 0x0E |
| 结束标签描述符 | 0x0F |
6.4.2.1. IRQ 描述符
类型 0,小型项名称 0x4,长度 = 2 或 3
IRQ 数据结构表明该设备使用一个中断级别,并提供一个掩码,其中被置位的位表示该设备中已实现的级别。对于标准 PC-AT 实现,有 15 个可能的中断,因此使用一个两字节字段。对于每个所需的独立中断,都要重复此结构。
表 6.28 IRQ 描述符定义
| 偏移 | 字段名称 |
|---|---|
| 字节 0 | 值 = 0x22 或 0x23 (0010001nB) - 类型 = 0,小型项名称 = 0x4,长度 = 2 或 3 |
| 字节 1 | IRQ 掩码位[7:0],_INT 位 [0] 表示 IRQ0,位[1] 表示 IRQ1,依此类推。 |
| 字节 2 | IRQ 掩码位[15:8],_INT 位 [0] 表示 IRQ8,位[1] 表示 IRQ9,依此类推。 |
| 字节 3 | IRQ 信息。每一位在置位时,表示此设备能够驱动某种类型的中断。(可选——如果未包含,则假定为边沿敏感、高有效中断。)这些位既可用于报告 IRQ 资源,也可用于设置 IRQ 资源。注: 此描述符用于描述连接到与 PIC 兼容的中断控制器的中断,这类控制器只能被编程为高有效边沿触发或低有效电平触发中断。任何其他组合都是无效的。扩展中断描述符可用于描述其他组合:位 [7:6] 保留(必须为 0)位 [5] 唤醒能力,_WKC 0x0 = 不具备唤醒能力:此中断不能唤醒系统。0x1 = 具备唤醒能力:此中断能够从低功耗空闲状态或系统睡眠状态唤醒系统。位 [4] 中断共享,_SHR 0x0 = 独占:此中断不与其他设备共享。0x1 = 共享:此中断与其他设备共享。位 [3] 中断极性,_LL 0 高有效 - 当信号为高电平或逻辑真时对此中断进行采样 1 低有效 - 当信号为低电平或逻辑假时对此中断进行采样。位 [2:1] 忽略 位 [0] 中断模式,_HE 0 电平触发 - 中断响应于信号处于低状态时被触发。1 边沿触发 - 中断响应于信号状态从低变高时被触发。 |
注
低有效、电平敏感中断可以在电气上共享,但其可能如何工作的过程超出了本规范的范围。
注
如果未包含字节 3,则假定为高有效、边沿敏感、不可共享。
有关创建 IRQ 描述符的 ASL 宏的说明,请参见 IRQ(中断资源描述符宏)。
6.4.2.2. DMA 描述符
类型 0,小型项名称 0x5,长度 = 2
DMA 数据结构表明该设备使用一个 DMA 通道,并提供一个掩码,其中被置位的位表示该设备中实际实现的通道。对于每个所需的独立通道,都要重复此结构。
表 6.29 DMA 描述符定义
| 偏移 | 字段名称 |
|---|---|
| 字节 0 | 值 = 0x2A (00101010B) - 类型 = 0,小型项名称 = 0x5,长度 = 2 |
| 字节 1 | DMA 通道掩码位 [7:0](通道 0 - 7),_DMA - 位 [0] 是通道 0,等等。 |
| 字节 2 | 位 [7] 保留(必须为 0)位 [6:5] 支持的 DMA 通道速度,_TYP: 00 表示兼容模式 01 表示 EISA 中描述的 A 类 DMA 10 表示 B 类 DMA 11 表示 F 类 位 [4:3] 忽略 位 [2] 逻辑设备总线主控状态,_BM: 0 逻辑设备不是总线主控设备 1 逻辑设备是总线主控设备 位 [1:0] DMA 传输类型偏好,_SIZ: 00 仅 8 位 01 8 位和 16 位 10 仅 16 位 11 保留 |
有关创建 DMA 描述符的 ASL 宏的说明,请参见 DMA(DMA 资源描述符宏)。
6.4.2.3. 开始依赖功能描述符
类型 0,小型项名称 0x6,长度 = 0 或 1
每个逻辑设备都需要一组资源。这组资源可能存在需要表达的相互依赖关系,以便仲裁软件能够对逻辑设备做出资源分配决策。依赖功能用于表达这些相互依赖关系。此处显示了依赖功能的数据结构定义。有关依赖功能用法的详细说明,请参阅下一节。
表 6.30 开始依赖功能描述符定义
| 偏移 | 字段名称 |
|---|---|
| 字节 0 | 值 = 0x30 或 0x31 (0011000nB) 类型 = 0,小型项名称 = 0x6 长度 = 0 或 1 |
开始依赖功能字段的长度可以是 0 或 1 字节。额外的字节可选择用于表示 Start DF 标记之后资源组的兼容性优先级或性能/稳健性优先级。兼容性优先级是针对与传统操作系统兼容性的配置排序。这与 PNPBIOS 接口中使用的优先级相同。例如,出于兼容性原因,COM1 的首选配置是 IRQ4,I/O 3F8-3FF。性能/稳健性是出于性能和稳健性原因对配置进行的排序。例如,某个设备可能具有高性能的总线主控配置,而该配置可能不受传统操作系统支持。总线主控配置将具有最高的性能/稳健性优先级,而其轮询 I/O 模式则可能具有最高的兼容性优先级。
如果未包含优先级字节,则表示依赖功能优先级为“可接受”。该字节定义如下:
表 6.31 开始依赖功能优先级字节定义
| 位 | 定义 |
|---|---|
| 1:0 | 兼容性优先级。可接受值为:0 良好配置:最高优先级且为首选配置 1 可接受配置:较低优先级但可接受的配置 2 次优配置:可工作的配置但不是最优 3 保留 |
| 3:2 | 性能/稳健性。可接受值为:0 良好配置:最高优先级且为首选配置 1 可接受配置:较低优先级但可接受的配置 2 次优配置:可工作的配置但不是最优 3 保留 |
| 7:4 | 保留(必须为 0) |
请注意,如果多个依赖功能具有相同的优先级,则还会根据它们在资源数据结构中出现的顺序进一步确定优先级。在该结构中最早出现(最接近开头)的依赖功能具有最高优先级,依此类推。
有关创建开始依赖功能描述符的 ASL 宏的说明,请参见 StartDependentFn(开始依赖功能资源描述符宏)。
6.4.2.4. 结束依赖功能描述符
类型 0,小型项名称 0x7,长度 = 0
每个逻辑设备只允许有一个结束依赖功能项。这强制保证了依赖功能不能嵌套。
表 6.32 结束依赖功能描述符定义
| 偏移 | 字段名称 |
|---|---|
| 字节 0 | 值 = 0x38 (00111000B) - 类型 = 0,小型项名称 = 0x7,长度 =0 |
有关创建结束依赖功能描述符的 ASL 宏的说明,请参见 EndDependentFn(结束依赖功能资源描述符宏)。
6.4.2.5. I/O 端口描述符
类型 0,小型项名称 0x8,长度 = 7
I/O 范围有两种类型的描述符。第一种描述符是用于可编程设备的全功能描述符。第二种描述符是用于具有固定 I/O 要求并使用 10 位 ISA 地址译码的旧式 ISA 卡的最小描述符。第一种类型的描述符也可用于描述需要 16 位地址译码的 ISA 卡的固定 I/O 要求。这可以通过将范围最小基地址和范围最大基地址设置为相同的固定 I/O 值来实现。
表 6.33 I/O 端口描述符定义
| 偏移量 | 字段名称 | 定义 |
|---|---|---|
| 字节 0 | I/O 端口描述符 | 值 = 0x47 (01000111B) - 类型 = 0,小项名称 = 0x8,长度 = 7 |
| 字节 1 | 信息 | 位 [7:1] 保留且必须为 0 位 [0] (_DEC) 1 逻辑设备对 16 位地址进行译码 0 逻辑设备仅对地址位[9:0]进行译码 |
| 字节 2 | 范围最小基地址,_MIN 位[7:0] | 设备卡可配置的最小基 I/O 地址的地址位 [7:0]。 |
| 字节 3 | 范围最小基地址,_MIN 位[15:8] | 设备卡可配置的最小基 I/O 地址的地址位 [15:8]。 |
| 字节 4 | 范围最大基地址,_MAX 位[7:0] | 设备卡可配置的最大基 I/O 地址的地址位 [7:0]。 |
| 字节 5 | 范围最大基地址,_MAX 位[15:8] | 设备卡可配置的最大基 I/O 地址的地址位 [15:8]。 |
| 字节 6 | 基地址对齐,_ALN | 最小基地址的对齐,以 1 字节块递增。 |
| 字节 7 | 范围长度,_LEN | 所请求的连续 I/O 端口数量。 |
有关创建 I/O 端口描述符的 ASL 宏说明,请参见 IO (IO 资源描述符宏)。
6.4.2.6. 固定位置 I/O 端口描述符
类型 0,小项名称 0x9,长度 = 3
此描述符用于描述 10 位 I/O 位置。
表 6.34 固定位置 I/O 端口描述符定义
| 偏移量 | 字段名称 | 定义 |
|---|---|---|
| 字节 0 | 固定位置 I/O 端口描述符 | 值 = 0x4B (01001011B) - 类型 = 0,小项名称 = 0x9,长度 = 3 |
| 字节 1 | 范围基地址,_BAS 位[7:0] | 设备卡可配置的基 I/O 地址的地址位 [7:0]。此描述符假定采用 10 位 ISA 地址译码。 |
| 字节 2 | 范围基地址,_BAS 位[9:8] | 设备卡可配置的基 I/O 地址的地址位 [9:8]。此描述符假定采用 10 位 ISA 地址译码。 |
| 字节 3 | 范围长度,_LEN | 所请求的连续 I/O 端口数量。 |
有关创建固定 I/O 端口描述符的 ASL 宏说明,请参见 FixedIO (固定 IO 资源描述符宏)。
6.4.2.7. 固定 DMA 描述符
类型 0,小项名称 0xA,长度 = 5
固定 DMA 描述符为平台提供了一种将 DMA 请求线和通道静态分配给连接到共享 DMA 控制器的设备的方法。该描述符与 DMA 描述符的不同之处在于,它支持更多的 DMA 请求线和 DMA 控制器通道,以及两者之间的灵活映射。同时还提供了用于向设备传输的总线宽度。此结构会针对每个所需的独立请求线/通道对重复一次,并且只能在 _CRS 对象中使用。(不支持固定 DMA 资源的动态仲裁。)
表 6.35 固定 DMA 资源描述符
| 偏移量 | 字段名称 |
|---|---|
| 字节 0 | 值 = 0x55 (01010101B) - 类型 = 0,小项名称 = 0xA,长度 = 0x5 |
| 字节 1 | DMA 请求线位 [7:0] _DMA[7:0]。用于唯一标识所分配请求线的平台相对编号。请求线到控制器的映射在控制器特定的 OS 驱动程序中完成。 |
| 字节 2 | DMA 请求线位 [15:8] _DMA[15:8] |
| 字节 3 | DMA 通道位[7:0] _TYP[7:0]。用于唯一标识所分配控制器逻辑通道的控制器相对编号。多个请求线可以共享通道号。 |
| 字节 4 | DMA 通道位[15:8] _TYP[15:8] |
| 字节 5 | DMA 传输宽度。_SIZ。连接到该请求线的设备所支持的总线宽度。0x00 8 位 0x01 16 位 0x02 32 位 0x03 64 位 0x04 128 位 0x05 256 位 0x06-0xFF 保留 |
6.4.2.8. 厂商定义描述符,类型 0
类型 0,小项名称 0xE,长度 = 1 到 7
厂商定义资源数据类型供厂商使用。
表 6.36 厂商定义资源描述符定义
| 偏移量 | 字段名称 |
|---|---|
| 字节 0 | 值 = 0x71 - 0x77 (01110nnnB) - 类型 = 0,小项名称 = 0xE,长度 = 1-7 |
| 字节 1 到 7 | 厂商定义 |
有关创建短厂商定义资源描述符的 ASL 宏说明,请参见 VendorShort (短厂商资源描述符)。
6.4.2.9. 结束标记
类型 0,小项名称 0xF,长度 = 1
结束标记用于标识资源数据的结束。
注意
如果校验和字段为零,则资源数据会被视为校验和操作成功。配置将正常继续。
表 6.37 结束标记定义
| 偏移量 | 字段名称 |
|---|---|
| 字节 0 | 值 = 0x79 (01111001B) - 类型 = 0,小项名称 = 0xF,长度 = 1 |
| 字节 1 | 覆盖串行标识符之后所有资源数据的校验和。生成该校验和时,应使其与所有数据字节之和相加后得到零和。 |
结束标记由 ASL 编译器在 ResourceTemplate 语句末尾自动生成。