Upgrade to Pro — share decks privately, control downloads, hide ads and more …

ACPI for beginners

akachochin
November 19, 2017

ACPI for beginners

This slide shares the element of ACPI.
It privides the followings
- what is ACPI?
- ACPI overview
- the concept for ACPI tables and namespace.
- good materials for further learning

akachochin

November 19, 2017
Tweet

More Decks by akachochin

Other Decks in Technology

Transcript

  1. ACPIとは何か ACPIの役割は以下2点です。 1. 電力制御 (Power Management) 2. デバイスの設定 (Configuration) ※ただし、ACPI規格書

    「1.1 Principal Goals」を見ると、ほとんどPower Management について語られており、Configurationはおまけ程度の扱い。
  2. 登場人物 先に紹介したACPI全体概要図には、以下3つの単語が出てきます。 単語 概要 ACPI Registers ACPIはハードウェアレジスタインタフェースを定義している。この レジスタインタフェースは、4章に書かれた電力制御機能の主となる 制御を行うために、ACPI互換のOSが使うものである。 ACPI

    BIOS ACPI規格準拠のBIOS ACPI Tables OSのメモリ空間に用意された、データやメソッドを含むテーブル。 後述。 なお、今回は、ACPI Tablesを中心に説明をします。 ※ACPI Tablesの概要はACPI規格書の第5章に書かれています。
  3. プログラミングモデル(ACPI規格書第5章) ACPI規格書によると、この章でカバーされるトピックは以下2つです。 1. The ACPI system description table architecture is

    defined, and the role of OEM-provided definition blocks in that architecture is discussed. 2. The concept of the ACPI Namespace is discussed. 「ACPI system description table」と「ACPI Namespace」の2つ がトピックであると述べられています。そして、この2つの要素が ACPIを使ったプログラミングに必須の要素となります。 ※以後、この文書では、ACPI system description tableを「ACPIテーブル」と記載します。また、ACPI Namespaceを「ACPI名前空間」と記載します。
  4. ACPIテーブル (ACPI system description table) ACPI規格書105ページには、ACPIテーブルの簡単な説明が 書かれています。要約するとおおよそ以下2点です。 1. ACPIテーブルは、ハードの機能を制御するためのシステ ム情報、機能、メソッド、ケーパビリティを提供する。

    2. ACPIテーブルは、ボード上のデバイス情報を含む。これ らデバイスには以下のものも含まれる。 ➢規格上、デバイスの存在を検知する仕組みを備えないデバイス ➢他のハードウェア規格に依存するデバイス
  5. ACPIテーブルのメモリ上の構造 右図は「ACPI規格書」P105から 抜粋した図で、ACPIテーブルの とっかかりとなる部分です。 この図は、以下4点を表しています。 1. Root System Description Pointer(RSDP)から始まっている。

    2. RSDPはXSDTというテーブルを指している 3. XSDTはEntryを持ち、それらは何かのテーブルを指している。 4. テーブルにはヘッダ(緑部分)があり、すべてのテーブルで同じ型です。
  6. XSDT(RSDT) XSDTは、他のテーブルを指す物理アド レス(エントリ)が格納されているテー ブルです。 一方、似たようなテーブルに、RSDTが あります。 XSDT RSDT 役割 エントリは何らかのACPIテーブルを

    指す物理アドレス。 エントリは何らかのACPIテーブルを指す 物理アドレス。 エントリのサイズ 8byte(64bit) 4byte(32bit) 備考 存在する場合、必ずこちらを使う。 (ACPI規格書 119ページ) 互換のために残されているテーブル
  7. 主要なテーブル 右図は「ACPI規格書」P106から 抜粋したものです。 押さえたい個所は以下4点。 1. XSDTの最初のエントリは、必 ずFADPテーブル。 2. Blocksは、ACPIレジスタ空間。 3.

    DSDTは、特殊ブロックを持つ。 4. このブロック内のメソッドを評 価することで、デバイス固有の 制御を依頼したり、情報を取得 できる。 ※図ではシグネチャが「FACP」になっているが、これは typoでない。
  8. FADT(Fixed ACPI Description Table) このテーブルはACPI規格で必ず存在する必須(vital)な情報を格納す るためのテーブル。 例えば、以下の情報を含みます。 • ACPI関連レジスタがマップされている空間のport address

    • DSDTを指す物理アドレス ※メンバ一覧は、ACPI規格書のP120~P128に記載されています。メンバが多いため、こ こでは上記の説明にとどめます。
  9. 言葉の定義・・・「ロード」 「ロード」について、ACPI規格書のP140では以下のように述べられ ています。 OSPM “loads” or “unloads” an entire definition

    block as a logical unit. OSPM will load a definition block either as a result of executing the AML Load() or LoadTable() operator or encountering a table definition during initialization. つまり、「ある種のメソッドを実行する」か、「初期化時にテーブ ルを見つけること」と言っています。 ※具体的な実装がどちらなのかは、今回未確認です。
  10. Differentiated Definition Block AMLフォーマットのデータで構成されているバイナリデー タです。FADTと異なり、「システムごとの差分の定義」 をします。 • ハードウェアの実装の詳細に関する情報を含んでいます。 • 後述するACPI名前空間の材料となります。

    ※AMLとは、ASL (ACPI Source Language)で書いたコードをビルドしたバイト コード。メーカー、ファームウェアベンダーは、ASLを使ってdefinition blockを 書きます。definition blockには、ACPIメソッドやオブジェクトを記述します。 雰囲気的には、glue codeチックなものかなあ。 ACPI規格書 P140もしくは、P223~のSection 5.4 「Definition Block Encoding」 参照。