没有合适的资源?快使用搜索试试~ 我知道了~
首页UEFI规格2.10:LoongArch平台的加入
"UEFI Specification 2.10 添加了 LoongArch 平台支持,详细阐述了统一可扩展固件接口 (UEFI) 的规范,包括设计概述、驱动模型、迁移要求等内容,适用于 LoongArch 架构的 UEFI BIOS 开发与实现。"
UEFI(Unified Extensible Firmware Interface)是一种现代固件接口标准,它取代了传统的BIOS系统,旨在提供更高效、安全和用户友好的启动过程。UEFI Specification 2.10 版本在原有的基础上增加了对LoongArch架构的支持,LoongArch是一种由中国龙芯公司开发的处理器架构。
1. **包容性术语原则**:
UEFI 规范遵循包容性语言原则,确保文档中使用的术语对所有参与者都是尊重和接纳的。
2. **UEFI 驱动模型扩展**:
UEFI 驱动模型是规范的重要组成部分,2.10 版本可能包含针对LoongArch平台的特定驱动模型扩展,以适应其独特的硬件需求和操作模式。
3. **目标受众**:
这个版本的目标读者包括固件开发者、操作系统提供商、硬件制造商以及对UEFI感兴趣的任何技术专业人员。
4. **UEFI 设计概述**:
文档会详细介绍UEFI的设计思想,如其如何提供一个模块化、可扩展的环境,以及如何通过统一的接口与操作系统交互。
5. **UEFI 驱动模型**:
驱动模型定义了固件如何加载和管理驱动程序,以初始化硬件并为操作系统提供服务。它包括驱动模型的目标、遗留选项ROM的问题,以及如何在不支持UEFI的平台上实现UEFI驱动。
6. **迁移要求**:
文档会讨论如何支持旧的操作系统在UEFI环境中运行,以及如何在传统平台上实现UEFI规范,以帮助平滑过渡到新标准。
7. **文档约定**:
解释了数据结构、协议、程序和指令的描述方式,以及伪代码、排版和数字格式的使用规则,包括十六进制、十进制表示,以及SI和二进制前缀。
8. **UEFI 概览**:
介绍了UEFI的核心组成部分,如Boot Manager、UEFI Images(包含应用程序和OS加载器)、UEFI Drivers等,这些组件协同工作以完成系统的启动流程和设备初始化。
9. **Boot Manager**:
Boot Manager 是UEFI中的关键组件,负责选择和加载操作系统。它处理UEFI映像,包括UEFI应用程序和操作系统加载器,同时也管理UEFI驱动程序,以确保正确初始化硬件。
10. **Firmware Core**:
固件核心是UEFI的基础,它提供了基本的服务,如安全功能、硬件初始化和控制权转移给Boot Manager。
UEFI Specification 2.10 为LoongArch平台的开发者提供了详尽的指南,帮助他们理解和实施符合标准的UEFI BIOS,从而提升硬件平台的兼容性和整体性能。
17.2.9 EFI_USB_IO_PROTOCOL.UsbSyncInterruptTransfer() . . . . . . . . . . . . . . . . . . . 690
17.2.10 EFI_USB_IO_PROTOCOL.UsbIsochronousTransfer() . . . . . . . . . . . . . . . . . . . . 691
17.2.11 EFI_USB_IO_PROTOCOL.UsbAsyncIsochronousTransfer() . . . . . . . . . . . . . . . . . 692
17.2.12 EFI_USB_IO_PROTOCOL.UsbGetDeviceDescriptor() . . . . . . . . . . . . . . . . . . . . 693
17.2.13 EFI_USB_IO_PROTOCOL.UsbGetConfigDescriptor() . . . . . . . . . . . . . . . . . . . . 694
17.2.14 EFI_USB_IO_PROTOCOL.UsbGetInterfaceDescriptor() . . . . . . . . . . . . . . . . . . . 695
17.2.15 EFI_USB_IO_PROTOCOL.UsbGetEndpointDescriptor() . . . . . . . . . . . . . . . . . . . 696
17.2.16 EFI_USB_IO_PROTOCOL.UsbGetStringDescriptor() . . . . . . . . . . . . . . . . . . . . 698
17.2.17 EFI_USB_IO_PROTOCOL.UsbGetSupportedLanguages() . . . . . . . . . . . . . . . . . . 698
17.2.18 EFI_USB_IO_PROTOCOL.UsbPortReset() . . . . . . . . . . . . . . . . . . . . . . . . . . 699
17.3 USB Function Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
17.3.1 EFI_USBFN_IO_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 700
17.3.2 EFI_USBFN_IO_PROTOCOL.DetectPort() . . . . . . . . . . . . . . . . . . . . . . . . . . 702
17.3.3 EFI_USBFN_IO_PROTOCOL.ConfigureEnableEndpoints() . . . . . . . . . . . . . . . . . 703
17.3.4 EFI_USBFN_IO_PROTOCOL.GetEndpointMaxPacketSize() . . . . . . . . . . . . . . . . 704
17.3.5 EFI_USBFN_IO_PROTOCOL.GetDeviceInfo() . . . . . . . . . . . . . . . . . . . . . . . . 705
17.3.6 EFI_USBFN_IO_PROTOCOL.GetVendorIdProductId() . . . . . . . . . . . . . . . . . . . 706
17.3.7 EFI_USBFN_IO_PROTOCOL.AbortTransfer() . . . . . . . . . . . . . . . . . . . . . . . . 706
17.3.8 EFI_USBFN_IO_PROTOCOL.GetEndpointStallState() . . . . . . . . . . . . . . . . . . . . 707
17.3.9 EFI_USBFN_IO_PROTOCOL.SetEndpointStallState() . . . . . . . . . . . . . . . . . . . . 708
17.3.10 EFI_USBFN_IO_PROTOCOL.EventHandler() . . . . . . . . . . . . . . . . . . . . . . . . 708
17.3.11 EFI_USBFN_IO_PROTOCOL.Transfer() . . . . . . . . . . . . . . . . . . . . . . . . . . . 711
17.3.12 EFI_USBFN_IO_PROTOCOL.GetMaxTransferSize() . . . . . . . . . . . . . . . . . . . . 713
17.3.13 EFI_USBFN_IO_PROTOCOL.AllocateTransferBuffer() . . . . . . . . . . . . . . . . . . . 713
17.3.14 EFI_USBFN_IO_PROTOCOL.FreeTransferBuffer() . . . . . . . . . . . . . . . . . . . . . 714
17.3.15 EFI_USBFN_IO_PROTOCOL.StartController() . . . . . . . . . . . . . . . . . . . . . . . . 714
17.3.16 EFI_USBFN_IO_PROTOCOL.StopController() . . . . . . . . . . . . . . . . . . . . . . . . 715
17.3.16.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 715
17.3.17 EFI_USBFN_IO_PROTOCOL.SetEndpointPolicy() . . . . . . . . . . . . . . . . . . . . . . 715
17.3.18 EFI_USBFN_IO_PROTOCOL.GetEndpointPolicy() . . . . . . . . . . . . . . . . . . . . . 717
17.3.19 USB Function Sequence Diagram . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 718
18 Protocols — Debugger Support 720
18.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 720
18.2 EFI Debug Support Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
18.2.1 EFI Debug Support Protocol Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
18.2.2 EFI_DEBUG_SUPPORT_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 721
18.2.3 EFI_DEBUG_SUPPORT_PROTOCOL.GetMaximumProcessorIndex() . . . . . . . . . . . 723
18.2.4 EFI_DEBUG_SUPPORT_PROTOCOL.RegisterPeriodicCallback() . . . . . . . . . . . . . 723
18.2.5 EFI_DEBUG_SUPPORT_PROTOCOL.RegisterExceptionCallback() . . . . . . . . . . . . 731
18.2.6 EFI_DEBUG_SUPPORT_PROTOCOL.InvalidateInstructionCache() . . . . . . . . . . . . . 735
18.3 EFI Debugport Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
18.3.1 EFI Debugport Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
18.3.2 EFI_DEBUGPORT_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 736
18.3.3 EFI_DEBUGPORT_PROTOCOL.Reset() . . . . . . . . . . . . . . . . . . . . . . . . . . . 737
18.3.4 EFI_DEBUGPORT_PROTOCOL.Write() . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
18.3.5 EFI_DEBUGPORT_PROTOCOL.Read() . . . . . . . . . . . . . . . . . . . . . . . . . . . 738
18.3.6 EFI_DEBUGPORT_PROTOCOL.Poll() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 739
18.3.7 Debugport Device Path . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
18.3.8 EFI Debugport Variable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 740
18.4 EFI Debug Support Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
18.4.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 741
18.4.2 EFI System Table Location . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
18.4.3 EFI Image Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 742
xv
19 Protocols — Compression Algorithm Specification 744
19.1 Algorithm Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 744
19.2 Data Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
19.2.1 Bit Order . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 745
19.2.2 Overall Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
19.2.3 Block Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 746
19.2.3.1 Block Header . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 747
19.2.3.2 Block Body . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
19.3 Compressor Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
19.3.1 Overall Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 752
19.3.2 String Info Log . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
19.3.2.1 Data Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
19.3.2.2 Searching the Tree . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 754
19.3.2.3 Adding String Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
19.3.2.4 Deleting String Info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 755
19.3.3 Huffman Code Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
19.3.3.1 Huffman Tree Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
19.3.3.2 Code Length Adjustment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 757
19.3.3.3 Code Generation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
19.4 Decompressor Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 758
19.5 Decompress Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
19.5.1 EFI_DECOMPRESS_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 759
19.5.2 EFI_DECOMPRESS_PROTOCOL.GetInfo() . . . . . . . . . . . . . . . . . . . . . . . . . 759
19.5.3 EFI_DECOMPRESS_PROTOCOL.Decompress() . . . . . . . . . . . . . . . . . . . . . . . 760
20 Protocols — ACPI Protocols 762
20.1 EFI_ACPI_TABLE_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762
20.2 EFI_ACPI_TABLE_PROTOCOL.InstallAcpiTable() . . . . . . . . . . . . . . . . . . . . . . . . . . 762
20.3 EFI_ACPI_TABLE_PROTOCOL.UninstallAcpiTable() . . . . . . . . . . . . . . . . . . . . . . . . 763
21 Protocols — String Services 765
21.1 Unicode Collation Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 765
21.1.1 EFI_UNICODE_COLLATION_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . 765
21.1.2 EFI_UNICODE_COLLATION_PROTOCOL.StriColl() . . . . . . . . . . . . . . . . . . . . 766
21.1.3 EFI_UNICODE_COLLATION_PROTOCOL.MetaiMatch() . . . . . . . . . . . . . . . . . 767
21.1.4 EFI_UNICODE_COLLATION_PROTOCOL.StrLwr() . . . . . . . . . . . . . . . . . . . . 768
21.1.5 EFI_UNICODE_COLLATION_PROTOCOL.StrUpr() . . . . . . . . . . . . . . . . . . . . 768
21.1.6 EFI_UNICODE_COLLATION_PROTOCOL.FatToStr() . . . . . . . . . . . . . . . . . . . 769
21.1.7 EFI_UNICODE_COLLATION_PROTOCOL.StrToFat() . . . . . . . . . . . . . . . . . . . 769
21.2 Regular Expression Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 770
21.2.1 EFI_REGULAR_EXPRESSION_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . 770
21.2.2 EFI_REGULAR_EXPRESSION_PROTOCOL.MatchString() . . . . . . . . . . . . . . . . 770
21.2.3 EFI_REGULAR_EXPRESSION_PROTOCOL.GetInfo() . . . . . . . . . . . . . . . . . . . 772
21.2.4 EFI Regular Expression Syntax Type Definitions . . . . . . . . . . . . . . . . . . . . . . . 773
22 EFI Byte Code Virtual Machine 774
22.1 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
22.1.1 Processor Architecture Independence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 774
22.1.2 OS Independent . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
22.1.3 EFI Compliant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
22.1.4 Coexistence of Legacy Option ROMs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
22.1.5 Relocatable Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 775
22.1.6 Size Restrictions Based on Memory Available . . . . . . . . . . . . . . . . . . . . . . . . . 776
22.2 Memory Ordering . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
xvi
22.3 Virtual Machine Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 776
22.4 Natural Indexing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 777
22.4.1 Sign Bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
22.4.2 Bits Assigned to Natural Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
22.4.3 Constant . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
22.4.4 Natural Units . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 778
22.5 EBC Instruction Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
22.5.1 Direct Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
22.5.2 Indirect Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
22.5.3 Indirect with Index Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 779
22.5.4 Immediate Operands . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
22.6 EBC Instruction Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 780
22.7 Instruction Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
22.7.1 Instruction Opcode Byte Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
22.7.2 Instruction Operands Byte Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 781
22.7.3 Index/Immediate Data Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
22.8 EBC Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
22.8.1 ADD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 782
22.8.2 AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 783
22.8.3 ASHR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 784
22.8.4 BREAK . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 785
22.8.5 CALL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 786
22.8.6 CMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 788
22.8.7 CMPI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 789
22.8.8 DIV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 791
22.8.9 DIVU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 792
22.8.10 EXTNDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 793
22.8.11 EXTNDD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 794
22.8.12 EXTNDW . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 795
22.8.13 JMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 796
22.8.14 JMP8 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 797
22.8.15 LOADSP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 798
22.8.16 MOD . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 799
22.8.17 MODU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 800
22.8.18 MOV . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 801
22.8.19 MOVI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802
22.8.20 MOVIn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 803
22.8.21 MOVn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 804
22.8.22 MOVREL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 805
22.8.23 MOVsn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 806
22.8.24 MUL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 808
22.8.25 MULU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 809
22.8.26 NEG . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 810
22.8.27 NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811
22.8.28 OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812
22.8.29 POP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 813
22.8.30 POPn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 814
22.8.31 PUSH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 815
22.8.32 PUSHn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
22.8.33 RET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 816
22.8.34 SHL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 817
22.8.35 SHR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 818
22.8.36 STORESP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 819
22.8.37 SUB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 820
xvii
22.8.38 XOR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821
22.9 Runtime and Software Conventions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
22.9.1 Calling Outside VM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
22.9.2 Calling Inside VM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
22.9.3 Parameter Passing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
22.9.4 Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
22.9.5 Binary Format . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
22.10 Architectural Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 822
22.10.1 EBC Image Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
22.10.2 EBC Execution Interfacing Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
22.10.3 Interfacing Function Parameters Requirements . . . . . . . . . . . . . . . . . . . . . . . . 823
22.10.4 Function Return Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
22.10.5 Function Return Values Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 823
22.11 EBC Interpreter Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
22.11.1 EFI_EBC_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
22.11.2 EFI_EBC_PROTOCOL.CreateThunk() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 824
22.11.3 EFI_EBC_PROTOCOL.UnloadImage() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 825
22.11.4 EFI_EBC_PROTOCOL.RegisterICacheFlush() . . . . . . . . . . . . . . . . . . . . . . . . 826
22.11.5 EFI_EBC_PROTOCOL.GetVersion() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
22.12 EBC Tools . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
22.12.1 EBC C Compiler . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
22.12.2 C Coding Convention . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 827
22.12.3 EBC Interface Assembly Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
22.12.4 Stack Maintenance and Argument Passing . . . . . . . . . . . . . . . . . . . . . . . . . . . 828
22.12.5 Native to EBC Arguments Calling Convention . . . . . . . . . . . . . . . . . . . . . . . . . 828
22.12.6 EBC to Native Arguments Calling Convention . . . . . . . . . . . . . . . . . . . . . . . . . 828
22.12.7 EBC to EBC Arguments Calling Convention . . . . . . . . . . . . . . . . . . . . . . . . . 829
22.12.8 Function Returns . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
22.12.9 Function Return Values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
22.12.10Thunking . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
22.12.10.1Thunking EBC to Native Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . 829
22.12.10.2Thunking Native Code to EBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . 830
22.12.10.3Thunking EBC to EBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
22.12.11EBC Linker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 831
22.12.12Image Loader . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
22.12.13Debug Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
22.13 VM Exception Handling . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
22.13.1 Divide By 0 Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
22.13.2 Debug Break Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
22.13.3 Invalid Opcode Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 832
22.13.4 Stack Fault Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
22.13.5 Alignment Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
22.13.6 Instruction Encoding Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
22.13.7 Bad Break Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
22.13.8 Undefined Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
22.14 Option ROM Formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 833
22.14.1 EFI Drivers for PCI Add-in Cards . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
22.14.2 Non-PCI Bus Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 834
23 Firmware Update and Reporting 835
23.1 Firmware Management Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 835
23.1.1 EFI_FIRMWARE_MANAGEMENT_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . 835
23.1.2 EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetImageInfo() . . . . . . . . . . . . . 836
23.1.3 EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetImage() . . . . . . . . . . . . . . . 841
xviii
23.1.4 EFI_FIRMWARE_MANAGEMENT_PROTOCOL.SetImage() . . . . . . . . . . . . . . . . 842
23.1.5 EFI_FIRMWARE_MANAGEMENT_PROTOCOL.CheckImage() . . . . . . . . . . . . . . 843
23.1.6 EFI_FIRMWARE_MANAGEMENT_PROTOCOL.GetPackageInfo() . . . . . . . . . . . . 845
23.1.7 EFI_FIRMWARE_MANAGEMENT_PROTOCOL.SetPackageInfo() . . . . . . . . . . . . 846
23.2 Dependency Expression Instruction Set . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 847
23.2.1 PUSH_GUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
23.2.2 PUSH_VERSION . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 848
23.2.3 DECLARE_VERSION_NAME . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
23.2.4 AND . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 849
23.2.5 OR . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
23.2.6 NOT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 850
23.2.7 TRUE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
23.2.8 FALSE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
23.2.9 EQ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 851
23.2.10 GT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
23.2.11 GTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 852
23.2.12 LT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
23.2.13 LTE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853
23.2.14 END . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
23.2.15 DECLARE_LENGTH . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854
23.3 Delivering Capsules Containing Updates toFirmware Management Protocol . . . . . . . . . . . . . . 855
23.3.1 EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID . . . . . . . . . . . . . . . . . 855
23.3.2 DEFINED FIRMWARE MANAGEMENT PROTOCOL DATA CAPSULE STRUCTURE . 856
23.3.3 Firmware Processing of the Capsule Identified by EFI_FIRMWARE_MANAGEMENT_CAPSULE_ID_GUID859
23.4 EFI System Resource Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860
23.4.1 EFI_SYSTEM_RESOURCE_TABLE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 860
23.4.2 Adding and Removing Devices from the ESRT . . . . . . . . . . . . . . . . . . . . . . . . 862
23.4.3 ESRT and Firmware Management Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . 863
23.4.4 Mapping Firmware Management Protocol Descriptors to ESRT Entries . . . . . . . . . . . 863
23.5 Delivering Capsule Containing JSON payload . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
23.5.1 EFI_JSON_CAPSULE_ID_GUID . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
23.5.2 Defined JSON Capsule Data Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 864
23.5.3 Firmware Processing of the Capsule Identified by EFI_JSON_CAPSULE_ID_GUID . . . . 866
24 Network Protocols — SNP, PXE, BIS and HTTP Boot 867
24.1 Simple Network Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 867
24.1.1 EFI_SIMPLE_NETWORK_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . 867
24.1.2 EFI_SIMPLE_NETWORK.Start() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
24.1.3 EFI_SIMPLE_NETWORK.Stop() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 871
24.1.4 EFI_SIMPLE_NETWORK.Initialize() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 872
24.1.5 EFI_SIMPLE_NETWORK.Reset() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
24.1.6 EFI_SIMPLE_NETWORK.Shutdown() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 873
24.1.7 EFI_SIMPLE_NETWORK.ReceiveFilters() . . . . . . . . . . . . . . . . . . . . . . . . . . 874
24.1.8 EFI_SIMPLE_NETWORK.StationAddress() . . . . . . . . . . . . . . . . . . . . . . . . . 876
24.1.9 EFI_SIMPLE_NETWORK.Statistics() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 877
24.1.10 EFI_SIMPLE_NETWORK.MCastIPtoMAC() . . . . . . . . . . . . . . . . . . . . . . . . . 879
24.1.11 EFI_SIMPLE_NETWORK.NvData() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 880
24.1.12 EFI_SIMPLE_NETWORK.GetStatus() . . . . . . . . . . . . . . . . . . . . . . . . . . . . 881
24.1.13 EFI_SIMPLE_NETWORK.Transmit() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 883
24.1.14 EFI_SIMPLE_NETWORK.Receive() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 884
24.2 Network Interface Identifier Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 885
24.2.1 EFI_NETWORK_INTERFACE_IDENTIFIER_PROTOCOL . . . . . . . . . . . . . . . . . 885
24.3 PXE Base Code Protocol . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
24.3.1 EFI_PXE_BASE_CODE_PROTOCOL . . . . . . . . . . . . . . . . . . . . . . . . . . . . 887
xix
剩余2144页未读,继续阅读
2020-07-14 上传
2024-06-16 上传
2021-09-30 上传
2019-03-12 上传
2021-10-02 上传
2019-07-23 上传
2019-08-29 上传
2019-08-29 上传
来杯清咖_
- 粉丝: 378
- 资源: 22
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- JavaScript实现的高效pomodoro时钟教程
- CMake 3.25.3版本发布:程序员必备构建工具
- 直流无刷电机控制技术项目源码集合
- Ak Kamal电子安全客户端加载器-CRX插件介绍
- 揭露流氓软件:月息背后的秘密
- 京东自动抢购茅台脚本指南:如何设置eid与fp参数
- 动态格式化Matlab轴刻度标签 - ticklabelformat实用教程
- DSTUHack2021后端接口与Go语言实现解析
- CMake 3.25.2版本Linux软件包发布
- Node.js网络数据抓取技术深入解析
- QRSorteios-crx扩展:优化税务文件扫描流程
- 掌握JavaScript中的算法技巧
- Rails+React打造MF员工租房解决方案
- Utsanjan:自学成才的UI/UX设计师与技术博客作者
- CMake 3.25.2版本发布,支持Windows x86_64架构
- AR_RENTAL平台:HTML技术在增强现实领域的应用
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功