標籤:acpi windows wdm
一直不太清楚ACPI驅動在WINDOWS中的作用.
甚至不瞭解ACPI協議的作用.
於是, 隨便翻了下"格蠹彙編"中的第24章, 如何跟蹤ACPI代碼, 算是對ACPI有了一個初步性的瞭解.
ACPI向OS報告硬體資訊, 而OS通過ACPI控制硬體.
ACPI就是OS與硬體/韌體之間的一個標準介面協議.
ACPI通過ASL(ACPI SOURCE LANGUAGE)來描述系統硬體的屬性與方法, ASL最終會被編譯為AML(ACPI MACHINE LANGUAGE)的位元組碼(BYTECODE).
之後, 翻閱了一下WDK中關於ACPI的內容:
ACPI裝置包括:
low-level system devices such as batteries, thermal zones, and other devices defined in a system‘sACPI namespace.
ACPI裝置在WINDOWS驅動中的表現形式:
即definition block和它其中的一塊operation region.
An ACPI device is specified by a definition block in the ACPI System Description Tables. A device‘s definition block specifies, among other things, anoperation region, which specifies a contiguous block of device memory that is used to access device data.
ACPI裝置的Windows軟體構成:
1. ACPI系統驅動ACPI.SYS
2. vendor提供的WDM驅動
3. ACPI BIOS, 就是所謂的韌體
這一組合的操作流程是:ACPI.SYS調用vendor提供的WDM驅動中的operation region handler來訪問operation region, 以達到對ACPI裝置資料/控制的目的.
關於裝置堆疊:
分為該APCI裝置是主板整合的, 則ACPI驅動建立FDO, 位於WDM驅動建立的FDO之下, 位於ROOT BUS驅動建立的PDO之上
如果不是主板整合的, 則ACPI為該裝置建立PDO, 位於WDM建立的FDO之下.
ACPI的控制方法:
所謂的ACPI控制方法, 就是由ASL/AML描述的用來查詢與配置硬體的軟體.
由ACPI驅動負責解釋執行.
Control methods are written in the ACPI Machine Language (AML), loaded from the system firmware into the ACPI namespace, and interpreted by the ACPI driver.
ACPI的命名規則:
\ root of ACPI namespace
ABCD parent device (縮排一次)
CHL1 child device of ABCD (縮排二次)
CHL2 child device of ABCD (縮排二次)
CHL3 child device of CHL2 (縮排三次)
_FOO control method (縮排三次)
_FOO control method (縮排一次)
WINDOWS對ACPI裝置的命名由對象來表述(object), 一個對象可以包括子物件, 而對象既可以是子裝置(child device), 也可以是控制方法(control method).