2012年11月2日 星期五

2012年10月29日 星期一

How To Build EDK & EDK II Environment In Easy Way

如何編譯EDK

請參考 How To Compile UDK2014如果你是要編譯 UDK2014。
請參考 How To Compile UDK2015如果你是要編譯 UDK2015。

image
(D:\為例)
安裝Windows Driver KitC:\WINDDK\3790.1830
Edk 1.06解壓縮到D:\
EfiShell 1.06解壓縮到D:\Edk\Other\Maintained\Application\UefiShell資料夾下
image

修改D:\Edk\Sample\LocalTools.env 確認NASMDDK路徑

image
image


編輯D:\Edk\Sample\Platform\Nt32\Build\Config.env
image


用系統管理完開啟命令提示字元
image

切換目錄到D:\Edk\Sample\Platform\Nt32
輸入SET EDK_SOURCE=D:\Edk
build編譯
image

編譯成功畫面
image

切換到D:\Edk\Sample\Platform\Nt32\uefi\IA32
輸入secmain.exe
image
image
image
image

如何編譯EFI_Toolkit

解壓縮EFI_Toolkit_2.0.0.1 D:\Edk\Sample\Platform
修改D:\Edk\Sample\Platform\EFI_Toolkit_2.0\build.cmdSDK_INSTALL_DIR路徑

image

輸入build
輸入nmake編譯 
image

編譯完成畫面
image

輸出EFI檔在D:\Edk\Sample\Platform\EFI_Toolkit_2.0\build\em64t\bin
如果要編譯成其他檔案可以更改build.cmd裡的SDK_BUILD_ENV
image

想要決定編譯哪幾個檔案可以修改D:\Edk\Sample\Platform\EFI_Toolkit_2.0\apps\apps.mak

想要修改WINDDK路徑的話
D:\Edk\Sample\Platform\EFI_Toolkit_2.0\build\em64t\sdk.env


如何編譯EDKII

先安裝Tortoise SVN取得EDKII Source Code
安裝完成後在你要的目錄,點右鍵SVN Checkout
image
image
image


系統管理員開啟命令提示字元
輸入edksetup.bat
image

因為我是用Visual Studio 2010
必須修改Conf\target.txt 裡的TOOL_CHAIN_TAG = 2010
image

再輸入Build就會編譯了
image
image


編譯完成畫面
image

直接輸入build run
或是執行D:\EDKII\edk2\Build\NT32\DEBUG_VS2010\IA32\secmain.exe
image

模擬器開啟畫面
image
image
這裡有說明EDK II各個Package的內容
如果要切換不同Package
可以修改Conf\target.txt裡的
ACTIVE_PLATFORM       = Nt32Pkg/Nt32Pkg.dsc
ACTIVE_PLATFORM       = MdePkg/MdePkg.dsc

2012年9月27日 星期四

如何開啟A20位址線 ?

 

image

image

image

image

Assembly code

In al, 0x92

Or al, 2

Out 0x92, al

 

Another way is to use the BIOS.

INT 15, 2401

mov ax, 0x2401

int 0x15

2012年9月26日 星期三

Legacy BIOS V.S. UEFI BIOS

 

Legacy BIOS

UEFI BIOS

Language

Interrupt

C (99%)

Resource

Interrupt

Hardcode Memory Access

Hardcode I/O Access

Driver \ Protocols

Processor

X86 16-bits

CPU Protected Mode (Flat Mode)

Target

Binary Code

Removable Binary Drivers

Expand

Hook Interrupt

Load Driver

OS Bridge

ACPI

Run Time Driver Service

3rd Party ISV & IHV

Bad for Support

Easy for Support and Multi-Platforms

如何切換80 port Debug燈號 -> LPC or PCI ?

platform : Intel ICH8

在ICH8 Datasheet可以找到相關資訊

image

image

image

GCS = RCBA (Root Complex Base Address) + 3410h

image

Bit 2 : 設為 1 為輸出給 PCI 上的 80 port debug card

Bit 2 : 設為 0 為輸出給 LPC 上的 80 port debug card

 

RCBA 可以從 Device 31 : Function 0 取得

image