ขั้นตอนการทำงานของโปรแกรมยูบูต (u-boot execution flow)
หลังจากที่ได้ทำความเข้าใจกับขั้นตอนการสร้างยูบูต (compile-time) แล้ว เราลองมาทำความเข้าใจกับขั้นตอนการทำงานของโปรแกรมยูบูต (run-time) กันต่อเลยดีกว่า โดยทั่วไปสามารถแบ่งขั้นตอนการทำงานของโปรแกรมยูบูต ได้เป็นสองรูปแบบ คือ แบบมีการย้ายตำแหน่งของยูบูต (Relocation) กับแบบไม่มีการย้ายตำแหน่งของยูบูต (Non relocation) ซึ่งมีขั้นตอนโดยรวมแทบจะเหมือนกันเว้นแต่ส่วนการย้ายยูบูตไบนารี่โค้ด แม้ว่าในโค้ดเวอร์ชั่นปัจจุบัน (2016.xx) จะใช้การย้ายตำแหน่งของยูบูต (Relocation) เป็นส่วนใหญ่ แต่เรายังสามารถพบลักษณะการบูตโดยไม่มีการย้ายตำแหน่งของยูบูต ในระบบขนาดเล็ก เนื่องการทำงานของโค้ดส่วนนี้ มีความน่าสนใจศึกษาอยู่ ในบทความนี้จึงขอแบ่งรูปแบบของการทำงานโดยใช้เรื่องนี้เป็นหลักนะครับ ก่อนจะทำความเข้าใจการทำงานทั้งหมด ขออธิบายเรื่องการย้ายตำแหน่งยูบูตให้เข้าใจกันก่อน