แพลตฟอร์มอ้างอิง

ด้วยผลิตภัณฑ์ใหม่ที่ชื่อว่า trout ตอนนี้ Android Automotive (AAOS) ให้การสนับสนุนการปรับใช้ในฐานะเกสต์เวอร์ชวลแมชชีน (VM) ในสภาพแวดล้อมที่เข้ากันได้กับมาตรฐาน VirtIO trout ใช้แพลตฟอร์มอ้างอิงเสมือนของ ปลาหมึก และพร้อมใช้งานเป็นการกำหนดค่าอุปกรณ์ trout สามารถดูซอร์สโค้ดของ userspace ได้ที่ device/google/trout ตารางด้านล่างอธิบายเทคโนโลยีที่ใช้ในการจำลองระบบย่อยแต่ละระบบใน trout

ลักษณะเฉพาะ เทคโนโลยี
การควบคุมเสียงHAL vsock/gRPC
เครื่องเสียง HAL virtio-snd
บลูทู ธ virtio-console
Dumpstate HAL vsock/gRPC
ระบบขยายภาพ (EVS) virtio-video
โหมดโรงรถ vsock/gRPC
กราฟิก virtio-gpu
ระบบดาวเทียมนำทางทั่วโลก (GNSS) virtio-console
เซ็นเซอร์ HAL 2.0 virtio-scmi and IIO
อินพุตหน้าจอสัมผัส virtio-input
รถHAL vsock/gRPC

ขยายปลาเทราท์

trout สามารถใช้เป็นจุดเริ่มต้นในการสร้างเป้าหมาย Android In-Vehicle Infotainment (IVI) ใหม่ โครงสร้างพื้นฐานของบิลด์ได้รับการออกแบบให้ขยายและปรับแต่งได้ ตัวอย่างเช่น:

# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)

# Customize HALs as needed
LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service
LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl

# Configure SELinux policy
BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem

# Configure properties
LOCAL_DUMPSTATE_PROPERTIES := \
    ro.vendor.dumpstate.server.cid=22 \
    ro.vendor.dumpstate.server.port=406 \
    ro.vendor.helpersystem.log_loc=/data/dumpstate

[... and more as needed ...]

Android HAL หลายตัวสามารถแทนที่ด้วยการใช้งานแบบกำหนดเองหรือการใช้งานเริ่มต้นที่รักษาไว้ แต่พารามิเตอร์การกำหนดค่าบางอย่างปรับเพื่อสร้างการสื่อสารระหว่าง VM ที่เหมาะสมในสภาพแวดล้อมเป้าหมาย HAL เหล่านี้ (รวมถึง HAL ของรถยนต์, Audio Control HAL และ Dumpstate HAL) ถูกใช้งานโดยใช้อินเทอร์เฟซ gRPC ที่ได้รับการสนับสนุนโดยการเชื่อมต่อ vsock ระหว่างแขก AAOS และระบบโฮสต์ที่มีการใช้งานคุณสมบัติพื้นฐาน ต้องกำหนดค่าเหล่านี้โดยการจัดหาพารามิเตอร์การเชื่อมต่อ vsock ที่เหมาะสมเป็นคุณสมบัติของผู้ขาย

การสร้างปลาเทราท์

รวบรวม userspace

ในการรวบรวม userspace:

  1. ดาวน์โหลดแผนผังแหล่งที่มาของ Android:
    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. สร้างสิ่งแวดล้อม:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

การสร้างเคอร์เนล

สำหรับ trout 1.0 เคอร์เนล codebase มีให้ใน AOSP เคอร์เนลของ trout ประกอบด้วยโค้ดเดียวกันกับอัปสตรีม ACK 5.10 โดยมีการเพิ่มโมดูลเฉพาะสำหรับ trout สำหรับระบบย่อย VirtIO

  1. ในการโคลนเคอร์เนลให้รัน:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. ในการสร้างเคอร์เนลสำหรับสภาพแวดล้อม OpenSynergy ให้รัน:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

การปฏิบัติตาม

เมื่อ AAOS ทำงานเป็น Guest VM เป้าหมายของเราคือการปรับใช้ Android ที่เข้ากันได้จากมุมมองของเฟรมเวิร์ก ปัญหาด้านโฮสต์คือขอบเขตของการนำไปใช้งานแต่ละครั้งและอยู่นอกขอบเขตของ trout 1.0

