【写在前面】飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适配认证四大板块,旨在共享尖端技术,为开发者提供一个涵盖多领域的开发平台和工具套件。点击这里开始你的技术升级之旅吧
本文分享至飞腾开发者平台《飞腾平台固件规范》
1 前言
本规范适用于基于飞腾处理器的系统平台,提供了飞腾平台固件的基本要求。本规范适用于基于飞腾平台的服务器、桌面机等设备的规划、设计,可作为测试、选型及验收的依据。
2 定义与缩写
2.1 定义和术语
2.1.1 固件
固化到计算机中的非易失性存储器中的一组程序或软件,为计算机提供最基本的硬件初始化,还可能向上层软件提供底层硬件的访问接口或服务。
2.1.2 UEFI
统一可扩展固件接口(Unified Extensible Firmware Interface),是当前应用广泛的一种固件接口标准。
2.1.3 ACPI
高级配置与电源接口(Advanced Configuration and Power Interface),是当前应用广泛的一种固件接口标准,对系统资源进行描述,并提供电源管理等运行时服务。
2.1.4 BIOS
基本输入输出系统(Basic Input/Output System)是计算机中的一种固件,是操作系统和计算机平台硬件之间连接的一个桥梁,负责计算机开机时的硬件检测、设备初始化、操作系统引导并向操作系统提供服务接口。
2.1.5 SMBIOS
系统管理BIOS(System Management BIOS),是当前应用广泛的一种固件接口标准,以数据结构形式对系统资源进行描述。
2.1.6 BMC
基板管理控制器(Baseboard Management Controller),是部署于服务器主板上的具有独立供电、独立I/O接口的控制单元,具有独立网络端口,可被远程访问,可以实现远程监控服务器运行状态、远程电源管理、KVM over IP等功能。
2.1.7 EC
嵌入式控制器(Embedded
Controller),是部署在计算机平台上的控制单元,支持与处理器之间的通信接口,可以实现计算机的电源管理、外设管理、状态监控等功能。
2.1.8 PSPA
飞腾安全平台架构(Phytium Security Platform Architecture),是飞腾提出的面向安全处理器的软硬件规范。
2.1.9 RAID虚拟盘
使用RAID(Redundant Arrays of Independent Disks)技术组合的物理硬盘组称为RAID虚拟盘。
2.1.10 STMM
基于ARM架构的Standalone Management Mode服务。
2.1.11 PFDI
飞腾固件功耗管理控制派发接口。
2.1.12 SE
飞腾系统管理引擎。
2.1.13 RAS
可靠性(Reliability)、可用性(Availability)和可服务性(Serviceability)。
2.2 缩写
缩略语 | 全称 | 解释 |
---|---|---|
A64 | A64 | AArch64使用的64位ARM指令集 |
APEI | ACPI Platform Error Interface | ACPI平台故障接口 |
ESRT | EFI System Resource Table | EFI系统资源表 |
PBF | Processor Base Firmware | 处理器基础固件 |
PSCI | Power State Coordination Interface | 功耗状态协同接口 |
PSSI | Phytium System Service Interface | 飞腾系统服务接口 |
RNG | Random Number Generator | 随机数生成器 |
SDEI | Software Delegated Exception Interface | 软件派发异常接口 |
SCPI | System Control and Power Interface | 系统控制和电源接口 |
SCMI | System Control and Management Interface | 系统控制和管理接口 |
SoL | Serial Over LAN | 基于LAN之上的串口 |
SMCCC | SMC Calling Convention | SMC调用约定 |
TCM | Trusted Cryptography Module | 可信加密模块 |
IPMI | Intelligent Platform Management Interface | 智能平台管理接口 |
EC | Embedded Controller | 嵌入式控制器 |
SMBIOS | System Management BIOS | 系统管理BIOS |
STMM | Standalone Management Mode | 独立管理模式 |
PFDI | Phytium Firmware Dispatch Interface | 飞腾固件功耗管理控制派发接口 |
3 固件框架
飞腾处理器系统中,固件视角下的系统软件栈如下图所示,图中虚线部分是可选项,根据处理器特性和用户需求选择性支持。
固件分为处理器基础固件(Processor Base Firmware,PBF)和系统固件(System Firmware)两层。如果处理器支持,处理器在执行片外固件前,首先执行存储在片内引导引导ROM(Phytium Boot ROM)中的代码。
飞腾处理器提供通用执行环境和可信执行环境,PBF负责两个环境的创建与管理。通用执行环境运行在Non-Secure态,可信执行环境运行在Secure态。
在基于飞腾处理器的计算机平台上,除了飞腾处理器,还可能有带外控制子系统和配套设备。比如,飞腾服务器平台可能有BMC,配套设备可能会使用飞腾套片。固件与带外控制子系统互相合作,共同完成计算机平台的管理。
飞腾平台固件基于PBF3.0架构,详细内容请参考《Processor Base Frimware接口规范》。
4 固件接口
4.1 PBF
PBF负责处理器的基本初始化,并提供运行时服务。
- PBF运行在最高异常等级。
- PBF通过SMC机制,向上层软件提供运行时服务。
- PBF提供的服务兼容SMCCC规范。
- PBF提供PSCI服务。
- PBF提供飞腾平台特有的系统服务,接口遵循PSSI规范。
- PSSI服务包含PBF自身状态的查询。包括但不限于PBF版本号、PSSI接口版本号等。
- PSSI提供飞腾处理器芯片内相关部件的状态查询或配置功能。包括但不限于处理器核、内存控制器、PCIe控制器等。
- PBF提供功耗管理控制派发机制PFDI。
4.2 UEFI
- 系统固件兼容UEFI规范,支持2.9或更高版本。
- UEFI运行在non-secure EL2。
- 遵循UEFI规范,以UEFI配置表方式向操作系统或应用提供内存布局和内存属性信息。在同一个64K物理页面内的所有4K页面具有相同的页面属性,以支持OS使用64KB页表。
- UEFI应用必须是A64二进制格式。
- 设备的UEFI驱动集合中至少包含一个A64二进制格式的UEFI驱动。
- 提供实时时钟(RTC)服务,包括GetTime和SetTime。
- 可选:提供实时时钟唤醒服务,包括SetWakeupTime和GetWakeupTime。
- 提供系统电源控制服务ResetSystem,包括重启EfiResetCold、关机EfiResetShutdown。
- 支持非易失性变量的查询、设置服务,包括GetVariable、SetVariable和GetNextVariableName。
- 提供看门狗服务,包括SetWatchdogTimer。
- 可选:支持UEFI规范的Capsule更新机制:支持ESRT表,支持UpdateCasule和QueryCapsuleCapacities服务。
- 支持随机数生成协议。如果平台有随机数生成硬件模块,可以选择基于硬件模块生成随机数。如果是可信固件,随机数生成应满足可信要求。
- 提供ACPI接口,由RSDP指向ACPI表入口。
- 提供SMBIOS接口,采用SMBIOS_TABLE_GUID标识SMBIOS表,SMBIOS表对应的内存区域为EfiRuntimeServiceData类型。
- 支持设备树。
4.3 ACPI
- 兼容ACPI规范,支持6.3或更高版本。
- 支持ACPI HW-Reduced模型。
- ACPI表中的地址域是64位地址格式。
- 支持RSDP、XSDT、FADT、DSDT、SSDT、MADT、GTDT、DBG2、SPCR、MCFG、PPTT、IORT。
- 如果处理器支持NUMA架构,支持MHAT、SRAT和SLIT。
- 可选支持故障处理相关接口:BERT、EINJ、ERST、HEST、SDEI。
- 可选支持PCCT、SPMI、CPPC调频功能。
- 飞腾的厂商ACPI ID是“PHYT”,基于此来描述飞腾自研设备的_HID。
- ACPI定义块使用_HID标识设备,根据设备描述需要,选择支持_ADR、_CRS、_STA、_CCA等信息。
详细内容请参考《飞腾平台ACPI描述规范》。
4.4 SMBIOS
- 兼容SMBIOS规范,支持3.6.0或更高版本。
- 支持Type 0、1、2、3、4、7、8、9、16、17、19、20、32、38、127等类型的表。
- 根据需要,选择性支持:Type 11、13、15、41、42等类型的表。
- SMBIOS表中,处理器描述信息符合飞腾描述规范。
- SMBIOS表中,厂商描述信息符合对应厂商描述规范。
4.5 PSCI
- 从核引导遵循PSCI规范。
- ACPI FADT描述PSCI信息。
- ACPI MADT中的GICC结构描述所有处理器核的MPIDR。
- 支持PSCI_VERSION、CPU_ON、AFFINITY_INFO、SYSTEM_OFF、SYSTEM_RESET、PSCI_FEATURES。
- 支持CPU_SUSPEND、CPU_OFF,可选支持SYSTEM_SUSPEND。
5 固件功能
5.1 设备支持
5.1.1 CPU
- 能正确识别和初始化飞腾各款处理器。
- 在硬件支持的前提下,能打开和关闭处理器的相关特性。
- BIOS 能对处理器上连接出来的设备(包括但不限于 GPIO、SATA 控制器、USB 控制器、PCI/PCIE 设备和桥、I2C 控制器、Video 设备、Audio 设备、Ethernet 设备)进行正确的识别与初始化。
- 支持CPU频率的配置。
- 支持PCIE控制器的配置,包括使能/禁用状态、拆分模式、链路速率、均衡值。
- 支持CPU核使能/禁用配置。
5.1.2 内存
- 正确识别和初始化处理器支持的内存型号,包括内存模组和内存颗粒。
- BIOS对内存的初始化应基于JEDEC规范定义的SPD数据,SPD数据来源可以从内存条读取,也可以按SPD格式在代码中预设,以支持颗粒形式的内存。
- 基于内存的 SPD 信息或预设信息,显示内存信息,包括但不限于内存容量、频率、类型、Part Number等信息。
- 在硬件支持的前提下,支持用户对某些参数内存的配置,包括但不限于内存频率、ECC使能等。
- 内存工作频率默认初始化成CPU、内存共同支持且不高于BIOS配置界面设置的最高频率。
5.1.3 BIOS FLASH
根据处理器支持情况,支持SPI、QSPI接口Flash芯片。
5.1.4 存储设备
- 能正确识别和初始化不同接口或不同总线协议的存储设备,例如USB/SATA光驱,U盘,SD卡,EMMC,SATA硬盘,SSD硬盘,NVME硬盘,SAS盘,RAID虚拟盘等。
- 能从存储设备安装和引导操作系统。其中,安装源存储设备包括光驱、U盘;安装目标存储设备包括各种物理硬盘和RAID虚拟盘。
5.1.5 输入输出设备
- 支持串口控制台,包括输入与输出。
- 支持USB键盘和PS2键盘作为输入设备。
- 在硬件支持的前提下,支持常见显示接口的输出,包括VGA/HDMI/DVI/ DP等。
5.1.6 板卡
- 能正确的识别常见的PCIe板卡,包括SATA卡、网卡、Raid卡和显卡等。
- 板卡厂商需提供飞腾指令集的板卡UEFI驱动,驱动存放在板卡的EEPROM中,或提供给固件厂商包在固件中。
- 固件能从板卡EEPROM或BIOS
Flash芯片中加载和运行板卡UEFI驱动,完成对板卡的初始化,并使板卡在固件阶段具备相应的功能。 - 对未提供相应指令集板卡驱动的外接板卡,能对其进行基本的资源分配,以满足操作系统识别、初始化、使用该板卡设备的需要。
- 支持各种PCI/PCIE转接卡和扩展卡,能正确的识别和初始化转接卡和扩展卡上连接的各种设备。
5.1.7 设备使能与关闭
- 在硬件支持的条件下,支持将处理器或桥片中设备或端口配置成使能或关闭。
- 未通过硬件连接出来的设备或端口默认为关闭状态。
5.1.8 飞腾套片
在硬件资源条件允许的情况下,支持以下功能:
- 能正确识别飞腾套片中的设备,SATA控制器、USB控制器和显卡。
- 支持套片固件信息的读取,包括版本号、固件编译时间。
- 支持所有USB控制器整体使能/禁用。
- 支持SATA Port使用状态读取,以及在用port的使能/禁用。
- 支持显卡使能/禁用。
- 支持套片中每个PCIE端口的使能/禁用。
- 支持UEFI下更新套片固件,更新过程中有UI界面显示更新进度以及更新完成提示。
- 支持PS2键盘。
5.2 一般功能
固件有明确的版本信息和编译生成时间信息。
5.3 启动OS
- 按UEFI规范启动OS。
- 与OS的接口遵循UEFI、ACPI、SMBIOS等接口规范,详见“4 固件接口”相关章节。
- 支持国内主要操作系统,比如:麒麟操作系统、UOS及其他主流国产操作系统的安装与引导。
- 支持分区格式:GPT分区、MBR分区。
- 支持常见的文件系统,包括但不限于FAT32、EXT2/4、ISO9660等。
- 支持多种引导方式,BIOS按启动项的先后顺序依次尝试启动项。启动项可参考项为网络(如PXE)、USB介质(如闪存盘、USB光驱等)、硬盘(如SAS、SATA等)等。
5.4 网络引导
BIOS应支持标准的PXE引导。
5.5 固件更新
- 固件更新包括对PBF、系统固件、设备固件的更新。
- 固件更新时,需确保新固件的合法性,包括固件版本合法性。
- 支持配置界面或者Shell命令行发起的固件升级。
- BIOS升级之前应有醒目提示信息,提示用户切勿断电或重启机器。
- 固件更新中需要有UI界面提示升级进度,且有更新完成的提示,从升级开始到升级完成应无需人工干预。
- 固件更新有安全性及合法性验证,通过验证才可以进行更新。
- 固件更新完成后,重启生效。
- 默认情况下,经用户设置的BIOS配置在BIOS升级后保持不变,升级前后版本不兼容时可例外。
- 可选:支持操作系统发起的固件更新。
- 可选:支持带外控制系统发起的固件更新,比如BMC。
- 可选:支持固件完整性探测,支持固件恢复机制。
5.6 开机界面
- 支持显卡显示功能。
- 开机画面按飞腾《PBF接口规范》要求,显示飞腾Logo。
- 显示固件界面操作提示信息,包括热键提示信息,比如进入配置界面、网络引导、启动项管理等。
- 开机中等待热键的时间可以配置。
5.7 诊断功能
在硬件支持的情况下,应记录的诊断信息包括但不限于,至少可以通过调试信息查询:
- 检测到无内存。
- 内存初始化成功或失败。
- 检测到无显示输出设备。
- 检测到无启动设备。
6 BIOS配置界面
- 配置界面应能显示系统的基本信息,包括但不限于BIOS信息、主板信息、处理器信息、内存信息、日期时间信息等。
- 配置界面显示语言支持中文或英文,中文应符合GB18030-2022,如果同时支持,则可在配置界面进行设置。
- 支持CPU高级功能配置,包括CPU频率、DDR频率、CORE使能状态、内存初始化模式、PCIE控制器配置、PBF打印等级配置等。
- 在硬件支持的情况下,支持以下功能:
1) 端口开关控制:USB端口开关配置,SATA端口开关配置。
2) 网络开关控制,PXE启动开关控制。
3) 存在双显卡的情况下,可以进行显卡切换配置。 - 使用飞腾套片的情况下,支持以下功能:
1)套片固件基本信息查询,包括固件版本、编译时间。
2)套片USB控制器整体使能/禁用配置。
3)套片SATA各个端口使用状态查询,以及使能/禁用配置。
4)套片显卡使能/禁用配置。
5)套片各个PCIE端口使能/禁用配置。 - 在有BMC的情况下,支持以下功能:
1)BMC基本信息查询,包括设备ID、设备版本、固件版本、产品ID、厂商ID。
2)BMC自检状态查询。
3)掉电恢复策略配置。
4)POST启动看门狗使能/禁用,看门狗超时时间配置及超时行为配置。
5)OS启动看门狗使能/禁用,及看门狗超时时间配置及超时行为配置。
6)BMC网络参数配置。
7)BMC账户管理配置。 - 提供BIOS密码的设置和清除功能,密码分为管理员密码和用户密码。
- 提供启动项优先顺序配置。
- 提供恢复默认配置功能。
- 支持系统时间配置。
- 如果使用EC,支持以下功能:
1)EC版本信息查询。 - 支持串口重定向参数配置。
- 支持USB控制器、USB设备、PCIE设备、硬盘等信息查询。
- 以上内容详情请参考《飞腾平台BIOS SETUP规范》。
7 支持带外控制子系统(可选)
本章内容是可选的,可以根据硬件支持情况及用户应用需求,选择性实现。
7.1 SE(系统管理引擎)
- BIOS能正确识别并初始化与片内系统控制器的通信接口。
- BIOS能按照片内系统控制器实现的接口协议与其通信,比如:SCMI、SCPI接口协议。
7.2 BMC
- BIOS能正确的检测和初始化与BMC的通信接口。
- 当处理器的串口连接到BMC时,支持基于该串口的串口终端。
- 当平台使用BMC中的显示设备作为主机系统的设备时,BIOS能正确的初始化BMC中的显示设备,使其在BIOS下具备相应的功能。
- BIOS能识别和初始化BMC端远程挂载的虚拟媒体设备,包括虚拟存储设备和虚拟输入设备(比如,键盘、鼠标)。
- BIOS能与BMC按照《飞腾平台BMC规范》进行通信。
- 支持IPMI协议。
- 支持BMC状态、BMC设备版本、BMC固件版本等信息的查询。
- 支持对BMC网络进行配置。
- 支持BMC通过IPMI协议选择系统引导设备。
- 基于IPMI协议向BMC发送故障事件。
- 可选支持:Redfish协议。
7.3 EC
- BIOS能正确的检测和初始化与EC的通信接口。
- BIOS能识别和初始化EC端挂载的设备,比如键盘、触摸板等。
- BIOS与EC之间的通信请参考《飞腾平台Embedded Controller接口规范》。
8 安全(可选)
本章内容是可选的,可以根据硬件支持情况及用户应用需求,选择性实现。
8.1 可信执行环境
- 可信执行环境遵循飞腾PSPA规范。
- 支持可信执行环境资源的调整,比如,内存容量、外设等。
- 支持内存数据的秘文读、写、存储。
- 支持资源的安全属性修改,比如,根据用户需求,配置某个外设的安全属性。
- 支持通用执行环境与可信支持环境之间的通信机制,比如SMC服务、中断、共享内存等。
8.2 安全引导
- 遵循UEFI规范的Secure Boot功能。
- 基于可信根构建安全启动流程。
- 采用逐级验签的方式,构建可信启动链。
- 对新导入的重要代码、数据进行延签,验证其合法性。
- 在硬件支持的前提下,支持验签相关算法的硬件加速。
- 支持对第三方模块、驱动或应用的证书进行注册和删除。
8.3 可信模块
在平台具有相应硬件的前提下, BIOS需提供TCM等可信模块功能的支持:
- 自动识别和初始化可信模块。
- 支持可信模块功能的打开与关闭。
- 在用户授权控制下,支持可信模块数据的清除或重置。
- 基于可信模块,实现对关键硬件和核心软件的完整性度量。关键硬件包括硬盘、显卡等;核心软件包括引导程序、重要配置文件以及用户配置列表中的文件。
- 支持可信芯片中可信预期值的更新。
- 如果完整性度量发现异常,固件发出警告、终止启动或者由管理员更新可信预期值或进行其他相关配置。
8.4 固件密码
- 支持管理员密码和用户密码两种密码,两种密码分别设置,彼此独立。
- 设置密码后,必须通过密码验证后,才能进行由密码控制的相关操作。
- 密码以密文方式存储。
- 用户只能修改不得清除用户密码。管理员可以清除或修改用户密码。
8.5 飞腾管理模式MM
- 可选飞腾管理模式MM框架,参考《飞腾管理模式(MM)接口规范》。
- 支持安全态Variable操作。
- 支持安全态固件升级功能。
- RAS。
9 功耗管理(可选)
本章内容是可选的,可以根据硬件支持情况及用户应用需求,选择性实现。
- BIOS提供遵循ACPI、PSCI等规范的功耗管理接口。
- BIOS支持电源管理模式中的S0,S5模式。
- 在硬件平台支持的情况下,BIOS需满足以下电源管理要求:
1) 支持S3模式。
2)超时唤醒功能和网络唤醒功能。
3)支持设备功耗状态的切换,比如,处理器核动态调频、调压。
4)支持设备的关断,比如,处理器核、外设等。
10 RAS
本章内容是可选的,可以根据硬件支持情况及用户应用需求,选择性实现。
- 根据故障原因,对系统故障进行分类。
- 针对系统故障的类别,分别处理。
- 支持故障信息的保存、查询以及保存记录的删除。
- 支持故障在PBF、系统固件、操作系统等多个等级之间逐级上报。支持用户配置故障上报的范围。
- 故障上报接口兼容APEI和SDEI规范。
参考《飞腾RAS软件规范》。
版权所有。飞腾信息技术有限公司 2023。保留所有权利。
未经本公司同意,任何单位、公司或个人不得擅自复制,翻译,摘抄本文档内容的部分或全部,不得以任何方式或途径进行传播和宣传。
商标声明
Phytium和其他飞腾商标均为飞腾信息技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
本文档的内容视为飞腾的保密信息,您应当严格遵守保密任务;未经飞腾事先书面同意,您不得向任何第三方披露本文档内容或提供给任何第三方使用。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,飞腾在现有技术的基础上尽最大努力提供相应的介绍及操作指引,但飞腾在此明确声明对本文档内容的准确性、完整性、适用性、可靠性的等不作任何明示或暗示的保证。
本文档中所有内容,包括但不限于图片、架构设计、页面布局、文字描述,均由飞腾和/或其关联公司依法拥有其知识产权,包括但不限于商标权、专利权、著作权等。非经飞腾和/或其关联公司书面同意,任何人不得擅自使用、修改,复制上述内容。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。