Tổng quan về lớp trừu tượng phần cứng (HAL)

Lớp trừu tượng phần cứng (HAL) là loại lớp trừu tượng có giao diện tiêu chuẩn để nhà cung cấp phần cứng triển khai. HAL cho phép nhà cung cấp phần cứng triển khai các tính năng cấp thấp hơn dành riêng cho thiết bị mà không ảnh hưởng hoặc sửa đổi mã trong các lớp cấp cao hơn.

Các điều khoản bắt buộc

Sau đây là danh sách định nghĩa cho các thuật ngữ được sử dụng trong phần tài liệu này:

Ngôn ngữ định nghĩa giao diện Android (AIDL)
Một ngôn ngữ giống Java dùng để xác định giao diện theo cách độc lập với ngôn ngữ lập trình đang được sử dụng. AIDL cho phép giao tiếp giữa ứng dụng HAL và dịch vụ HAL.
HAL liên kết
HAL giao tiếp với các quy trình khác bằng các lệnh gọi giao tiếp liên quy trình (IPC) của liên kết. HAL được liên kết chạy trong một quy trình riêng biệt với ứng dụng sử dụng các HAL đó. Các HAL được liên kết được đăng ký với trình quản lý dịch vụ để ứng dụng có thể truy cập vào các chức năng của HAL. Các HAL được viết cho Android 8 trở lên được liên kết.
Ứng dụng HAL
Quy trình truy cập vào dịch vụ HAL.
Giao diện HAL
Giao diện chung mà cả ứng dụng và dịch vụ HAL đều sử dụng để giao tiếp.
Dịch vụ HAL

Mã dành riêng cho phần cứng, chẳng hạn như mã chuyển đến máy ảnh của thiết bị cụ thể. Bạn phải triển khai tất cả HAL bắt buộc được liệt kê trong ma trận tương thích cho bản phát hành mà bạn nhắm đến trong phân vùng nhà cung cấp. Để biết thêm thông tin về ma trận tương thích, hãy xem bài viết Ma trận tương thích.

Bạn cũng có thể tạo giao diện HAL mới hoặc mở rộng giao diện của HAL để hỗ trợ các chức năng riêng biệt của phần cứng.

Ngôn ngữ định nghĩa giao diện phần cứng (HIDL)

Ngôn ngữ dùng để xác định giao diện theo cách độc lập với ngôn ngữ lập trình đang được sử dụng. HIDL cho phép giao tiếp giữa ứng dụng HAL và dịch vụ HAL.

HAL quy trình giống nhau (SP)

Một tập hợp HAL được gói bị hạn chế. Tư cách thành viên trong nhóm này do Google kiểm soát. Các HAL SP bao gồm:

  • HAL trình ánh xạ C ổn định 5
  • OpenGL
  • Vulkan
  • android.hidl.memory@1.0 (do hệ thống Android cung cấp, luôn được gói)
  • android.hardware.renderscript@1.0
HAL bao bọc

Dịch vụ HAL được tạo trước Android 8, nhưng đã được gói trong trình bao bọc AIDL hoặc HIDL để hoạt động với Android 8 trở lên.

Tiếp theo là gì?