当前位置:   article > 正文

BIOS之飞腾平台代码框架_飞腾bios flash 分配

飞腾bios flash 分配

代码执行流程

  1. 头文件
    (上电、内存初始化等)

  2. 飞腾部分代码
    (CPU/内存信息传递、初始化等)

  3. 昆仑 + 飞腾部分代码

    1. 获取CPU/内存信息
    2. 加载各设备驱动
    3. 点亮显卡、界面
    4. 引导OS等

头文件包

/Code/KunLunPackTool
  • 1

界面驱动相关包

/Code/KunLunModulePkg(昆仑代码)
  • 1
  1. 界面显示相关:
    ./BdsDxe
  2. 部分驱动:
    ./Drivers
  3. 启动OS:
    ./GenericBdsLib

CPU/Memory、驱动相关包

Code/PhytiumPkg(含有飞腾代码)
  • 1
  1. CPU/内存参数传递等
  2. 内存相关初始化模块
  3. 部分驱动
  4. 设备信息描述(ACPI)
  5. CPU平台工程文件(.dec, .dsc, .fdf)

IPMI通信包

/Code/KlIpmiPkg
  • 1

BIOS与BMC通信功能(IPMI)

开源包

/Code/ArmPkg
/Code/ArmPlatformPkg
/Code/MdeModulePkg
/Code/MdePkg
/Code/NetworkPkg
  • 1
  • 2
  • 3
  • 4
  • 5
  1. ARM架构相关
  2. 库函数(lib)
  3. 开源、标准驱动、协议(PCI设备、网络等)

EDK2子目录介绍

1.AppPkg

UEFI Application Development Kit是一系列用来进行UEFI APP开发的套件,标准依赖库,工具以及demo,目标是降低UEFI APP的开发门槛。

2.MdePkg

全称为Module Development Environment Package,这是一个特殊的package,包含了用于开发一个module所需要的最小环境,一个module可能也会依赖于其它的package,但是所有的modules必须依赖于MdePkg。

3.MdeModulePkg

此包提供符合UEFI/PI工业标准的模块,也提供该标准的开发环境,PPIs/PROTOCOLs/GUIDs和依赖库。

4.ArmPkg

提供ARM架构相关的protocols,属于ARM平台上的通用代码。

5.ArmPlatformPkg

ARM开发板相关的UEFI代码,包含ARM平台上通用的一些组件,重复利用这些组件会令ARM平台的不同板型之间的移植变得更加容易。

6.BaseTools

该包提供编译相关的工具用于EDK和EDK2,比如:AutoGen, Build, GenFV, GenFW, GenRds工具。

7.BeagleBoardPkg

BeaglBoard是一个便宜并且灵活的单板电脑,玩过开发板的同学应该都了解过,基于OMAP3530 SOC(ARM Cortex TM-A8)处理器的开发板。这个包里是对此开发板的支持代码。

8.CorebootModulePkg

Coreboot原本和UEFI/BIOS是竞争关系,但是现在Coreboot也逐渐向UEFI标准靠拢,目前依靠此包可以轻松从Coreboot启动到UEFI, Coreboot Support Modules包含了如下代码:用来解析coreboot table的代码,报告存储器/IO资源的代码,安装acpi table和smbios table到EFI系统表中的代码。它位于uefi环境和hardware的中间层。

9.CorebootPayloadPkg

用来加载上层UEFI环境的中间层,Hardware->Coreboot->CorebootPayloadPkg->UEFI->HLOS

10.CryptoPkg

UEFI定义了HLOS(high level OS)和平台固件之间的接口,多个安全特性也在2.2版本之后加入其中,此包是用来提供加密支持的。

11.DuetPkg

开发者使用的UEFI模拟器,能够在BIOS机器上模拟UEFI环境。DUET是基于Legacy BIOS提供了UEFI模拟器,提供了在传统BIOS系统上的UEFI环境。

12.EdkCompatibilityPkg

EDK兼容包提供库和头文件用来使能在UEFI2.0+Framework0.9x模式下的EDK编译。

13.EdkShellPkg、EdkShellBinPkg

EDK Shell开发包以及一个官方的EDK Shell实现,这两个包已经在被Shell 2.x逐渐取代了。

14.ShellPkg、ShellBinPkg

Shell 2.x版本开发包以及一个官方的UEFI Shell实现。

15.EmbeddedPkg

为memory mapped controllers提供protocol实现,以及一个简单的EFI shell(EBL)。

16.EmulatorPkg

Emulator虚拟环境,用来取代Nt32Pkg和UnixPkg,可以跨平台编译运行的一个虚拟器。

17.Nt32Pkg

一个win环境下的UEFI虚拟器,不能用于加载实际的OS,只能用来调试UEFI代码。已经逐渐被Emulator取代。

18.UnixPkg

一个类似Unix操作系统下的UEFI虚拟器,已经逐渐被Emulator取代。

19.OvmfPkg

OVMF是用来给虚拟机提供UEFI支持的包,可以使用QEMU和KVM来引导OVMF固件,并进一步引导HLOS。

20.NetworkPkg

提供网络支持的包,比如:IPv6网络协议栈/IPsec驱动/PXE驱动/iSCSI驱动/网络配置相关的shell app。

21.Omap35xxPkg

Omap35xxPkg是Texas Instrument OMAP35xx平台支持包。

22.OptionRomPkg

这个包的目的是为了提供Option ROM image支持的,如果要编译PCI兼容的Option ROM image,需要依赖此包。

23.SecurityPkg

提供了四种安全相关的特性:TPM, User identification (UID), secure boot, authenticated variable,StdLib, StdLibPrivateInternalFiles
StdLib提供了标准库的UDK实现,StdLibPrivateInternalFiles包是用来给StdLib使用的,不能用作其他引用。

24.UefiCpuPkg

提供兼容UEFI的CPU模块和库。

25.SourceLevelDebugPkg

用来提供debug支持的包。

26.SignedCapsulePkg

提供了一个签名校验方案,用来支持安全升级和恢复。

27.PcAtChipsetPkg

这个包提供了符合PcAt标准器件的接口和实现。

28.FatPkg, FatBinPkg

FAT支持包。

Other

BaseTools:编译工具
Conf: tools_def编译参数

.dsc:Platform description
.dec:Package Declaration (包装声明)
.inf:Module Define define a component (模块定义的一个组件)
.fdf:Flash Description
.klvfr:界面显示


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/article/detail/50174
推荐阅读
相关标签
  

闽ICP备14008679号