●第1章UEFI的世界1
1.1LegacyBIOS1
1.1.1LegacyBIOS的啟動過程2
1.1.2LegacyBIOS的不足之處4
1.2UEFIBIOS6
1.2.1UEFI標準概述6
1.2.2UEFIBIOS的優點8
1.2.3UEFIBIOS的啟動過程9
1.2.4國產計算機與UEFI13
1.3本章小結15
第2章UEFI開發和調試環境搭建16
2.1搭建Windows下的UEFI開發環境17
2.1.1安裝開發工具17
2.1.2配置開發環境18
2.1.3編譯UEFI模擬器和UEFI程序20
2.1.4使用模擬器運行UEFI程序22
2.2Windows下調試UEFI程序24
2.2.1使用VisualStudio調試UEFI程序24
2.2.2使用WINDBG調試UEFI程序27
2.3搭建Linux下的UEFI開發環境30
2.3.1安裝開發工具31
2.3.2配置開發環境32
2.3.3編譯UEFI模擬器和UEFI程序32
2.3.4使用模擬器運行UEFI程序33
2.4Linux下調試UEFI程序34
2.4.1使用GDB調試UEFI程序34
2.4.2使用IntelUDKDebuggerTool和GDB調試UEFI程序37
2.5制作UEFI啟動盤40
2.6本章小結41
第3章構建UEFI應用42
3.1模塊和包概述42
3.2搭建UEFI工程模塊44
3.2.1DSC文件44
3.2.2INF文件50
3.2.33種入口函數的UEFI應用55
3.2.4庫模塊的編寫61
3.2.5其他工程文件63
3.3搭建UEFI包72
3.3.1包的DSC和DEC文件72
3.3.2添加並編譯模塊73
3.4用C++編寫UEFI應用74
3.4.1支持基礎功能75
3.4.2支持全局類77
3.5使用UEFIProtocol81
3.5.1Protocol概述81
3.5.2支持使用Protocol的函數83
3.5.3使用Protocol示例91
3.6本章小結93
第4章圖形與漢字顯示94
4.1UEFI圖形顯示95
4.1.1圖形顯示的Protocol95
4.1.2圖形顯示基本函數的實現101
4.2UEFI漢字顯示—寫像素點的方式107
4.2.1點陣字的顯示與字庫提取108
4.2.2寫像素點的漢字顯示110
4.3UEFI漢字顯示—HII方式115
4.3.1HII字體與字庫提取116
4.3.2HII漢字顯示119
4.3.3HII字符串127
4.4本章小結132
第5章圖像顯示及特效133
5.1UEFI圖像顯示—寫屏方式134
5.1.1BMP圖像顯示134
5.1.2PCX圖像顯示140
5.1.3JPEG圖像顯示145
5.2UEFI圖像顯示—HII方式150
5.2.1圖像處理Protocol150
5.2.2HII圖像顯示153
5.3圖像顯示的特效157
5.3.1圖像塊處理基本函數的實現157
5.3.2顏色變換特效161
5.3.3鏡像顯示165
5.3.4圖像塊顯示與清屏166
5.4本章小結170
第6章GUI開發與移植172
6.1支持GUI的基礎服務172
6.1.1UEFI事件處理173
6.1.2UEFI鍵盤處理179
6.1.3UEFI鼠標處理185
6.1.4構建GUI框架186
6.2開源GUI框架191
6.2.1GuiLite介紹191
6.2.2使用GuiLite編程195
6.3GUI框架的移植200
6.4本章小結203
第7章UEFI環境下訪問外設205
7.1訪問PCI/PCIE設備205
7.1.1與PCI/PCIE設備通信的機制206
7.1.2支持訪問PCI/PCIE設備的Protocol209
7.1.3訪問PCI/PCIE設備示例213
7.2訪問SMBus設備216
7.2.1SMBus協議簡介216
7.2.2支持訪問SMBus設備的Protocol218
7.2.3訪問SMBus設備示例220
7.3訪問串口設備223
7.3.1串口協議簡介223
7.3.2支持訪問串口設備的Protocol225
7.3.3訪問串口設備示例228
7.4本章小結230
第8章UEFI驅動與OptionROM232
8.1服務型驅動233
8.1.1安裝與卸載Protocol233
8.1.2構建服務型驅動236
8.1.3訪問示例Protocol242
8.2UEFI驅動模型243
8.2.1EFIDriverBindingProtocol243
8.2.2EFIComponentNameProtocol247
8.2.3完成驅動框架及其測試248
8.2.4構建UEFI驅動及其測試程序251
8.2.5測試UEFI驅動256
8.3編寫OptionROM258
8.3.1PCIOptionROM簡介258
8.3.2編寫UEFIOptionROM264
8.3.3編譯及測試OptionROM268
8.4本章小結272
第9章UEFI與USB273
9.1USB規範簡介274
9.1.1USB通信原理276
9.1.2USB描述符280
9.1.3USB標準命令285
9.1.4USBHID設備287
9.2支持USB訪問的Protocol292
9.2.1EFI_USB2_HC_PROTOCOL292
9.2.2EFI_USB_IO_PROTOCOL294
9.2.3列舉USB控制器和設備297
9.3訪問USBHID設備299
9.3.1制作USBHID設備299
9.3.2在UEFI下訪問USBHID設備305
9.4本章小結307
第10章UEFI與網絡309
10.1準備UEFI網絡測試環境311
10.1.1搭建Nt32模擬器的網絡環境311
10.1.2在真實UEFI環境下使用網絡313
10.1.3在虛擬機UEFI環境下使用網絡:VirtualBox314
10.1.4在虛擬機UEFI環境下使用網絡:QEMU314
10.1.5IPv6網絡測試環境搭建316
10.2使用UEFIProtocol開發網絡程序317
10.2.1開發Windows的TCP4服務端程序318
10.2.2開發UEFI的TCP4客戶端程序323
10.3使用StdLib的Socket接口開發網絡程序334
10.3.1使用Socket編寫UEFITCP4客戶端程序334
10.3.2開發Windows的TCP6服務端程序337
10.3.3使用Socket編寫UEFITCP6客戶端程序340
10.4本章小結342
第11章龍芯平臺上開發UEFI程序343
11.1龍芯平臺概述343
11.1.1龍芯產品介紹344
11.1.23A4000的CPU架構簡介346
11.2龍芯彙編語言348
11.2.1安裝LinuxLab349
11.2.2龍芯彙編語言實驗351
11.3龍芯平臺UEFI開發環境354
11.3.1搭建龍芯平臺UEFI開發環境355
11.3.2編譯示例工程356
11.4本章小結357
第12章飛騰平臺上開發UEFI程序358
12.1飛騰平臺概述359
12.1.1飛騰產品介紹359
12.1.2FT-2000/4的CPU架構簡介361
12.2搭建飛騰平臺UEFI開發環境363
12.2.1準備EDK2環境364
12.2.2使用Linux繫統與gcc-arm365
12.2.3使用Linux繫統與LinaroUEFI工具367
12.3飛騰平臺的UEFI程序測試368
12.3.1Windows繫統下的UEFI測試環境369
12.3.2Linux繫統下的UEFI測試環境372
12.3.3測試示例工程372
12.4本章小結374
附錄UEFIShell內置命令375
《UEFI編程實踐》繫統地介紹了X86、龍芯、飛騰架構下的UEFI應用和驅動開發,繫統調試專家、《軟件調試》作者張銀奎,以及UEFI專家、《UEFI原理與編程》作者戴正華聯袂推薦。《UEFI編程實踐》以項目開發為導向,采取“近實戰,多實例”的方式,細致深入地介紹了UEFI應用和驅動開發相關的知識。第1~3章,介紹了UEFI繫統的組成、啟動過程,在各種操作繫統中搭建和調試開發環境的方法,以及UEFI應用和驅動開發的基本方法。第4~10章以實際的開發實踐為索引,介紹了圖形圖像開發、漢字顯示、GUI構建、訪問PGI/PCIE設備、訪問SMBus設備、訪問串口設備、實現USB通信和網絡通信等內容。這部分以貼近實際開發的方式來構建實例,並深入剖析相關硬件協議及其在UEFI上的實現。第11章和第12章,講解了龍芯和飛騰架構,以及如何在這兩類國產處理器上進行UEFI軟件開發。