Bios工作內容以Q&A的方式來說明,提供有志於x86韌體發展的朋友了解
1. Bios RD工作是寫x86組合語言嗎?
A: 是C語言。 現在IC高度競爭的年代,也是Time to Market的年代。大家求的就是快、跟易於維護的程式。 所以晶片廠商提供 C 的Compiler環境是必要的, 如果連C都不支援,相信這樣的晶片應該沒人會用。因此在2002年Intel release EFI這個以C為架構的Open source系統後,現在幾乎所有的個人電腦或手機(Iphone)的firmware interface都已經是UEFI (Unified Extensible Firmware Interface)了。下圖是傳統Bios和UEFI Bios比較,UEFI他有現代作業系統的架構,所有控制硬體的方法都是透過呼叫protocol(driver), 而非透過軟體中斷
2. 既然是UEFI 那為什麼舊有的裝置(PCI 卡)還可以使用,連DOS這個作業系統都還能用?
A: 為了要相容過去舊有的架構,UEFI 有CSM這個模組。基本上就是靠它來模擬 Legacy Bios的行為。
3. Bios只是個OS的boot loader嗎? boot loader為什麼需要這麼多工程師
A: Bios主要是OS的boot loader沒錯, 但是x86是個非雜龐大的系統,硬體管理/初始化/設定中斷向量表以及和OS溝通跟硬體錯誤處理都是大學問。再加上x86是採用PCI架構所以有相當彈性的硬體擴充能力,因此有大量的外部裝置,內部也相當複雜,需要很多人來維護這個系統和debug。
4. 當Bios工程師需要從哪裡入門?
A: Bios RD要讀的spec相當多,入門課就是PCI spec, 再來就是搭配UEFI code來看UEFI架構Spec,以及Intel Architectures
Software Developer’s Manual,這些大致上看過後,可以依照自己的興趣去study 南橋晶片上的控制器如 AHCI / XHCI/ LAN...等等,最後還有一份spec比較進階的就是 ACPI spec,用來定義OS和Hardware之間的介面。這些Spec需要反覆的熟讀,我自己也是只了解一部分。
Software Developer’s Manual,這些大致上看過後,可以依照自己的興趣去study 南橋晶片上的控制器如 AHCI / XHCI/ LAN...等等,最後還有一份spec比較進階的就是 ACPI spec,用來定義OS和Hardware之間的介面。這些Spec需要反覆的熟讀,我自己也是只了解一部分。
沒有留言:
張貼留言