**:
在 efi 中,有一些基本的觀念必須先建立
先知道一些觀念、結構,有助於後續的理解。
幾個efi的重要角色要記得
1. system table : 含有很多重要的資料結構以及系統 function 的 inte***ce。
2. handle database and protocols : 很多資源及概念的 reference ,是被註冊在此處。
3. efi image : 在 driver 還沒 dispatch 前,都是屬於 image 的存在。是一種 pe/coff的格式。存在rom中
4. event : 在 efi 中,含有許多 events 可供使用
5. device paths : 在 efi 中,對於 device 的表示,都是使用 device path 來進行表示。
以下來分別解說這些重要角色
1. system table
它是乙個 dxe 時建立的 table 。它內含幾個重要的東西
a. boot services
b. runtime services
c. protocols services
這些東西都可以從 system table 找到相關 reference 。
最簡單的分類方式是
boot service 是在 未進入 os前( 還沒call exitbootserivce)前可使用的。之後就不能用了
runtime service 則在 進入 os 後還可以使用的。
protocols service 則是給 driver 使用的,可以註冊 handle , routine …等等
2. handle database and protocols
當 dxe driver 利用 protocol service 註冊想開放的功能,它是以 handle 的方式來儲存。
此 database 是儲存的媒介。取得也是利用 protocols service 來查詢。
因為是查詢,使用方必須知道相關的 data structure 才能正確的使用開放的 handle( 轉型 )
而內部主鍵則是利用 guid 來分別各 handle (guid很難重複)
handle 是由 乙個或多個 protocol 組成的( 因為protocol是掛在handle上的)
protocol 本身則以 guid 為身份代表,開放一些 inte***ce 。
3. efi image
含有 pe/coff format 的 header 。目前有以下型別的 efi image
b. efi boot service driver : resource 在 exitbootservices後release
c. efi runtime driver : resource 會一直存在
這也代表,使用這些格式的 image 就可以被 efi 所使用,而不依賴處理器。( 多了一層在處理這東東)
4. events
event 是 efi 所管理的。使用者可以使用它來組合自己想做的事。
以下是 event 的分類
a. wait event
b. signal event
c. exitbootservices event
d. timer event
e. periodic timer event
f. one-shot timer event
在概念上,它都必須建立乙個 event 再由 丟到 event service 去做你需要的安排。
ok,以上是純文字說明,接下來補一些圖片幫助理解
1. system table
這個東西,重要的是它的存在,以及什麼東西可以透過它找到。
以下是它的結構
藍色那塊就是 boot services
暗紅那塊就是 runtime services
以及其它可供擴充的 configuration table ( 忘了它沒關係…有用到再說 )
2. handle database and protocols
這東西,想像成一種小管理系統。
它長的像下圖
乙個 handle 跟著乙個 handle
而每個 handle 由乙個或多個 protocol 組成
而 protocol 是由 guid 所代表。
那 protocol 又是啥東東?
看下圖其實就是 會參考到 某 driver 願意分享出來的 function 。
而 handle 本身,還是有分類的。
所有存在 rom 裡面的 image file, 在載入後,都會變成乙個 image handle
而 driver 被 dispatch 後,則是看它本身的內容看要不要再產生新的 handle
目前已知的是
a. driver handle ( 符合 efi driver model )
b. service routine ( 這個產生出的 handle 沒啥意義,重要的是它要分享 service )
4. image
image 本身指的是符合 pe/coff 格式的 image file
image 依它自己的目的,是可以有以下幾個分類的。
這邊要說明一下
handle 是 efi framwork 自行建立的 reference ,是動態建立的。
而 image 則是本身就存在 rom 或是其它 storage 中。可以透過 loadimage 讀出來
透過 dispatch 執行該 image。
下圖的分類,指的是該 image 本身的意義所造成的分類。
5. events
這邊要補充的是, wait event , signal event 是基本型態
其它 event 就是如圖上看到的,是其它 event 的延申。
ok說完了。
這邊主要參考的是 beyond bios 的內容,抽我覺得要說的打的。
這裡的重點在於,efi 基本上有啥,點出來,在應用的時候,你的概念可以連起來
就這樣子而已,很多東西還是必須實作才有 fu,不然,這些概念就夠了。
架構之美02
1.新 的定位 一開始就有系統結構清晰的總體檢視,所以,新的功能單元可以新增到正確的功能區域,而不是為了一時方便,隨意新增。這樣,有的時候開發者的工作會需要動寫腦筋,但是在系統維護和擴充套件時,就變得容易了 2.系統的一致性 頂層設計的良好風格和決定,為底層 好處,是統 一 整潔的。清晰的定義,確保...
從Uefi的歷史開始 BIOS和Uefi
legacy bios可以引導不同的作業系統,它定義了一套與作業系統無關的硬體介面,通過bios rom loader和 bootstrap loader去使能中斷和video,disk,keyboard服務進行通訊。uefi是用來代替legacy bios的服務。除此之外,uefi還提供了其他的一...
02 numpy 02 陣列的基本運算
在numpy中實現四則運算,既可以使用符號,也可以使用函式 比較運算返回的是bool型別的值,即true 或者 false 比較運算用來篩選出特定的值或者對這些值進行一些操作 import numpy as nparr np.array 1,3,4 5,6,7 3,3,9 arr1 np.array...