จัดการเวลาในการบูต

กระบวนการบูตคือชุดการดำเนินการที่เริ่มต้นจาก 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

  • เซิร์ฟเวอร์ระบบ เริ่มเฉพาะบริการของระบบที่ใช้

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