ใน trout 1.0 ยังมีปัญหา CTS อยู่หลายประเด็น เป็นที่ทราบกันว่าโมดูล CTS ต่อไปนี้รวมถึงความล้มเหลวในการทดสอบ:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostกรณีทดสอบ
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoice การโต้ตอบกรณีทดสอบ
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

เป็นที่ทราบกันว่าพื้นที่ CTS-V ต่อไปนี้รวมถึงความล้มเหลวในการทดสอบ:

การทดสอบตัวเปิดรถ
การทดสอบผู้ลงโฆษณา Bluetooth Low Energy (BLE)
ตัวตรวจสอบคุณภาพวิดีโอสตรีมมิ่ง
การทดสอบอุปกรณ์ Bluetooth HID
การทดสอบไมโครโฟนอัลตราซาวนด์ไฮไฟ
การทดสอบลำโพงอัลตราซาวนด์ไฮไฟ
ปลดล็อกอุปกรณ์ที่จำเป็นการทดสอบ
การทดสอบการค้นพบเซนเซอร์แบบไดนามิก
การทดสอบเซ็นเซอร์ปิดร่างกาย
การทดสอบการเคลื่อนไหวที่สำคัญ
การทดสอบการแจ้งเตือนการกำหนดเส้นทางเอาต์พุตเสียง
คำขอเครือข่ายหรือการทดสอบข้อเสนอแนะ

บันทึกประจำรุ่น

trout 1.0 มีปัญหาที่ทราบต่อไปนี้:

  • ผู้ใช้สร้าง trout ไม่พร้อมใช้งาน ระบบถูกสร้างขึ้นเป็น -userdebug ซึ่งอาจส่งผลต่อการทดสอบ CTS บางอย่าง
  • ไม่รองรับการเข้าถึง TrustZone สำหรับ Android ใน trout 1.0
  • ไม่รองรับ Android Verified Boot (AVB)
  • เครื่องเร่งประสาทไม่ได้สัมผัสกับ NNAPI ใน trout 1.0
  • การจำลองเสมือนของ Wi-Fi ไม่พร้อมใช้งาน โดยมีการใช้งานบางอย่างที่เสนอการสนับสนุนที่จำกัดสำหรับช่องสัญญาณ `virtio-net`
  • ในบางกรณี การถ่ายโอนไฟล์ขนาดใหญ่จากหรือไปยัง Android ผ่าน Android Debug Bridge (ADB) อาจทำให้ระบบหยุดทำงาน
  • ในบางกรณี แอป SMS อาจหยุดการซิงโครไนซ์กับโทรศัพท์บลูทูธที่จับคู่
  • การฉีดเหตุการณ์ VHAL อาจไม่ทำงานกับเซ็นเซอร์บางตัว
  • อนุกรม ADB ของ SoC พื้นฐานจะไม่ถูกส่งต่อไปยัง Android เนื่องจากเป็นอนุกรม ADB ของผู้เยี่ยมชม
  • ในการใช้งานบางอย่าง อีเธอร์เน็ตอาจไม่พร้อมใช้งานสำหรับโฮสต์สำหรับการเชื่อมต่อเครือข่าย

สำหรับรายละเอียดเพิ่มเติม โปรดดูบันทึกประจำรุ่นของพันธมิตรสำหรับการใช้งานเฉพาะของ trout

,

ด้วยผลิตภัณฑ์ใหม่ที่ชื่อว่า trout ตอนนี้ Android Automotive (AAOS) ให้การสนับสนุนการปรับใช้ในฐานะเกสต์เวอร์ชวลแมชชีน (VM) ในสภาพแวดล้อมที่เข้ากันได้กับมาตรฐาน VirtIO trout ใช้แพลตฟอร์มอ้างอิงเสมือนของ ปลาหมึก และพร้อมใช้งานเป็นการกำหนดค่าอุปกรณ์ trout สามารถดูซอร์สโค้ดของ userspace ได้ที่ device/google/trout ตารางด้านล่างอธิบายเทคโนโลยีที่ใช้ในการจำลองระบบย่อยแต่ละระบบใน trout

