กระบวนการเปิดเครื่องเป็นห่วงโซ่การดำเนินการที่เริ่มจาก ROM สำหรับการเปิดเครื่อง ตามด้วย Bootloader, เคอร์เนล, Init, Zygote และเซิร์ฟเวอร์ระบบ (ตัวหนาหมายถึงขั้นตอนการเปิดเครื่องเฉพาะ Android) ในกระบวนการบูตเฉพาะยานยนต์ บริการเริ่มต้น เช่น กล้องมองหลัง (RVC) ต้องเริ่มทำงานระหว่างการบูตเคอร์เนล
สั่งซื้อ | ส่วนประกอบ | Android | ยานยนต์ Android |
---|---|---|---|
1 | ROM สำหรับการเปิดเครื่อง | โหลดระยะแรกของบูตโหลดเดอร์ลงใน RAM ภายใน | |
2 | Bootloader | เริ่มต้นหน่วยความจำ ตรวจสอบความปลอดภัย และโหลดเคอร์เนล | |
3 | เคอร์เนล | ตั้งค่าตัวควบคุมการขัดจังหวะ การป้องกันหน่วยความจำ แคช และการจัดตารางเวลา เปิดกระบวนการในพื้นที่ทำงานของผู้ใช้ | กระบวนการกล้องมองหลัง (RVC) เริ่มต้นตั้งแต่เนิ่นๆ ในการเปิดเครื่องเคอร์เนล หลังจากดำเนินการเสร็จแล้ว GPIO จาก VMCU จะทริกเกอร์ RVC ให้แสดงบนจอแสดงผล |
4 | เริ่มขั้นตอน | แยกวิเคราะห์สคริปต์ init.rc ใส่ระบบไฟล์ เปิด Zygote เปิดกระบวนการของระบบ |
HAL ของยานพาหนะ (VHAL) จะเริ่มทำงานในช่วงระยะเริ่มต้นโดยเป็นส่วนหนึ่งของบริการหลัก ย้ายไปยังสถานะก่อนหน้าได้ โดยขึ้นอยู่กับ ServiceManager และต้องนำการพึ่งพาไลบรารีที่แชร์ออก (เช่น init) |
5 | ไซโกต | ตั้งค่ารันไทม์ Java และหน่วยความจําเริ่มต้นสําหรับออบเจ็กต์ Android | |
6 | เซิร์ฟเวอร์ระบบ | คอมโพเนนต์ Java แรกในระบบจะเริ่มต้นบริการหลักของ Android | CarService จะเริ่มขึ้นหลังจากที่บริการทั้งหมดของระบบเริ่มทำงานแล้ว |
เพิ่มประสิทธิภาพเวลาในการบูต
หากต้องการปรับปรุงเวลาในการบูตในระบบ ให้ใช้หลักเกณฑ์ต่อไปนี้
-
เคอร์เนล โหลดเฉพาะโมดูลที่ใช้งานอยู่และเริ่มต้นเฉพาะคอมโพเนนต์ฮาร์ดแวร์ที่ใช้งาน
-
init.rc
- ตรวจสอบการดำเนินการที่บล็อก (บริการเทียบกับคําสั่งเรียกใช้)
- เริ่มเฉพาะรายการที่ใช้
- การตั้งค่าลำดับความสำคัญที่เหมาะสมสำหรับบริการ
-
ไซโกต การเพิ่มประสิทธิภาพการโหลดล่วงหน้าของคลาส (ระบุรายการคลาสที่จะโหลด)
-
Package Manager
-
เพิ่มประสิทธิภาพรูปภาพผลิตภัณฑ์ให้รวมเฉพาะ APK ที่ใช้อยู่
-
-
เซิร์ฟเวอร์ระบบ เริ่มต้นเฉพาะบริการของระบบที่ใช้
Google มีเครื่องมือต่อไปนี้เพื่อช่วยในการเพิ่มประสิทธิภาพ
-
ใช้
packages/services/Car/tools/bootanalyze/bootanalyze.py
เพื่อวิเคราะห์บันทึก logcat และ dmesg -
ใช้
packages/services/Car/tools/bootio/
เพื่อบันทึก I/O สําหรับกระบวนการระหว่างการบูต คุณต้องคอมไพล์เคอร์เนลด้วย Flag ที่เฉพาะเจาะจง (ดูไฟล์README.md
)
เริ่มต้นบริการตั้งแต่เนิ่นๆ
ในลำดับการบูต บริการบางอย่างอาจเริ่มทำงานก่อนที่ Android จะเริ่มบูต
กล้องมองหลัง
กล้องมองหลัง (RVC) ควรจัดการในเคอร์เนล VMCU จะแจ้งให้กระบวนการเคอร์เนลเนทีฟทราบเมื่อรถเปลี่ยนเป็นเกียร์ถอยหลัง จากนั้นกระบวนการเคอร์เนลเนทีฟจะแสดงภาพ RVC บนจอแสดงผล HAL ของยานพาหนะจะควบคุม RVC ได้โดยใช้ hardware/libhardware/include/hardware/vehicle_camera.h
HAL ยานพาหนะ (VHAL)
ระบบบางอย่างอาจต้องอ่านและบัฟเฟอร์ข้อมูล CAN (เช่น ความเร็วของรถ สถานะเกียร์) ในช่วงเริ่มต้นของลำดับการบูตขณะรอให้บริการพื้นที่ผู้ใช้เริ่มทำงาน (ซึ่งจะเกิดขึ้นในลำดับการบูตในภายหลัง) สถานการณ์นี้กำหนดให้ VNS และ HAL รวมถึงตัวควบคุม CAN ต้องเริ่มทำงานตั้งแต่เนิ่นๆ โดยปกติแล้วภายในไม่กี่วินาที
-
ระบบที่สามารถต่อเชื่อม
/system
ได้อย่างรวดเร็วสามารถเปิดตัวตัวจัดการบริการจากนั้นจึง VNS ได้ตั้งแต่เนิ่นๆ -
ระบบที่ไม่สามารถต่อเชื่อม
/system
ได้อย่างรวดเร็วต้องย้ายทั้งตัวจัดการบริการและ VNS ไปยังอิมเมจการบูตเคอร์เนล และลิงก์ไลบรารีที่เกี่ยวข้องทั้งหมดแบบคงที่