BIOS學習筆記之UEFI模組機制

來源:互聯網
上載者:User

標籤:一段   log   main   div   ring   dsc   html   入口   一點   

本文旨在簡單的介紹一下UEFI的模組機制:

BIOS是固化在電腦主板上的一段程式,主要功能就是初始化主板,最後載入作業系統(OS);而UEFI通俗一點講就是一種BIOS的規範,它提出了一種BIOS的實現架構並提供了一套開源的實現。

我們知道Linux的模組機制是通過宏來定義模組的進入點的(參考:Linux學習筆記之核心啟動流程與模組機制),而UEFI的模組機制理解起來更容易,它的每個模組都有一個inf檔案,裡面描述了模組的詳細資料,比如進入點(入口函數)、模組包含哪些源檔案等。

以隨身碟驅動為例:\MdeModulePkg\Bus\Usb\UsbMassStorageDxe\(UEFI的一個模組就是一個目錄)

UsbMassStorageDxe.inf

 1 ## 2 [Defines] 3   INF_VERSION                    = 0x00010005 4   BASE_NAME                      = UsbMassStorageDxe 5   MODULE_UNI_FILE                = UsbMassStorageDxe.uni 6   FILE_GUID                      = 9FB4B4A7-42C0-4bcd-8540-9BCC6711F83E 7   MODULE_TYPE                    = UEFI_DRIVER 8   VERSION_STRING                 = 1.0 9   ENTRY_POINT                    = USBMassStorageEntryPoint10 11 ##13 [Sources]14   UsbMassBoot.h15   UsbMassImpl.h16   UsbMassBot.h17   UsbMassBot.c18   ComponentName.c19   UsbMassImpl.c20   UsbMassBoot.c21   ....

ENTRY_POINT指明了模組的進入點,當這個模組被運行時,是從USBMassStorageEntryPoint()這個函數開始啟動並執行。

[Sources]下麵包含的是模組的源檔案。

那這些模組是如何被載入啟動並執行呢?

首先,在Build系統時,通過.fdf  .dsc檔案指出我們想包含哪些模組(想包含某個模組,就把對應的inf檔案的路徑添加到這兩隻檔案中,他們的作用類似於Makefile檔案);之後在代碼執行過程中,還是看DXE階段,DXE階段的進入點是DxeMain(),執行一些必要的初始化之後,會執行CoreDispatcher(),CoreDispatcher()負責找到系統中所有的模組,並執行他們的入口函數。

UEFI架構最主要的階段就是DXE階段,而這個階段跟Linux的執行很像。個人認為UEFI在設計時一定從Linux的設計思想中擷取了很多的靈感(比如Linux通過宏來指定模組的進入點)。

 

BIOS學習筆記之UEFI模組機制

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.