ลักษณะเฉพาะ เทคโนโลยี
การควบคุมเสียงHAL vsock/gRPC
เครื่องเสียง HAL virtio-snd
บลูทู ธ virtio-console
Dumpstate HAL vsock/gRPC
ระบบขยายภาพ (EVS) virtio-video
โหมดโรงรถ vsock/gRPC
กราฟิก virtio-gpu
ระบบดาวเทียมนำทางทั่วโลก (GNSS) virtio-console
เซ็นเซอร์ HAL 2.0 virtio-scmi and IIO
อินพุตหน้าจอสัมผัส virtio-input
รถHAL vsock/gRPC

ขยายปลาเทราท์

trout สามารถใช้เป็นจุดเริ่มต้นในการสร้างเป้าหมาย Android In-Vehicle Infotainment (IVI) ใหม่ โครงสร้างพื้นฐานของบิลด์ได้รับการออกแบบให้ขยายและปรับแต่งได้ ตัวอย่างเช่น:

# Inherit trout-arm64 default values and settings
$(call inherit-product, device/google/trout/aosp_trout_arm64.mk)

# Customize HALs as needed
LOCAL_VHAL_PRODUCT_PACKAGE := vendor.oem.vhal@2.0-service
LOCAL_AUDIO_PRODUCT_PACKAGE := vendor.oem.audio@6.0-impl

# Configure SELinux policy
BOARD_SEPOLICY_DIRS += device/oem/car/sepolicy/vendor/oem

# Configure properties
LOCAL_DUMPSTATE_PROPERTIES := \
    ro.vendor.dumpstate.server.cid=22 \
    ro.vendor.dumpstate.server.port=406 \
    ro.vendor.helpersystem.log_loc=/data/dumpstate

[... and more as needed ...]

Android HAL หลายตัวสามารถแทนที่ด้วยการใช้งานแบบกำหนดเองหรือการใช้งานเริ่มต้นที่รักษาไว้ แต่พารามิเตอร์การกำหนดค่าบางอย่างปรับเพื่อสร้างการสื่อสารระหว่าง VM ที่เหมาะสมในสภาพแวดล้อมเป้าหมาย HAL เหล่านี้ (รวมถึง HAL ของรถยนต์, Audio Control HAL และ Dumpstate HAL) ถูกใช้งานโดยใช้อินเทอร์เฟซ gRPC ที่ได้รับการสนับสนุนโดยการเชื่อมต่อ vsock ระหว่างแขก AAOS และระบบโฮสต์ที่มีการใช้งานคุณสมบัติพื้นฐาน ต้องกำหนดค่าเหล่านี้โดยการจัดหาพารามิเตอร์การเชื่อมต่อ vsock ที่เหมาะสมเป็นคุณสมบัติของผู้ขาย

การสร้างปลาเทราท์

รวบรวม userspace

ในการรวบรวม userspace:

  1. ดาวน์โหลดแผนผังแหล่งที่มาของ Android:
    repo init -u https://android.googlesource.com/platform/manifest -b master
    repo sync -j8
    
  2. สร้างสิ่งแวดล้อม:
    source build/envsetup.sh
    lunch aosp_trout_arm64-userdebug
    make -j24
    

การสร้างเคอร์เนล

สำหรับ trout 1.0 เคอร์เนล codebase มีให้ใน AOSP เคอร์เนลของ trout ประกอบด้วยโค้ดเดียวกันกับอัปสตรีม ACK 5.10 โดยมีการเพิ่มโมดูลเฉพาะสำหรับ trout สำหรับระบบย่อย VirtIO

  1. ในการโคลนเคอร์เนลให้รัน:
    repo init https://android.googlesource.com/kernel/manifest -b trout-android12-5.10 && repo sync
    
  2. ในการสร้างเคอร์เนลสำหรับสภาพแวดล้อม OpenSynergy ให้รัน:
    BUILD_CONFIG=common-modules/virtual-device/build.config.trout.coqos build/build.sh
    

การปฏิบัติตาม

เมื่อ AAOS ทำงานเป็น Guest VM เป้าหมายของเราคือการปรับใช้ Android ที่เข้ากันได้จากมุมมองของเฟรมเวิร์ก ปัญหาด้านโฮสต์คือขอบเขตของการนำไปใช้งานแต่ละครั้งและอยู่นอกขอบเขตของ trout 1.0

ใน trout 1.0 ยังมีปัญหา CTS อยู่หลายประเด็น เป็นที่ทราบกันว่าโมดูล CTS ต่อไปนี้รวมถึงความล้มเหลวในการทดสอบ:

