AML là gì?

Quicknote giải thích ACPI Machine Language.

2 phút đọc
Đọc bằng Tiếng Việt English 日本語
ACPI / Hardware Terms cover

AML là bytecode mà OS ACPI interpreter thực thi. Người viết firmware thường viết ASL, compile thành AML, nhúng vào DSDT/SSDT, rồi OS sẽ evaluate method khi cần resource, power state hoặc device-specific function.

Nói ngắn gọn: ASL là thứ người đọc, AML là thứ OS chạy.

01 ASL

Source dễ đọc

Method (_STA) { Return (0x0F) }

02 IASL

Compile

ASL được compile thành AML binary.

03 Table

DSDT/SSDT

Firmware publish AML trong ACPI table.

04 OS

Interpreter

OS evaluate method khi enumerate hoặc power transition.

Vòng đời của một ACPI method.

Ví dụ ASL nhỏ

Device (DEV0) {
  Name (_HID, "ACME0001")

  Method (_STA, 0, NotSerialized) {
    Return (0x0F)
  }
}

Ý nghĩa thực tế: OS nhìn thấy device ACME0001_STA = 0x0F báo device present, enabled, visible và functioning.

Khi debug AML

Nếu OS báo lỗi kiểu AE_NOT_FOUND, AE_ALREADY_EXISTS, AE_AML_OPERAND_TYPE, hãy decompile AML và nhìn vào method đang bị evaluate.

iasl -d DSDT.dat SSDT*.dat

Sau đó kiểm tra method có return đúng kiểu dữ liệu OS kỳ vọng không. _CRS mà trả resource template sai, _DSM mà trả package sai format, hoặc _STA return nhầm bit đều có thể làm device biến mất.

AML debug checklist

Firmware engineer notes

AML không nên được xem là “config text”. Nó là code chạy bởi OS. Vì vậy một bug AML có thể giống bug phần mềm: sai branch, sai type, sai resource, sai timing với EC/GPIO.

Bài liên quan

Nguồn tham khảo public

Thấy nội dung này hữu ích?

Lưu lại hoặc chia sẻ cho người cũng đang học firmware, BIOS/UEFI và embedded systems.

Nội dung liên quan

Một số bài viết, ghi chú hoặc project có liên quan đến nội dung bạn vừa đọc.

Biến note thành bài viết hoàn chỉnh

Notes là nơi ghi nhanh khái niệm.