2
เครื่องมือหรือวิธีการที่ดีในการทำความเข้าใจโครงสร้างของ bootloader?
ฉันเพิ่งค้นพบสาเหตุของข้อผิดพลาดที่น่ารังเกียจที่ฉันทำงานกับ Atmel AT91SAM9G20 SBC ที่ใช้U-bootซึ่งเป็น bootloader โอเพนซอร์ซ หลักของปัญหาคือ U-boot คาดหวังว่าฮาร์ดแวร์จะได้รับการกำหนดค่าแตกต่างจากที่ฉันสร้างขึ้นดังนั้นอุปกรณ์ลงทะเบียนบางตัวจึงถูกตั้งค่าผิดพลาด ตอนนี้ฉันพบปัญหาแล้วฉันต้องบิด U-boot เพื่อกำหนดค่าการลงทะเบียนอย่างถูกต้อง ฉันสามารถทำสิ่งนี้สุ่มสี่สุ่มห้าได้โดยการเพิ่มโค้ดสองสามบรรทัดในตอนท้ายของโปรแกรม สิ่งนี้นำมาสู่คำถามของฉัน: ฉันจะทราบได้อย่างไรว่า U-boot ทำงานได้อย่างมีประสิทธิภาพมากกว่าการเริ่มต้นที่ main () และอ่านเส้นทางโค้ดที่เป็นไปได้ทั้งหมดในไฟล์ทั้งหมดหรือไม่ ฉันลอง grepping ในไฟล์และดูรหัสใกล้ตัวระบุที่เกี่ยวข้อง สิ่งนี้พิสูจน์แล้วว่าไม่มีประสิทธิภาพ ดูเหมือนว่ารหัสส่วนใหญ่เป็นไดรเวอร์สำหรับระบบย่อยที่ฉันไม่สนใจ ฉันเข้าใจจริง ๆ แล้วว่า bootloader ทำงานได้ค่อนข้างดีในตอนนี้ แต่ฉันหวังว่าจะมีวิธีที่ดีกว่าวิธีที่ไร้เดียงสาของฉัน