กระบวนการบูตคือชุดการดำเนินการที่เริ่มต้นจาก 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 ไปยังอิมเมจการบูตเคอร์เนล และลิงก์ไลบรารีทั้งหมดที่เกี่ยวข้องแบบคงที่