กระบวนการบูตเป็นลูกโซ่ของการดำเนินการที่เริ่มต้นจาก 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
- เฝ้าระวังการดำเนินการบล็อก (บริการเปรียบเทียบกับการเรียกใช้คำสั่ง)
- เริ่มต้นเฉพาะสิ่งที่ใช้
- การตั้งค่าลำดับความสำคัญที่ถูกต้องสำหรับบริการ
ตัวอ่อน. การเพิ่มประสิทธิภาพการโหลดคลาสล่วงหน้า (ระบุรายการคลาสที่จะโหลด)
ผู้จัดการแพ็คเกจ
เพิ่มประสิทธิภาพรูปภาพผลิตภัณฑ์ให้รวมเฉพาะ APK ที่ใช้งานอยู่
เซิร์ฟเวอร์ระบบ เริ่มเฉพาะบริการระบบที่ใช้งานเท่านั้น
สำหรับความช่วยเหลือในการเพิ่มประสิทธิภาพ 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 ไปยังอิมเมจสำหรับบูตเคอร์เนล และลิงก์ไลบรารีที่ขึ้นต่อกันทั้งหมดแบบคงที่