Bootloader
Last updated
Last updated
Assoc. Prof. Wiroon Sriborrirux, Founder of Advance Innovation Center (AIC) and Bangsaen Design House (BDH), Electrical Engineering Department, Faculty of Engineering, Burapha University
bootloader เป็นส่วนสำคัญอีกส่วนหนึ่งของระบบสมองกลฝังตัวที่มีหน้าที่ในการเตรียมการให้ระบบฮาร์ดแวร์พื้นฐาน (Hardware Initialization) เช่น หน่วยประมวลผลกลาง (CPU) หน่วยความจำ (DRAM) และ MMC Controller ให้พร้อมที่จะทำงานได้ ในขั้นตอนต่อมาก็จะทำการโหลด Kernel image (bzImage, zImage) ที่ถูกบีบอัดและเก็บอยู่ในอุปกรณ์จัดเก็บข้อมูล (เช่น MMC/SD card, NAND Flash, USB Storage หรือผ่านระบบเครือข่ายด้วยโปรโตคอล tftp NFS เป็นต้น) หลังจากนั้นก็จะทำการแตกโปรแกรมไบนารีที่ถูกบรรจุอยู่ภายใน Kernel image ที่ถูกบีบอัดนั้นอยู่ เพื่อนำไปโหลดขึ้นสู่หน่วยความจำภายใน (RAM) เพื่อติดต่อกับอุปกรณ์อื่นๆ เช่น พอร์ต Ethernet หรือ พอร์ต USB เป็นต้น ในระหว่างการทำงานของ Bootloader นั้นสามารถที่จะเข้าสู่หน้าต่างคอนโซล (console) เพื่อเรียกใช้ชุดคำสั่งที่เตรียมไว้ให้ เช่นการดาวน์โหลดข้อมูลผ่านระบบเครือข่ายหรือจากอุปกรณ์จัดเก็บข้อมูลทางด้านตรวจสอบสถานะของหน่วยความจำ ตรวจสอบสถานะการทำงานของฮาร์ดแวร์ภายใน เป็นต้น
เพื่อให้นักพัฒนาได้เห็นภาพมากขึ้นจึงขอสรุปขั้นตอนการทำงานของ bootloader ตั้งแต่เริ่มบูทเข้าระบบของบอร์ดสมองกลฝังตัวได้ดังนี้ (ดังแสดงในรูปที่ 3.12 และ 3.13)
หน่วยประมวลผลกลางจะเริ่มอ่านที่ตำแหน่งของหน่วยความจำ ROM ที่ได้ถูกกำหนดไว้ และดำเนินการทำตามชุดคำสั่งภายในโค้ดที่ถูกเก็บอยู่ภายใน
เริ่มต้นเตรียมระบบฮาร์ดแวร์พื้นฐานสำคัญ เช่น หน่วยประมวลผลกลาง ส่วนควบคุมหน่วยความจำ (SDRAM Controller) ส่วนควบคุมตัวบันทึกข้อมูล (MMC Controller) ส่วนควบคุมอินพุท/เอาท์พุท (I/O Controllers) และ ส่วนควบคุมการแสดงผล (Graphics Controllers) เป็นต้น
เริ่มต้นเตรียมระบบหน่วยความจำ SDRAM โดยการจัดสรรพื้นที่ภายในหน่วยความจำให้กับฟังก์ชันที่จะใช้ควบคุมฮาร์ดแวร์ของแต่ละส่วน และจัดสรรพื้นที่ให้กับตัวเคอร์เนลที่ถูกเก็บอยู่ภายในอุปกรณ์บันทึกข้อมูล
เมื่อเคอร์เนลได้ถูกโหลดขึ้นหน่วยความจำ SDRAM แล้ว จะทำการติดต่อและตรวจสอบสถานะการทำงานของฮาร์ดแวร์ส่วนที่เหลือทั้งหมดเพื่อเตรียมทำการโหลดระบบปฏิบัติการในส่วนที่เหลือที่เรียกว่า root file system ซึ่งบรรจุสคริปท์ ไลบรารี และโปรแกรมต่างๆเอาไว้
เมื่อ root file system ถูกโหลดได้สำเร็จ ระบบปฏิบัติการก็จะเรียกโปรแกรมระบบพื้นฐานทั้งหมดที่เกี่ยวกับการจัดการระบบไฟล์ (file system) โปรแกรมจัดการโปรเซส (process) โปรแกรมจัดการลำดับการทำงานของโปรเซส (process scheduling) และเตรียมระบบสำหรับผู้ใช้เพื่อสามารถใช้โปรแกรมประยุกต์ภายในระบบปฏิบัติการสมองกลฝังตัว
ขั้นตอนการทำงานเริ่มต้นของลีนุกซ์คอร์เนล (Kernel Initialisation)
ตัวอย่างขั้นตอนการทำงานจริงของ bootloader บนบอร์ดสมองกลฝังตัวที่ใช้ OMAP3 SoC ของบริษัท TI ดังแสดงในรูปข้างล่าง