GPIO trong platform firmware là gì?

Quicknote giải thích GPIO từ góc nhìn BIOS/platform firmware.

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

GPIO trong BIOS không chỉ là “pin high/low”. Nó thường là tín hiệu strap, reset, interrupt, power enable, wake source hoặc input từ board. ACPI sẽ mô tả nhiều GPIO này cho OS để driver biết interrupt nằm ở đâu hoặc làm sao bật/tắt thiết bị.

Mục Giá trị Ghi chú
GPIO output Enable/reset/power rail Ví dụ bật nguồn cho camera, touchpad, sensor.
GPIO input Detect/strap/status Ví dụ lid open, dock detect, board ID.
GPIO interrupt GpioInt resource OS driver dùng làm IRQ cho I2C/SPI device.
GPIO OperationRegion AML truy cập GPIO field Method `_PS0/_PS3/_STA` có thể đọc/ghi field.

Ví dụ ACPI resource

Name (_CRS, ResourceTemplate () {
  GpioInt (Level, ActiveLow, Exclusive, PullUp, 0, "\_SB.GPI0", 0, ResourceConsumer) { 42 }
})

Ý nghĩa: device này dùng GPIO pin 42 làm interrupt. Nếu polarity sai, OS driver có thể load nhưng interrupt không bao giờ tới.

Debug diary: device có driver nhưng không interrupt

Pattern thường gặp:

I2C device enumerate OK

Driver bind OK

Không có event / touch không phản hồi

Lúc này hãy kiểm tra GPIO ACPI resource: pin number, active high/low, pull, sharing mode và controller path.

GPIO debug checklist

Liên hệ với Setup/NVRAM

Một số platform bật/tắt device bằng Setup option. Option này nằm trong NVRAM, DXE đọc policy, rồi patch SSDT hoặc _STA. Vì vậy một checkbox trong BIOS Setup có thể làm OS thấy hoặc không thấy một device ACPI.

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.