ACPI Table 與 Device Tree


背景

在分析Linux內核驅動的時候,有時候會看到一些acpi字樣的接口。

之前一直沒搞明白ACPI是什么,現在知道了。

Reference :
https://www.cnblogs.com/junzhkevin/archive/2013/02/25/2932801.html
http://bbs3.driverdevelop.com/read.php?tid=99720

ACPI

Advanced Configuration and Power Management Interface : 用於配置與電源管理的接口,是讓OS使用的。用在x86架構上Windows系統多一點。

  • 不同的表,有不同的用途,像IO APIC中斷配置表 專門負責 中斷(可以用WinDbg等工具自己去看代碼)。

簡單地理解,ACPI Table 與 Windows 的關系, 猶如 Device Tree 與 embedded-Linux 的關系。

介紹

ACPI SPEC定義了ACPI-compatible OS與BIOS之間的接口,ACPI Tables就是BIOS提供給OS的硬件配置數據,包括系統硬件的電源管理和配置管理。

BIOS在POST過程中,將RSDP存在0xE0000--0xFFFFF的內存空間中,然后Move RSDT/XSDT, FADT, DSDT到ACPI Recleam Area, Move FACS到ACPI NVS Area,最后填好表的Entry鏈接和Checksum。

控制權交給OS之后,由OS來開啟ACPI Mode,首先在內存中搜尋ACPI Table,然后寫ACPI_Enable到SMI_CMD,SCI_EN也會被HW置起來。

ACPI Tables根據存儲的位置,可以分為:

1). RSDP位於F段,用於OSPM搜索ACPI Table,RSDP可以定位其他所有ACPI Table

2). FACS位於ACPI NVS內存,用於系統進行S3保存的恢復指針,內存為NV Store

3). 剩下所有ACPI Table都位於ACPI Reclaim內存,進入OS后,內存可以釋放

ACPI Table根據版本又分為1.0B,2.0,3.0,4.0。

2.0以后,支持了64-bit的地址空間,因此幾個重要的Table會不大一樣,比如:RSDP,RSDT,FADT,FACS。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM