1. 請寫出開機到 os 分哪些階段。 :SEC->PEI->DXE->BDS->TSL(translate)->RT->AL 2. SEC 階段最主要做哪些事? (1)建立 cache as ram. (2)找到 PEI CORE,並驗證其是否正確 (3)在找到 BFV 把控制權交給 PEI. 3. SEC 是什麼組言寫的? :組合語言 4. 什麼是 Boot firmware volume? 第一個被執行的 Firmware volume, 遵循 EFI FILE SYSTEM, 包含 PEI CORE 和 PEIM,在開機時 SEC 會到固定位置找到 BFV. 5. PEI 最主要做哪些事? (1)detecting and recovery 壞掉的 FV. (2)初始化系統記憶體 (3)把控制權交給 DXE 6. PEI 有哪些元件?功能為何? (1)PEI Core:可以視為 PEI 的核心,用來 Dispatch PEIM 和提供基本的 Service. (2)PEI Module:被 PEI Core 所 Dispatch 來做各種任務和初始化。功能有對 processor、chipset、device 做基本的初始,和其他特定的功能。 (3)PPI: PEIM 和 PEIM 之間溝通的介面。 (4)PEI Dispatcher:為 PEI Core 的一部分,用來搜尋和執行 PEIM. (5)PEI Service:功能由 PEI Core 所提供給 PEIM 使用。 7. PEI Service 有哪些?各 Service 功能? (1)PPI Service. (2)Boot Mode Service. (3)HOB Service. (4)Firmware Volume Service. (5)Memory Service. (6)Stats Code Service. 8. PEI 的 code 在哪裡執行? : cache as ram. 9. PEI Dispatch 四大 Rule. :PEIM 未被 Dispatch、PEIM 為正確的格式、PEIM 為可信賴的、PEIM 的 Dependency 條件以符合. 10. 什麼是 dependency?dpendency 關係記錄在哪裡?如何表示? :一個 PEIM 在執行時,有可能會用到其他 PEIM 的功能,所以要等其他 PEIM 先 執行後、並 install PPI 至 PPI Database 中,該 PEIM 才能使用該 PPI 也才能 繼續執行下去。dependency 關係存放在 FV 的一個特殊的 section 中。一個 PEIM 有可能會需要很多其他 PEIM 先執行才能執行,所以表示 方法用 Boolean 運算子 AND、OR、NOT 和 Sequencnig 運算子 Before、After 來 表示。 11. 如何 dispatch other Fv? :不一定所有的 PEIM 都在 BFV 中,有可能在其他的 FV,所以要用 Dispatch other FV 的機制。 此時需要一個特別的 PEIM 來告訴 PEI Core 說其他 FV 還有 PEIM 要 Dispatch, 所以當 PEI Core Dispatch 到這個 PEIM 時,會把其他 FV 的 PEIM 的 Dispatch 順序加到 PEI Core 的搜尋 algorithm 中。 12. 什麼是 Notification :假設一個 PEIM 有十個 function,在執行完九個後,最後一個 function 需要 其他 PEIM 的功能,但該 PEIM 尚未被 Dispatch,此時可以用 Notify 的功能告 訴 PEI Core,需要某 PPI 才能執行,然後就繼續 Dispatch 其他 PEIM,當有 PPI 被 install,就會和 Notify 的 PPI GUID 做比對,如果是 Notify 的 PPI 就 跳回到下 Notify 的 PEIM 去把剩下的 function 執行完。提供了一個 Call back 的機制。 13. 什麼是 PPI : PEIM 和 PEIM 的溝通介面,當 PEIM 要提供功能給其他 PEIM 使用時,需要先 Install 一個 PPI 至 PPI DataBase 中,其他的 PEIM 就可以透過 PEI Core 來使 用該 PPI。PPI 的欄位分為 GUID 和 Interface。GUID 是 128bit 的資料,它是唯 一性的,即使不同人在同一時間建立也不會相同。Interface 是一個 function pointer,用來指向 PPI 所提供的 Function. 14. 什麼是 HOB? :由 PEI 階段傳送給 DXE 的資訊只能透過 HOB 來傳送,所以他包含 DXE 所需的所 有資訊,如 PHIT, Physical Memory, Firmware Volume, Dxe Core, Dxe Stack/BSP, Guid HoB。它是 Linking list 的資料結構,標頭為 PHIT,其中包 含了 Boot Mode 的資訊。尾巴是 Termination,如果搜尋 HOB 時找到 Termination 表示沒有此 HOB。 Guid HOB 是由 chipset vendor 提供的資訊, 有自己的格式,不想被其它人所使用,是屬於 private information。 15. Recovery 的步驟 (1)由 platform policy 來決定是否要 Reset platform. (2)不管 platform 有沒有 Reset,Core Dispatcher 都會做 Reset,然後重新 Dispatch,只 Dispatch 有標為 Recovery 的 PEIM (3)讀取 Boot Mode 來決定要 Dispatch 哪些 PEIM. 16. 什麼是 S3 Resume、要注意哪些事? :S3 是 ACPI 所定義的一個 sleep state. 在進入 S3 時會把所有 hardware 的資 訊存到系統記憶體中,然後把系統電源幾乎都關掉,只剩下系統記憶體的電 源,而且會把記憶體的 Refresh Rate 調低到至少不會資料遺失。 在 S3 Resume 時: (1)會把系統電源恢復,並把記憶體的 hardware 資訊 restore 回去。 (2)PEI Core 和 PEIM 不能去使用 OS 所佔用的系統記憶體位置。所以不能做記 憶體初始化的動作。 (3)不能進入 DXE,因為會破壞到記憶體內容。 (4)PEIM 用 Special hardware save table 來 restore boot configuration 和 把控制權交給 OS Resume Vector. 17. DXE 階段做哪些事? (1)幾乎所有硬體的初始化都在這做完。 (2)產生 EFI System Table, 來提供各種 Service 供後面階段使用。 (3)把控制權交給 BDS 來 Boot OS. 18. DXE 有哪些元件?各有什麼功能? (1)DXE Core: 可視為 DXE 的核心,用來 Dispatch DXE Driver 和產生 EFI System Table,以提供 Boot Service、Runtime Service、DXE Service. (2)DXE Driver: 被 DXE Core 所讀取,用來做各種的硬體初始化、產生 Protocol 和其他 Service. (3)DXE Dispatch: DXE Core 的一部分,以正確的順序來搜尋和執行 DXE Driver。 (4)DXE Architecture Protocol: 由 DXE Driver 所產生,是 DXE Core 和 hardware 溝通的唯一介面,所以沒有 install 完全會不能開機。 (5)EFI System Table: 包含了許多 pointer, 如:所有 EFI system Table、 configuration Table、handle database, and console device. 19. DXE 用什麼元件找到 FV?用什麼方式?用什麼方式將 Driver 讀至 Memory 中? :用 Firemware volume block driver. 以 memory mapped IO 的方式。 PE/COFF Loader. 20. DXE Architecture Protocol 有哪些?各有什麼功能? (1)Security: 提供 DXE Core 驗證 Firmware Volume 中的程式是否可以使用。 (2)CPU: 提供 CPU 的 Service 如管理 cach、管理中斷、取得處理器頻率、查詢 處理器的 timer。 (3)Metronome: 提供一個微小的延時,百萬分之一秒為單位。 (4)Timer: 提供固定時間的中斷,使在 DXE Core 的 Timer Service 能正常運 作。 (5)BDS: BDS 主體,當 DXE Core Dispatch 完所有 Driver 後,會將控制權交給 BDS. (6)Watch Dog Timer: 提供 enable 和 disable,為了防止 code 在執行發生死 當,在 code 執行前 enable watch dog ,如果一段時間 watch dog 沒被關掉,則 Reset 系統。 (7)Runtime: 提供 Service 來轉換 Runtime Service 和 Runtime Driver 由 Physical mapping 轉成 Virtual Mapping.以供 OS 使用。 (8)Variable: 提供 Service 來取得和設定環境變數。 (9)Monotonic Counter: 利用 CPU 內部所提供的 64 bit 計數器來計算 CPU 執行 頻率。 (10)Reset: 提供 Service 來 Reset 或 shutdown platform. (11)Status Code: 提供 Service 給 Dxe Core 和 Dxe Driver 傳送 Status Code 給 log 或 device. (12)Real Time Clock: 提供 Service 來取得和設定目前時間、日期,且能設定 鬧鐘時間及日期。 21. 什麼是 EFI System Table? :分別兩部分,左半部是 Active Console、EFI boot service table、DXE Service、Handle database。 右半部為 EFI Runtime Service Table、Version Information、System Configuration Table。 左半部在進入 Runtime 則無法使用。右半部在進入 runtime,如果進入的 OS 為 EFI OS 則可以使用,legacy OS 不能使用。 22. 什麼是 handle database? :Handle database 由許多 handle 所組成,handle 是由所多 protocol 所組 成,protocol 是由所多 function pointer 所組成。 一個 handle 可以是一個 Driver、一個 Device 或一個 Service。我們可以透過 Handle database 來存取 Device. 23. 什麼是 SOR? :Schedule on Request. 當 Driver 的 Dependency Expression 裡面的 SOR Flag 被設起來,表示這個 Driver 不會被 Load 也不會被執行,直到這隻 Driver 被 Request 以後才會被 Load 且執行。通常用於當這個 Driver 的 File 是存放在 一個不可信任的 Device 上的時候 24. 如果 Dxe Driver 沒有 dependency expression 代表? 如果 pei Driver 沒有 dependency expression 代表? :表示需要 12 個 protocol 都必需被 install 後才能被執行。PEI 則為 TRUE, 不用任何 PPI 先 install 即可執行。 25. DXE Driver 分為哪兩種? (1)Type1 Non EFI Driver Model,通常執行於 DXE 的一開始,用來做硬體元件 的初始化,或是用來產生 Protocol。 (2)Type2 EFI Driver Model, 不會做任何的硬體初始化,用來控制某些特定的 硬體,使硬體元件能正常運作,通常在 BDS 階段做 connect 用。 26. BDS 階段做哪些事?畫出 BDS 流程圖. :在 Dxe Dispatcher 把控制權交給 BDS protocol 後 (1)初始化 BDS Variable (2)Driver Connet (3)如果 Connet 成功-> boot OS,失敗就回去 Dxe Dispatcher. 27. BDS 會產生哪些 Variable?其功能為? (1)ConIn, ConOut, StdErr, 由這些 Variable 來決定要初始化哪些 Console Device.如鍵盤、滑鼠、螢幕等。 (2)Driver####, DriverOrder, 由這些 Variable 來決定 Driver 被 connect 的 順序。 (3)Boot####, BootOrder, 由這些 Variable 來決定 boot device 的順序。 28. 什麼是 SMM? :System Management Mode, SMM 是一個 cpu 的特殊操作模式,他用來處理必須馬上處理的一些 event, (1)在 EFI 管理 smm 的時候,希望 bios programmer 去 register 一些給某些特 殊 event 要用的 driver, 比如 power button 被按下,他會去觸發 smi,然後去執行他所 regsiter 的 dirver。 (2)在 smm 我們不被允許使用 core protocol services. 會跑到不正常的 code,導致系統當機。 (3)避免去存取傳統的記憶体 resource,因為 smm 用到的 memory 與傳統記憶体 是有衝突的。 (4)Smmlib 提供方法讓使用者使用 dxe core service。 29. 什麼是 Firmware Volume? Firmware Volume 的目的? (1)在 EFI 架構下,我們通常用 Firmware Volume 來表示一個實體的儲存元 件, 比如說像 FLASH Rom,一個 Firmware Volume 可以是一個 Flash Rom 的 一部分, 也可以是很多 Flash Rom 的集合。 (2)會使用這樣的一種架構,最主要的目的是要定出一個統一的規格,讓在不同 的儲存裝置上也能使用同一種檔案格式來儲存。 在需要更新內容的時候,由於都是使用 Firmware Volume 的格式, 根據 Firmware Volume 的存取方式,我們不必太考慮檔案的位置,也方 面做模組化的 Update。 30. Firmware Volume protocol 架構圖 :屬於階層式的架構,在高階存取是利用 Firmware volume driver 來存取,只 需要使用高階語法即可存取。低階存取則依據不同的 storage device 有不同 相對應的 Firmware volume block driver 來做存取。當上層把命令傳給下層 時,會將命令轉成相對應的命令來對 storage device 做存取。所以不必考慮存 取的檔案在什麼 storage device 中。 31. 什麼是 Firmware File System 類似 FAT32 或是 NTFS 的一種檔案系統,專供 Firmware Volume 使用。 此檔案系統在 Storage Device 的基本計算單位是以 File 為單位。 檔案系統的 File 是二進位格式,可以節省 FV 的 Size,並且每個檔案都有固定 格式的檔頭,遵循 Framework Image format 來製作。 每個檔案都是從 FV 的最底端,以連續排列得方式存在。所以 FV 的 Free Space 都會是在 FV 的最頂端。在命名一個 File 的時候是以 GUID 來命名,以確保在一 個 FV 裡面不會有重複出現的檔名,造成搜尋檔案錯誤。 32. 什麼是 HII? :Human Interface Infrastructure. 共通的人機介面架構,使得在字串,字型,輸入裝置跟多國語言都有一套統一 的標準來規範。 主要是提供一個可以調整硬體元件組態設定的介面。所有系統組態設定的 Driver 都會被加入到 Setup Utility 裡面供使用者修改組態。 33. 什麼是 IFR、VFR?String? :Internal Forms Representation. 是人無法看懂的語言,由 VFR 經由 VFR Compile 產生。 VFR 為人所看得懂的語言,由簡單的標籤式語言組成。 :有被 VFR 所參考到的 String,經過 VFR Compiler 之後會變成相對應的 String Token File,方便 IFR 使用。 34. 如何把字型 install 到 HII Database 中。並如何讓使用者使用?使用者設 定的資料存在哪裡?請畫圖! :(1)透過 EFI Driver,它是由 IFR、String Token、Fonts 和 EFI Driver source code 經由 c compile 後產生。 (2)透過 EFI Configuration Driver 來產生 User Interface 來給使用者操作。 (3)NVRAM. 35. CSM 的目的 :(1)boot Legacy OS and load traditional OPROM. (2)模擬 traditional INTs 來讀取 traditional OPROM. (3)更新 traditional table (4)Boot traditional OS 36. CSM(compatibility support Module)的功能 :(1)EFI Compatibility support module code initialization. (2)Traditional OPROM dispatch (3)Discovery device and update traditional table (4)Boot OS (5)Thunk 和 Reverse Thunk 機制 (6)IBV 所提供的 Runtime traditional code. 37. 什麼是 Thunk? :因為 CSM 在 boot legacy OS 和 load traditional OPRom 時,需要在 16bit 環境,但 EFI 是在 32bit,所以透過 Thunk 機制 來把系統環境切換成 16bit,在執行完 16 bit 程式後,再回到 32bit 系統環 境。Reverse Thunk 正好相反,當我們在 16bit 環境,要切換系統環境到 32bit,就要透過 Reverse Thunk。通常沒有使用到 Reverse Thunk,因為我們會希望在 16bit 執行 的程式在執行完就回到 32bit 的系統環境。 38. Legacy support 有哪些? :(1) 主要是支援 Boot 一個 legacy OS,或 Boot 一個在 legacy device 的 EFI OS. (2) 只有 ACPI 支援的 legacy OS 才能被支援。 (3) DOS 雖然不被 ACPI 所支援,但 CSM 還是支援,但不保證所有程式都能運 作。 (4) 支援 16 bit code 的 legacy runtime bios、int18、int19. int18 是 boot device fail 時呼叫的. int 19 是 boot legacy os 所呼叫的。 (5) USB legacy device 必須等到 INT19 以後才支援,其中包括了 USB 鍵盤以 及滑鼠.
0
You can add this document to your study collection(s)
Sign in Available only to authorized usersYou can add this document to your saved list
Sign in Available only to authorized users(For complaints, use another form )