小華的部落格: 2014/12/21 - 2014/12/28

搜尋此網誌

網頁

星期四, 12月 25, 2014

開啟CMD.EXE並一次執行多個DOS指令的方式(Command Prompt and Batch file)

這篇文章是分享如何開啟CMD.EXE時並一次執行多個DOS指令的方式。

為什麼要分享這個冷知識?
因為現在是冬天了,所以很冷。

好吧,我承認這是個很無聊的一篇文章,大家就將就點看吧 :)

首先呢,我們都知道Command Prompt 是執行CMD.EXE後就會產生出來的一個畫面,那我們能不能寫個批次檔去執行CMD.EXE又可以執行很多筆指令呢? 答案是可以的,做法就是寫個批次檔,然後透過"雙引號"去把所有指令包起來,指令跟指令中間加入 && 就可以了:


   CMD.EXE  "指令1 && 指令2 && 指令3....&&指令n"

底下就是兩個批次檔的範例,批次檔內會去執行簡單的DOS指令,執行完畢後會出現一個Command Prompt停在那邊。





那大家可能會好奇我用在哪裡? 因為我使用SlickEdit 去編寫BIOS CODE,因為懶惰,所以想說我只要開啟 BUILD TIP底下任何一個檔案,然後按個鈕,我就可以進入到工作目錄並且設定好Visual Studio 的環境讓我可以直接Compiler code....就醬~




※ 上圖可以看到我在SlickEdit 內開啟了一個檔案,叫做NT32Pkg.dsc ,然後我設定了兩個快捷鈕,這兩個快捷鈕可以讓我選擇設定VS2012/VS2010的環境,按下去之後他會幫我呼叫設定環境的批次檔,環境設定好之後會直接幫我進入到NT32Pkg.dsc 目錄(E:\UDK2014.SP1\NT32Pkg),然後我就可以很方便地在Command Prompt內做我要做的事情了。

底下是我在那兩個快捷鍵內的設定值,有分成CMD.EXE的設定方式跟BATCH的方式,差別就只是在於呼叫CMD.EXE去做事情還是自己寫個批次檔,然後呼叫那個批次檔而已。

CMD.EXE的方式:
cmd /E:ON /V:ON /k  ""C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.bat" && cd/d "%f\..""


BATCH FILE的方式(除了描述在快捷鈕之外,要多寫一個批次檔):
"C:\Apps\TEST.bat" %f

TEST.bat的內容:
@ECHO OFF
CALL "C:\Program Files (x86)\Microsoft Visual Studio 11.0\Common7\Tools\VsDevCmd.bat"
cd/d "%1\.."
CMD.EXE 

上述中的%f 是SlickEdit內的參數,%f = 目前檔案的完整路徑。
以上面的範例來說:

    %f   = e:\UDK2014.SP1\Nt32Pkg\Nt32Pkg
 
最後,我承認科技使用來自於人的惰性,不然也不會有這個冷知識可以分享,哈~


星期二, 12月 23, 2014

Intel® UEFI Development Kit Debugger Tool (Intel UDK Debugger and OVMFPkg)

這篇文章是紀錄我自己架設 QEMU + OVMF + Intel UDK + WinDbg 環境的筆記。

QEMU : 他是一個Open Source的處理器仿真器與模擬器。
http://wiki.qemu.org/Main_Page
   
OVMF : 他是一個UEFI EDK2 codebase裡面的一個專案,用來讓UEFI BIOS可以跑在虛擬機器(Virtual Machine)上面,在這裡的範例就是跑在QEMU裡面。
http://tianocore.github.io/ovmf/

Intel UDK Debugger : 這是INTEL開發的一個Source Level Debugger,他需要配合WinDbg(微軟提供的)才能做除錯的動作。

Intel Uefi Development Kit Debugger Tool

下面這張圖是我實際的架設環境,我在Windows 8.1裡面安裝了Intel UDK跟WinDbg然後透過虛擬的COM Port來與 QEMU裡面的BIOS.BIN(OVMF.FD)溝通。


安裝與設定(Install and Setup)

STEP1 : Download UDK2014.SP1 ,OvmfPkg and OptionRomPkg

我是把它們一起放在E:\UDK2014.SP1; 然後先準備好Compiler環境,並產生OVMF.FD. (環境的部分請參考UDK2014與OVMF的說明)。

確定Compiler 環境沒問題後,跟隨下面步驟來產生UEFI BIOS ROM。

1).先產生 OVMF.FD
   a. E:\UDK2014.SP1>edksetup.bat
   b. E:\UDK2014.SP1>build -DDEBUG_ON_SERIAL_PORT=TRUE -DSOURCE_DEBUG_ENABLE

2). 在把OVMF.FD複製一份,並修改檔案名稱為bios.bin (rename)
   (我是放在 E:\UDK2014.SP1\Build\Ovmf3264\DEBUG_VS2012x86\FV\bios.bin)
    a.E:\UDK2014.SP1> cd E:\UDK2014.SP1\Build\Ovmf3264\DEBUG_VS2012x86\FV
    b.E:\UDK2014.SP1\Build\Ovmf3264\DEBUG_VS2012x86\FV> copy OVMF.FD bios.bin

STEP2: 安裝(Install) WinDbg 
STEP3: 安裝Virtual Serial Port,你可以選擇Com0Com或是VSPD(Virtual Serial Port Driver),因為Com0Com 是免費(Free),另一個要破解(VSPD v7.2),所以我這邊就只介紹Com0Com 就好,破解版的我就自己知道就好這邊就不介紹了。

1) 先執行一個Cmd.exe with Admin (管理者權限)
   bcdedit -set TESTSIGNING ON
2)重新開機 (Reboot)
3) 安裝Com0Com 2.2.2.0 (For Windows 8.1/Win7 x64 bit) 

4) 執行 "C:\Program Files (x86)\com0com\setupc.exe",並在畫面中輸入下面指令:

    Command > Install PortName=COM6 PortName=COM7

5) 確認設備管理員(Device Manager)內有成功安裝driver,並且No yellow bang.


STEP4: 安裝(Install) Intel UDK v1.4 
※如果你是Windows 8.1 ,請設定相容性=Windows 7 (Compatibility mode=Windows 7)
 

1) 安裝過程中會指定WinDbg安裝目錄跟COM port Number,你也可以安裝完畢後,再去修改他的設定檔案(Config File):

"C:\Program Files (x86)\Intel\Intel(R) UEFI Development Kit Debugger Tool\SoftDebugger.ini"
  
底下是我實作時候的設定:
COM6 = Intel UDK
COM7 = QEMU

2) 安裝後,修改SoftDebugger.ini 加入以及修改底下的描述(RED COLOR)
"C:\Program Files (x86)\Intel\Intel(R) UEFI Development Kit Debugger Tool\SoftDebugger.ini"
[Debug]
Debug=1

[Debug Port]
Channel = Serial
Port = COM6
FlowControl = 0   
BaudRate = 115200
Server = 

STEP5:  執行Intel UDK Debugger,他會叫出WinDbg
STEP6: 執行QEMU 並且載入UEFI BIOS (Load BIOS.bin)

E:\UDK2014.SP1\Build\Ovmf3264\DEBUG_VS2012x86\FV>"C:\Program Files\qemu\qemu-system-x86_64.exe" -L . -serial COM7



如果有不清楚的部分,可以參考INTEL相關資料。