Search This Blog

Thursday, April 14, 2011

What is the BIOS?

What is the BIOS?
BIOS - Basic Input/Output System
When user pressed the power button, the main job of BIOS is let platform to enter operating system.

Where is the BIOS?
The BIOS is stored in flash ROM on the mother board. The ROM size is depended on BIOS binary size.

What is the legacy BIOS? What is the EFI BIOS?
The legacy BIOS is written by assembly code.
The EFI(Extensible Firmware Interface) BIOS is written by C code.
The legacy BIOS is replaced by EFI BIOS little by little.
The EFI BIOS is more easy to write for progarmmer.

How to boot to operating system by the EFI BIOS?
The EFI BIOS has four phases to boot to OS.
1. SEC phase: Check security and cache as RAM in order to build the PEI foundation to provide interface
2. PEI phase: CPU/chipset early initial and most important thing is memory sizing then enter DXE IPL.
3. DXE phase: Execute all the driver in order to let system has full function.
4. BDS phase: Connent all boot device and let system boot to be selected boot device.
System Power On -> SEC -> PEI -> DXE -> BDS -> OS

=======================================================================

何謂BIOS?
BIOS - 基本輸入輸出系統
當使用者按下電源鈕之後,讓系統能順利進到OS,並且達到客製化的需求,這就是BIOS的主要職責。

BIOS放在那裡?
BIOS被存放在主機板上的快閃記憶體內。快閃記憶體的容量大小是取決於BIOS的執行檔大小。
何謂legacy BIOS? 何謂EFI BIOS?
Lgacy BIOS的原始碼是使用組合語言來撰寫。
EFI(Extensible Firmware Interface) BIOS的原始碼是使用C語言來撰寫。
現今,legacy BIOS已漸漸地被EFI BIOS所取代。
EFI BIOS對於程式設計師來說,比較容易看懂,不需要碰到太多硬體底層的程式。

EFI BIOS是如何開機至作業系統的?
EFI BIOS需要經過四個階段的開機流程到作業系統。
1. SEC階段: 檢查系統安全性並將快取記憶體當作記憶體來使用以利建構PEI 環境並轉移至PEI 階段。
2. PEI 階段: CPU/chipset初始化及記憶體初始化讓系統進入到DXE IPL。
3. DXE階段: 執行所有driver為了讓系統能有完整的功能。
4. BDS階段: 連接所有可開機的裝置且讓系統開機到被選中的可開機裝置。
系統Power on -> SEC -> PEI -> DXE -> BDS -> 作業系統

8 comments:

  1. 請問apple 顯卡的rom(efi部份),如何反編譯?因為想改它裡面的一些設定。
    謝謝。

    ReplyDelete
  2. EFI的OptionROM是follow EFI spec的規範來寫成的(C語言),要符合PE/COFF image的格式,如果你要用反組譯程式來看,應該是有難度的,不像以前Legacy OptionROM(assembly寫的)可以用debug32.exe來反組譯。而且兩者之間的header file也不一樣,詳細header file可參考UEFI spec 2.3.1的13.4.2 PCI Option ROMs章節。

    ReplyDelete
  3. 找到相關文件及您說的章節,正鑽研中。如有不懂,是否可不吝指教?感謝~

    ReplyDelete
  4. 可以啊,相互切磋才會進步

    ReplyDelete
  5. Dear Elvis:
    謝謝您的回覆。
    看過UEFI spec 2.3.1的13.4.2 PCI Option ROMs章節之後,知道其Header的格式在hex下所代表的意義,但用hexedit軟體開啟一個rom,看到PCIR之後的一些資料幾乎看不懂,不知有何方法可理解。

    另外,小弟有幾個問題想請教:
    一、請問工程師在寫一個顯卡的eif格式的rom時,他們是用c語言寫的嗎?不然,這麼多密密麻麻的16位元碼,怎知道其所代表的意義?
    二、要修改efi rom,有可能反組譯嗎?就是直接看到原始的程式碼。
    三、顯卡efi rom的架構,是否應該也要遵循pci spec的規則?
    四、efi rom的架構和Legacy rom的不同,是否有相關文件可學習?
    五、在其他網站上看到,修改efi rom的幾個重點在:
    1/ Device ID
    2/ Softstraps <---可否解釋它的意思?
    3/ Performance Table <---可否解釋它的意思?
    4/ Boot Settings <---可否解釋它的意思?
    5/ Timings Table <---可否解釋它的意思?
    6/ Appendix <---可否解釋它的意思?
    在efi rom 架構下,有方法找到上面的這些參數在hex下的位置嗎?
    六、是否有可能請您反組譯一個Legacy OptionROM看看,想看看其所得結果是什麼?是原始的程式碼嗎?
    謝謝。
    小弟姓邱,在此耽誤您一些時間了。
    我的email:chchiou07@gmail.com,如有需要可mail給小弟,謝謝。

    ReplyDelete
  6. 我需要一些時間來回覆您的答案,我會以e-mail的方式寄給你

    ReplyDelete
  7. 謝謝您。感激不盡。

    ReplyDelete
  8. 一、請問工程師在寫一個顯卡的eif格式的rom時,他們是用c語言寫的嗎?不然,這麼多密密麻麻的16位元碼,怎知道其所代表的意義?
    A1:符合EFI格式的Driver model所寫成的ROM,是用c語言寫的。

    二、要修改efi rom,有可能反組譯嗎?就是直接看到原始的程式碼。
    A2:EFI OPROM是可以反組譯的,但是c code寫的轉成assembly的形態通常都會看到很多push和pop,這是因為c code最佳化的原因,導致反組譯時很難看的懂

    三、顯卡efi rom的架構,是否應該也要遵循pci spec的規則?
    A3:既然是PCIE的顯卡一定會遵循PCIE的架構。

    四、efi rom的架構和Legacy rom的不同,是否有相關文件可學習?
    A4:EFI OPROM的架構就像是一隻EFI Driver符合PE/COFF格式,只是你拿到的是.EFI格式的檔案,而不是原始碼。Legacy OPROM就是以0x55 0xAA的signature的方式判定它是一隻OPROM。Legacy OPROM的資料在網路上很多,你可以自行搜尋。

    五、在其他網站上看到,修改efi rom的幾個重點在:
    1/ Device ID
    2/ Softstraps <---可否解釋它的意思?
    3/ Performance Table <---可否解釋它的意思?
    4/ Boot Settings <---可否解釋它的意思?
    5/ Timings Table <---可否解釋它的意思?
    6/ Appendix <---可否解釋它的意思?

    在efi rom 架構下,有方法找到上面的這些參數在hex下的位置嗎?
    A5:我不知道你這個修改EFI ROM的網站是在那裡找到的,感覺上和EFI option ROM沒什麼關係。
    1/ Device ID 裝置ID
    2/ Softstraps <---可否解釋它的意思? 可以用軟體工具的方式來初始化設定值,改變開機行為,像是Intel FITC tool for ME setting
    3/ Performance Table <---可否解釋它的意思? 這個我不清楚是否與Option ROM有關
    4/ Boot Settings <---可否解釋它的意思?這個我不清楚是否與Option ROM有關
    5/ Timings Table <---可否解釋它的意思? 這個我不清楚是否與Option ROM有關
    6/ Appendix <---可否解釋它的意思? 附錄???

    六、是否有可能請您反組譯一個Legacy OptionROM看看,想看看其所得結果是什麼?是原始的程式碼嗎?
    A6:無論如何,反組譯都不可能變成原始碼。頂多很接近而已,因為反組譯是很機器碼再轉成組合語言。

    ReplyDelete