edkii編譯初試
一、core中的各個package
看了書上的edkii的編譯環境和edkii的core中含有的各個package,每個package的作用,包含的東西以及各個package之間的相互聯絡。以下是edkii中包含的package:
basetool:提供二進位制檔案編譯和配置檔案模板構建的工具
conf:只含有乙個readme.txt的檔案,該目錄用於包含配置檔案的編譯目標和用於建立的編譯引數。
mdepkg:宣告protocol、ppis、guid、定義在uefi和efi中的資料結構、pi規格和行業標準。另外該軟體包包含在模組開發環境中含有的庫例項,在intel為efi建立的平台創新架構上提供所有執行階段提供的服務。
mdemodulepkg:提供了一組基於uefi、efi和pi規格的交叉平台,同時也包含服務這些模組的庫例項。
intelframeworkmodulepkg:提供了一組基於平台創新架構的庫例項和模組交叉平台,同時,它也包含服務這些模組的庫例項。
edkshellpkg:提供建立shell工程的指令。
edkshellbinpkg:提供可執行shell檔案和使用不同cpu架構的可執行shell應用。
edkfatbinpkg:提供適用於不同cpu架構的可執行fat驅動。
nt32pkg:在32位windows作業系統下執行,提供乙個uefi執行時環境
unixpkg:執行在32位unix類似作業系統上
duetpkg:基於真實機器傳統bios上提供uefi執行時環境
optionrompkg:展示相同驅動為不同的cpu架構建立pci標準可選romimage。
edkcompatibilitypkg(ecp):包含efi1.10、efi2.0和所有intel架構規範,加上edk庫例項的edk風格的定義,用來使得edk風格模組可以適用於edk上下文。他也含有一些trunk驅動,提供定義在uefi2.1/pi1.0中的不同協議和intel創新架構規範之間的過度。ecp的主要目標是在edkii中相容建立在edk模組和解決在預pi-edk模組在平台edkii模組中的二進位制相容性問題。
pcatchipsetpkg:設計和實現遵循pcat標準的公共介面
ueficpupkg:提供相容cpu模組和庫的uefi
ovmfpkg:支援使用edkii**庫的虛擬機器的韌體。
下圖反映了edkii中各個包之間的依賴關係:
圖1 包之間的依賴關係圖
二、edk編譯工程的一般步驟
第二步:在workspace(edkii根目錄),執行指令碼edksetup建立構建環境。
第三步:配置活動平台,如編譯選項,目標,構建工具鏈和構建規則。
第五步:根據配置平台定製要求進行編譯。
三、各種型別的檔案
*.dec(package declaration file)檔案:該檔案定義了公開的資料和介面,供其他模組使用。包含的必須塊[defines]以及一些可選塊[include]、[libraryclassess]、[guids]、[protocols]、[pcd]和[pips]等。
*.dsc(platform description file)檔案:用於編譯乙個package。包含的必須塊[defines] 、[libraryclassess]、[components]等。類似於上層目錄下的makefile檔案。
*.inf(device information file)檔案,用於編譯乙個模組module。相當於子目錄下的makefile檔案,用於動態載入模組。
*.fdf(flash description file)檔案:用於生成韌體image。option rom image或者可啟動的image。
剩下的就是編寫
*.c檔案了,注意在編寫該
c應用語言程式的時候,不能直接使用
c語言的標準庫中的函式,例如
printf()
之類的函式,如果要使用的話一定要在該工程檔案的
inf檔案中的
[packages]
塊中新增
stdlib/stdlib.dec
,而在[libraryclasses]
塊中新增
libc
、libstdio
和shellcentrylib
這幾個函式庫。
四、書寫工程檔案的注意點
對於c語言程式的程式設計,注意這是要在shell下執行的可執行程式的員程式,因而我們不能直接使用c語言函式庫中的庫函式,這點上面紅色字型部分已經說明,還有就是在這裡我們呼叫庫檔案、protocols、全域性變數等時候,我們呢都要在該package檔案目錄下的*.dsc檔案中的適當位置新增要呼叫函式所在位置處的*inf檔案,裡面的檔案格式是:檔名|*.inf檔案的檔案路徑。並且要在該工程檔案的目錄下的*.inf檔案中的[protocols]塊新增使用的guid、[libraryclassess]塊新增使用的函式庫、[packages]塊中新增*.dec檔案,確保自己所呼叫的每乙個函式、變數、protocols等都可以通過這些路徑之類的東西找到,這樣就可以順利進行編譯了。
以上純屬個人見解,不代表權威,若有任何不對的地方,還請各位大神斧正。
windows使用CMD命令視窗修改IP位址
1 用快捷鍵 win r 開啟執行介面,輸入 cmd 回車,開啟命令提示符。2 在命令提示符中依次輸入 netsh inte ce ip 並依次回車。3 輸入 set address 連線名稱 static 新ip位址 子網掩碼 閘道器 1 然後回車。注意,上述命令需要按照使用者要求進行修改,連線名...
Windows的CMD個性設定
除了在視窗的左上角選擇屬性後進行設定之外,還可以進行如下設定 1.切換全屏 alt enter 2.彩色的命令列 color 是windows2000 xp 2003中特有的命令,主要功能就是用來改變命令列視窗的顏色。顏色屬性由兩位數指定 第一位是背景色,第二位是前景色,也就是文字的顏色。下面是一些...
CMD 視窗的 基本命令
dos常用命令 一 基礎命令 1 dir 無引數 檢視當前所在目錄的檔案和資料夾。s 檢視當前目錄已經其所有子目錄的檔案和資料夾。a 檢視包括隱含檔案的所有檔案。ah 只顯示出隱含檔案。w 以緊湊方式 一行顯示5個檔案 顯示檔案和資料夾。p 以分頁方式 顯示一頁之後會自動暫停 顯示。more 前面那...