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

กระบวนการบูตเป็นลูกโซ่ของการดำเนินการที่เริ่มต้นจาก ROM สำหรับบูต ตามด้วยโปรแกรมโหลดบูต, เคอร์เนล, Init , Zygote และ เซิร์ฟเวอร์ระบบ (ตัวหนาหมายถึงกระบวนการบูตเฉพาะของ Android) ในกระบวนการบู๊ตเฉพาะยานยนต์ การบริการเบื้องต้น เช่น กล้องมองหลัง (RVC) จะต้องเริ่มต้นในระหว่างการบู๊ตเคอร์เนล

คำสั่ง ส่วนประกอบ หุ่นยนต์ หุ่นยนต์ยานยนต์
1 บูตรอม โหลดขั้นตอนแรกของบูตโหลดเดอร์ลงใน RAM ภายใน
2 บูตโหลดเดอร์ เริ่มต้นความทรงจำ ตรวจสอบความปลอดภัย และโหลดเคอร์เนล
3 เคอร์เนล ตั้งค่าตัวควบคุมการขัดจังหวะ การป้องกันหน่วยความจำ แคช และการกำหนดเวลา เปิดตัวกระบวนการพื้นที่ผู้ใช้ กระบวนการ กล้องมองหลัง (RVC) เริ่มต้นตั้งแต่เนิ่นๆ ในการบูตเคอร์เนล หลังจากกระบวนการสิ้นสุดลง GPIO จาก VMCU จะทริกเกอร์ RVC ให้แสดงบนจอแสดงผล
4 เริ่มต้นกระบวนการ แยกวิเคราะห์สคริปต์ init.rc ติดตั้งระบบไฟล์ เปิด Zygote เปิดกระบวนการของระบบ Vehicle HAL (VHAL) เริ่มต้นในช่วงเริ่มต้นโดยเป็นส่วนหนึ่งของบริการหลัก สามารถย้ายไปยังสถานะก่อนหน้าได้ขึ้นอยู่กับ ServiceManager จำเป็นต้องลบการพึ่งพาไลบรารีที่แบ่งใช้ (เช่น init)
5 ตัวอ่อน ตั้งค่า Java Runtime และหน่วยความจำเริ่มต้นสำหรับออบเจ็กต์ Android
6 เซิร์ฟเวอร์ระบบ คอมโพเนนต์ Java แรกในระบบ เริ่มบริการหลักของ Android CarService จะเริ่มทำงานหลังจากเริ่มให้บริการระบบทั้งหมดแล้ว

ปรับเวลาบูตให้เหมาะสม

เพื่อปรับปรุงเวลาบูตในระบบของคุณ ให้ใช้แนวทางต่อไปนี้:

  • เคอร์เนล โหลดเฉพาะโมดูลที่ใช้งานอยู่และเริ่มต้นเฉพาะส่วนประกอบฮาร์ดแวร์ที่ใช้งานอยู่

  • init.rc

    • เฝ้าระวังการดำเนินการบล็อก (บริการเปรียบเทียบกับการเรียกใช้คำสั่ง)
    • เริ่มต้นเฉพาะสิ่งที่ใช้
    • การตั้งค่าลำดับความสำคัญที่ถูกต้องสำหรับบริการ
  • ตัวอ่อน. การเพิ่มประสิทธิภาพการโหลดคลาสล่วงหน้า (ระบุรายการคลาสที่จะโหลด)

  • ผู้จัดการแพ็คเกจ

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

สำหรับความช่วยเหลือในการเพิ่มประสิทธิภาพ Google มีเครื่องมือดังต่อไปนี้:

  • ใช้ packages/services/Car/tools/bootanalyze/bootanalyze.py เพื่อวิเคราะห์บันทึก logcat และ dmesg

  • ใช้ packages/services/Car/tools/bootio/ เพื่อบันทึก I/O สำหรับกระบวนการระหว่างการบู๊ต คุณต้องคอมไพล์เคอร์เนลด้วยแฟล็กเฉพาะ (อ้างอิงถึงไฟล์ README.md )

เริ่มให้บริการตั้งแต่เนิ่นๆ

ในลำดับการบู๊ต บริการบางอย่างอาจเริ่มทำงานก่อนที่ Android จะเริ่มบู๊ต

กล้องมองหลัง

กล้องมองหลัง (RVC) ควรได้รับการจัดการในเคอร์เนล VMCU จะแจ้งเตือนกระบวนการเคอร์เนลดั้งเดิมเมื่อรถเปลี่ยนเกียร์ถอยหลัง หลังจากนั้นกระบวนการเคอร์เนลดั้งเดิมจะแสดงอิมเมจ RVC บนจอแสดงผล HAL ของยานพาหนะสามารถควบคุม RVC ได้โดยใช้ hardware/libhardware/include/hardware/vehicle_camera.h

ยานพาหนะ HAL (VHAL)

บางระบบอาจจำเป็นต้องอ่านและบัฟเฟอร์ข้อมูล CAN (เช่น ความเร็วของรถ สถานะเกียร์) ในระหว่างขั้นตอนแรกของลำดับการบู๊ต ขณะรอให้บริการพื้นที่ผู้ใช้เริ่มทำงาน (ซึ่งเกิดขึ้นในภายหลังในลำดับการบู๊ต) สถานการณ์นี้ต้องการให้ตัวควบคุม VNS และ HAL และ CAN เริ่มต้นเร็วมาก โดยทั่วไปภายในไม่กี่วินาที

  • ระบบที่สามารถติดตั้ง /system ได้อย่างรวดเร็วสามารถเรียกใช้ service manager จากนั้น VNS ได้เร็ว

  • ระบบที่ไม่สามารถเมานต์ /system ได้อย่างรวดเร็ว จะต้องย้ายทั้งตัวจัดการบริการและ VNS ไปยังอิมเมจสำหรับบูตเคอร์เนล และลิงก์ไลบรารีที่ขึ้นต่อกันทั้งหมดแบบคงที่