9.15. PC/AT RTC/CMOS 设备
大多数计算机都包含一个 RTC 设备,该设备还包含由线性字节数组表示的电池供电 RAM。对于兼容 IBM PC/AT 中 Motorola RTC/CMOS 设备的设备,存在一种标准机制可用于访问其前 64 字节的非易失性 RAM。较新的设备通常至少包含 128 字节的电池供电 RAM。已为这些设备分配了新的 PNP ID。
电池供电 RAM 中的某些字节具有预定义的值。特别是,时间、日期、月份、年份、世纪、闹钟时间以及 RTC 周期性中断为只读。
9.15.1. 与 PC/AT 兼容的 RTC/CMOS 设备 (PNP0B00)
标准的 PC/AT 兼容 RTC/CMOS 设备由 PnP ID PNP0B00 表示。如果 ACPI 平台使用与该设备兼容的设备,则可以在其 ACPI 命名空间中对此进行描述。随后 ASL 可以将其作为一个线性的 64 字节数组进行读写。如果使用 PNP0B00,则 ASL 和 ACPI 操作系统不得假定存在任何 CMOS 扩展。
注
这意味着,固定 ACPI 描述表 中的 CENTURY 字段只能包含 0 到 63 之间的值。
示例:
以下是如何描述该设备的一个示例:
Device (RTC0) {
Name(_HID, EISAID("PNP0B00"))
Name (_FIX, Package(1) { EISAID("PNP0B00") } )
Name(_CRS, ResourceTemplate() {
IO(Decode16, 0x70, 0x70, 0x1, 0x2)
}
OperationRegion(CMS1, SystemCMOS, 0, 0x40)
Field(CMS1, ByteAcc, NoLock, Preserve) {
CM00, 8,
, 256,
CM01, 8,
CM02, 16,
, 216,
CM03, 8
}
}
9.15.2. Intel PIIX4 兼容 RTC/CMOS 设备 (PNP0B01)
Intel PIIX4 包含一个与 PC/AT 中设备兼容的 RTC/CMOS 设备。但它包含 256 字节的非易失性 RAM。前 64 字节通过与 PC/AT 中 64 字节相同的机制访问。上面的 192 字节通过仅在 Intel 芯片上使用的接口访问。(详见 Intel® 82371AB PIIX4 规范。)
任何包含该设备或与其兼容设备的平台都可以使用 PnP ID PNP0B01。这将允许 ACPI 兼容的 OS 识别该 RTC/CMOS 设备为使用 PIIX4 的编程接口。因此,ASL 可使用该设备读写的字节数组长度为 256 字节。
注
这也意味着,固定 ACPI 描述表 中的 CENTURY 字段可以包含 0 到 255 之间的值。
示例:
以下是如何描述该设备的一个示例:
Device (RTC0) {
Name(_HID, EISAID("PNP0B01"))
Name (_FIX, Package(1) {
EISAID("PNP0B01") }
)
Name(_CRS, ResourceTemplate() {
IO(Decode16, 0x70, 0x70, 0x1, 0x2)
IO(Decode16, 0x72, 0x72, 0x1, 0x2)
}
OperationRegion(CMS1, SystemCMOS, 0, 0x100)
Field(CMS1, ByteAcc, NoLock, Preserve) {
AccessAs(ByteAcc, 0),
CM00, 8,
,256,
CM01, 8,
CM02, 16,
, 224,
CM03, 8,
, 184,
CENT, 8
}
9.15.3. Dallas Semiconductor 兼容 RTC/CMOS 设备 (PNP0B02)
Dallas Semiconductor RTC/CMOS 设备与 PC/AT 中的设备兼容,但它们包含 256 字节或更多的非易失性 RAM。前 64 字节通过与 PC/AT 中 64 字节相同的机制访问。更高地址的字节通过仅在 Dallas Semiconductor 芯片上使用的接口访问。
任何包含该设备或与其兼容设备的平台都可以使用 PnP ID PNP0B02。这将允许 ACPI 兼容的 OS 识别该 RTC/CMOS 设备为使用 Dallas Semiconductor 编程接口。因此,ASL 可使用该设备读写的字节数组长度为 256 字节。
这些设备的描述与上面的 PIIX4 示例类似,并且 FADT 的 CENTURY 字段也可以包含 0 到 255 之间的值。