Tianocore 是一個支持 UEFI 規範標準的開源社區項目,提供了基礎啟動和運行環境、各種各樣的命令行界面以及 UEFI 應用程序的支持庫和模板。支持從傳統 BIOS 啟動模式到 EFI/UEFI 啟動模式的切換,具有巨大的靈活性和可移植性。Tianocore 項目的目標是為 UEFI 生態鏈上的所有成員創造一個開放、安全、可擴展、可移植和互操作的軟件生態系統。
一、基礎介紹
Tianocore 的核心是模塊化的驅動程序和應用程序。Tianocore 根據模塊和庫的依賴關係構建代碼,並將它們鏈接到一個稱為 BaseTools 的構建工具鏈中。通過使用 BaseTools,開發人員可以跨平台進行構建,但 Tianocore 運行環境本身需要針對某些特定的芯片集成電路進行配置和編譯。
UEFI BIOS 啟動從 Silicon 到 Ready 有五個主要階段:階段 0、Sec階段、PEI階段、DXE階段和BDS階段。TianoCore 運行時環境中具有各個階段的源代碼,可以在應用程序中使用這些源代碼來構建可以運行在 UEFI BIOS 上的各種應用程序。為了提高穩定性和兼容性,Tianocore 還在開源社區基礎上開發了 EDK2 和 EDK II。EDK(Embedded Development Kit)是一個 UEFI 開發工具包,可以在各種硬件平台上實現 UEFI BIOS。
二、模塊化的驅動程序和應用程序
模塊是指具有單獨功能的代碼單元。Tianocore 有許多可用的模塊,例如 SMBIOS 模塊、網絡協議模塊和 USB 驅動程序模塊等。同時,根據開發人員的需要,Tianocore 還支持自定義模塊和驅動程序的添加。
在 Tianocore 中,驅動程序和應用程序被分成兩個模塊,基於 Common Driver Model 構建。Common Driver Model 由 UEFI 約定、抽象和分層,提供了一種可移植且易於開發和維護的驅動程序模型。它將驅動程序劃分為各種功能驅動程序、控制器驅動程序和服務驅動程序。在 Common Driver Model 中,驅動程序被視為層次結構,驅動程序能夠遞歸安裝和卸載,這就是所謂的“協議繼承”。
三、使用Tianocore開發UEFI BIOS
Tianocore 是一款功能強大的工具,可以幫助開發者實現各種各樣的 UEFI BIOS,並且非常容易上手。和其他操作系統一樣,UEFI BIOS 可以使用 C 語言來編寫,因此了解 C 語言和編程概念是開發 UEFI BIOS 的必要條件。
下面是一個簡單的 UEFI BIOS 應用程序示例,該程序在啟動時僅顯示一條消息並退出。
#include #include #include EFI_STATUS EFIAPI UefiMain( IN EFI_HANDLE ImageHandle, IN EFI_SYSTEM_TABLE *SystemTable ) { Print(L"Hello, Tianocore!\n"); return EFI_SUCCESS; }
在此示例中,我們首先啟用 UefiLib 庫,這是 Tianocore 標準庫的一部分。然後我們定義了一個啟動函數 UefiMain ,該函數使用 Print 函數在控制台上顯示“Hello,Tianocore!”的消息。
四、使用BaseTools構建UEFI BIOS
使用 BaseTools 工具集來構建 UEFI BIOS。BaseTools 使用 Python 腳本和 make 文件構建 UEFI BIOS。它提供了一些有用的命令行工具,例如 build 命令、genmakefile 命令和conf命令。
在這個例子中,我們將構建一個簡單的應用程序,該應用程序在啟動時顯示給定的消息。為此,我們需要編寫一個生成文件 config.py 並在其中定義要構建的應用程序:
[Library] INTEL_UEFI_PI_SYSTAB_LIB UEFI_APPLICATION_LIB [Components] HelloWorld/Application/HelloWorld.inf
然後運行 build 命令來構建應用程序。
$ source edksetup.sh $ build
五、結論
Tianocore 是一個非常有用的工具,可以幫助開發者輕鬆地構建各種各樣的 UEFI BIOS 應用程序,並且在開源社區的支持下,Tianocore 項目將會變得越來越強大。同時,Tianocore 還提供了許多實用的工具和庫,使開發人員能夠更加輕鬆地構建和維護自己的 UEFI BIOS 應用程序。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/247693.html