2015年11月13日 星期五

BIOS code "Hello world"

Build NT32 Emulator

切換路徑到"workspace"
















(cd "位置" - 進入指定位置                     cd ".." - 上一層)


Run "edksetup" -> Run "edksetup --nt32" -> Run "Build" -> Run "Build run"























(輸入 reset 可以關掉shell)

(以後這段省略)
_________________________________________________________________________________
檔案類型與作用
xx.dec
Package DEClaration File 包裹聲明檔
xx.dsc
Platform DeSCription File 平台聲明檔
xx.fdf
Flash Description File 閃存描述檔
xx.inf
Setup Information File 安裝訊息檔

是用來描述在程式的安裝過程中使用和包含的檔和要安裝的資料夾有關的資訊的設置檔的檔

案格式。

查詢副檔名   http://www.filefacts.net/zh/ (參考就好)
_________________________________________________________________________________
加入INF

將想加入的APP INF路徑,放入Nt32Pkg.dsc [Components]下

EX.
D:\MyWorkSpace\AppPkg\Applications\Hello\Hello.inf  放入 Nt32Pkg.dsc
(路徑重複省略)

試著build看看
發現有成功加入Hello.inf,但是顯然是缺少ShellCEntryLib。

開啟Hello.inf
可以觀察出ShellCEntryLib,應該是在ShellPkg/ShellPkg.dec被描述。

開啟ShellPkg.dec
ShellCEntryLib是指ShellCEntryLib.h 的 header檔。
(位置應該是在 D:\MyWorkSpace\ShellPkg\Include\Library )

那麼如何把ShellCEntryLib.h 匯入 NT32 Emulator
要先找出 ShellCEntryLib 的 inf檔。
一般在同的PKG(package)下,得找找。
(位置 D:\MyWorkSpace\ShellPkg\Library\UefiShellCEntryLib )

同樣加在Nt32Pkg.dsc裡,因為是Library 所以加在[LibraryClasses]下。

再次"build"後,"build run"進入shell















BIOS EDK II 安裝

________________________________________________________________
開始前先安裝好
Visual studio  
https://www.visualstudio.com/zh-tw/downloads/download-visual-studio-vs.aspx

python
https://www.python.org/
________________________________________________________________

首先得先去EDK II官方抓取他的package。
(EDK II官方 http://www.tianocore.org/edk2/)

EDK II 2015 package 內容




解壓縮 Myworkspace 。根據電腦的OS,解壓縮BaseTools。
將BaseTools檔案夾裡的BaseTools conf edksetup放入Myworkspace 資料夾中。


透過Visual studio CMD下指令。
切換資料夾去Myworkspace。
使用: edksetup
          edksetup  --nt32
          build (如果build沒有error) 下 build run
_________________________________________________________________
關於build產生的error。

error 7000 和 error2 同時出現
可能是conf裡的target設定有誤。
_________________________________________________________________








2015年11月6日 星期五

BIOS CMOS Indirct IO Access

簡易範例程式
__________________
mov dx 70
告知 CMOS 要準備定址
mov al ??
out dx al
要更動的位置是 ??
__________________
mov dx 71
告知COMS 要準備定值
in al dx
讀取??的值 到 al
add al 1
out dx al
輸出al的值到 ??
__________________
兩個out 意義不同 是因為DX 不同 70 71 意義不一樣

?? 表示 CMOS RAM memory map