CtsStagedInstallHostTestCases
CtsRollbackManagerHostTestCases
CtsVideoTestCases
CtsHostsideNetworkTests
CtsActivityManagerBackgroundActivityTestCases
CtsAdbHostTestCases
CtsNativeHardwareTestCases
CtsContentTestCases
CtsCarHostกรณีทดสอบ
CtsOsTestCases
CtsStatsdHostTestCases
CtsVoice การโต้ตอบกรณีทดสอบ
CtsViewTestCases
CtsCameraTestCases
CtsLocationGnssTestCases
CtsGraphicsTestCases
CtsIncidentHostTestCases
CtsInstallHostTestCases
CtsNativeVerifiedBootTestCases
CtsNetTestCases
CtsWindowManagerDeviceTestCases
CtsMediaStressTestCases
CtsAppTestCases
CtsUsbTests
CtsAutoFillServiceTestCases
CtsDisplayTestCases
CtsMediaTestCases
CtsDeqpTestCases
CtsDumpsysHostTestCases
CtsOpenGLTestCasesCtsLibcoreTestCases
CtsSecurityHostTestCases
CtsInputMethodTestCases
CtsStatsdAtomHostTestCases
CtsPermission4TestCases
CtsNNAPIBenchmarkTestCases
CtsSimpleperfTestCases
CtsAccessibilityTestCases
CtsAppSecurityHostTestCases
CtsKeystoreTestCases

เป็นที่ทราบกันว่าพื้นที่ CTS-V ต่อไปนี้รวมถึงความล้มเหลวในการทดสอบ:

การทดสอบตัวเปิดรถ
การทดสอบผู้ลงโฆษณา Bluetooth Low Energy (BLE)
ตัวตรวจสอบคุณภาพวิดีโอสตรีมมิ่ง
การทดสอบอุปกรณ์ Bluetooth HID
การทดสอบไมโครโฟนอัลตราซาวนด์ไฮไฟ
การทดสอบลำโพงอัลตราซาวนด์ไฮไฟ
ปลดล็อกอุปกรณ์ที่จำเป็นการทดสอบ
การทดสอบการค้นพบเซนเซอร์แบบไดนามิก
การทดสอบเซ็นเซอร์ปิดร่างกาย
การทดสอบการเคลื่อนไหวที่สำคัญ
การทดสอบการแจ้งเตือนการกำหนดเส้นทางเอาต์พุตเสียง
คำขอเครือข่ายหรือการทดสอบข้อเสนอแนะ

บันทึกประจำรุ่น

trout 1.0 มีปัญหาที่ทราบต่อไปนี้:

  • ผู้ใช้สร้าง trout ไม่พร้อมใช้งาน ระบบถูกสร้างขึ้นเป็น -userdebug ซึ่งอาจส่งผลต่อการทดสอบ CTS บางอย่าง
  • ไม่รองรับการเข้าถึง TrustZone สำหรับ Android ใน trout 1.0
  • ไม่รองรับ Android Verified Boot (AVB)
  • เครื่องเร่งประสาทไม่ได้สัมผัสกับ NNAPI ใน trout 1.0
  • การจำลองเสมือนของ Wi-Fi ไม่พร้อมใช้งาน โดยมีการใช้งานบางอย่างที่เสนอการสนับสนุนที่จำกัดสำหรับช่องสัญญาณ `virtio-net`
  • ในบางกรณี การถ่ายโอนไฟล์ขนาดใหญ่จากหรือไปยัง Android ผ่าน Android Debug Bridge (ADB) อาจทำให้ระบบหยุดทำงาน
  • ในบางกรณี แอป SMS อาจหยุดการซิงโครไนซ์กับโทรศัพท์บลูทูธที่จับคู่
  • การฉีดเหตุการณ์ VHAL อาจไม่ทำงานกับเซ็นเซอร์บางตัว
  • อนุกรม ADB ของ SoC พื้นฐานจะไม่ถูกส่งต่อไปยัง Android เนื่องจากเป็นอนุกรม ADB ของผู้เยี่ยมชม
  • ในการใช้งานบางอย่าง อีเธอร์เน็ตอาจไม่พร้อมใช้งานสำหรับโฮสต์สำหรับการเชื่อมต่อเครือข่าย

สำหรับรายละเอียดเพิ่มเติม โปรดดูบันทึกประจำรุ่นของพันธมิตรสำหรับการใช้งานเฉพาะของ trout