Hardware Abstraction Layer (HAL) เป็นประเภทของ Abstraction Layer ที่มี อินเทอร์เฟซมาตรฐานสำหรับผู้จำหน่ายฮาร์ดแวร์ในการใช้งาน HAL ช่วยให้ผู้จำหน่ายฮาร์ดแวร์ สามารถติดตั้งใช้งานฟีเจอร์ระดับล่างที่เฉพาะเจาะจงของอุปกรณ์ได้โดยไม่ส่งผลกระทบหรือ แก้ไขโค้ดในเลเยอร์ระดับสูง
ข้อกำหนดที่จำเป็น
ต่อไปนี้เป็นรายการคำจำกัดความของคำศัพท์ที่ใช้ในส่วนนี้ของ เอกสารประกอบ
- ภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของ Android (AIDL)
- ภาษาที่คล้ายกับ Java ซึ่งใช้เพื่อกำหนดอินเทอร์เฟซในลักษณะที่ไม่ขึ้นอยู่กับ ภาษาโปรแกรมที่ใช้ AIDL ช่วยให้ไคลเอ็นต์ HAL และบริการ HAL สื่อสารกันได้
- HAL ที่เชื่อมโยง
- HAL ที่สื่อสารกับกระบวนการอื่นๆ โดยใช้การเรียก การสื่อสารระหว่างกระบวนการ (IPC) ของ Binder HAL ที่ใช้ Binder จะทำงานในกระบวนการแยกต่างหากจากไคลเอ็นต์ที่ใช้ HAL HAL ที่เชื่อมโยงจะได้รับการลงทะเบียนกับ Service Manager เพื่อให้ไคลเอ็นต์เข้าถึงความสามารถของตนได้ HAL ที่เขียนขึ้นสำหรับ Android 8 ขึ้นไปจะ ใช้ Binder
- ไคลเอ็นต์ HAL
- กระบวนการที่เข้าถึงบริการ HAL
- อินเทอร์เฟซ HAL
- อินเทอร์เฟซทั่วไปที่ทั้งไคลเอ็นต์และบริการ HAL ใช้ในการสื่อสาร
- บริการ HAL
โค้ดเฉพาะฮาร์ดแวร์ เช่น โค้ดที่สื่อสารกับกล้องของอุปกรณ์ เฉพาะของคุณ คุณต้องใช้ HAL ที่จำเป็นทั้งหมดซึ่งระบุไว้ใน เมทริกซ์ความเข้ากันได้สำหรับรุ่นที่คุณกำหนดเป้าหมายในพาร์ติชันของผู้ให้บริการ ดูข้อมูลเพิ่มเติมเกี่ยวกับตารางความเข้ากันได้ได้ที่ตารางความเข้ากันได้
นอกจากนี้ คุณยังสร้างอินเทอร์เฟซ HAL ใหม่หรือขยายอินเทอร์เฟซของ HAL เพื่อ รองรับความสามารถเฉพาะของฮาร์ดแวร์ได้ด้วย
- ภาษาที่ใช้สื่อสารข้อมูลระหว่างคอมโพเนนต์ของฮาร์ดแวร์ (HIDL)
ภาษาที่ใช้กำหนดอินเทอร์เฟซในลักษณะที่ไม่ขึ้นอยู่กับ ภาษาโปรแกรมที่ใช้ HIDL ช่วยให้การสื่อสารระหว่าง ไคลเอ็นต์ HAL และบริการ HAL เป็นไปได้
- HAL ของกระบวนการเดียวกัน (SP)
ชุด HAL ที่ห่อหุ้มไว้แบบจำกัด Google เป็นผู้ควบคุมการเป็นสมาชิกในชุดข้อมูล HAL ของ SP มีดังนี้
- HAL ของ Stable C mapper 5
- OpenGL
- Vulkan
- android.hidl.memory@1.0 (จัดทำโดยระบบ Android ซึ่งจะมีการห่อหุ้มเสมอ)
- android.hardware.renderscript@1.0
- HAL ที่ห่อหุ้ม
บริการ HAL ที่สร้างขึ้นก่อน Android 8 แต่มีการห่อหุ้มใน AIDL หรือ HIDL Wrapper เพื่อให้ทำงานกับ Android 8 ขึ้นไปได้
สิ่งต่อไปที่ควรทำ
- หากต้องการดูวิธีใช้บริการ HAL โปรดดูAIDL สำหรับ HAL
- หากต้องการดูวิธีสร้างหรือขยาย HAL ที่มีอยู่ โปรดดู อินเทอร์เฟซแบบขยายที่แนบ