一种基于飞腾台式计算机的uefi固件实现方法

文档序号:8258046阅读:1128来源:国知局
一种基于飞腾台式计算机的uefi固件实现方法
【技术领域】
[0001]本发明属于计算机固件技术领域,涉及一种基于飞腾处理器台式计算机系统(以下简称飞腾台式机)的UEFI固件的实现方法。
【背景技术】
[0002]UEFI (Unified Extensible Firmware Interface,统一的可扩展固件接口)是一种计算机固件(或称为B1S)的接口规范,也是关于固件的最主要的工业标准。UEFI规范最初是面向Intel公司的Itanium和X86处理器进行制定的,但是UEFI规范本身是与处理器架构无关的,目前已经应用于X86、Itanium、ARM等处理器平台。符合UEFI规范的计算机固件(以下简称UEFI固件)相对于传统的固件有很多优越性,目前主流的X86商用计算机系统基本上都是采用了 UEFI固件。
[0003]飞腾是由国防科学技术大学研制的国产通用中央处理器,采用SPARC精简指令集架构,实现了多核心、多线程,支持硬件虚拟化技术。飞腾处理器已形成多款型号产品,可应用于台式、便携式计算机以及服务器产品。目前应用于台式计算机产品的飞腾处理器主要是FT1000A,FT1000A是一个SOC芯片,不仅包含处理器核心,还集成了多个外设控制器。
[0004]OBP(Open Boot PROM)是飞腾处理器平台上的固件,最初是由SUN公司于1989年提出。OBP符合IEEE1275标准,主要负责飞腾处理器平台上电自检、平台初始化和引导操作系统。由于飞腾处理器支持硬件虚拟化,所以在系统上电时首先运行一个虚拟机监控器Hypervisor,由Hypervisor实现硬件资源虚拟化和硬件资源管理,然后将控制权交给启动固件OBP。与UEFI固件相比,OBP存在很多不足,主要表现在:0ΒΡ是用Forth编写的,Forth语言是冷门语言,掌握这门语言的开发人员很少,造成开发难度很大,维护也很困难;OBP是基于SUN公司提供的开源代码来开发的,使用OBP的公司很少,缺乏产业链的广泛支持;OBP仅对板载驱动是Forth语言编写的外设进行支持,很难支持主流的外设。

【发明内容】

[0005]本发明的目的主要是为了解决上述现有技术的缺陷,提供一种基于飞腾台式计算机的UEFI固件的实现方法。根据这个方法,可以在飞腾台式机上实现出符合国际主流UEFI固件规范、可扩展性强、功能完善的固件产品,并且能完全替代0ΒΡ,以支持飞腾台式机的正常启动和运行。
[0006]一种基于飞腾台式机的UEFI固件的实现方法,固件划分为硬件抽象层、固件核心层、设备协议层和固件应用层。
[0007]其中,硬件抽象层实现处理器、内存、外设控制器等关键硬件部件的初始化,对其他板级硬件进行包装和抽象并实现初始化,同时为上层模块提供访问底层硬件设备的函数接口。其包括处理器驱动模块和外设驱动模块,处理器驱动模块完成处理器、内存的初始化工作,并提供访问处理器和内存的接口 ;外设驱动模块主要是主板上各种外设的驱动,如显卡、硬盘、键盘、USB设备、网卡等,每个外设会对应一个(或多个)驱动模块。对于基于FT1000A的硬件平台,外设驱动模块还要完成处理器中集成的外设控制器的初始化和资源分配工作。
[0008]固件核心层类似于操作系统的内核,建立UEFI中的系统服务表,进行固件中所有模块的统一管理和各种资源的管理。其包括固件核心加载模块、固件核心模块和基础架构功能模块,固件核心加载模块负责加载固件核心模块,并为其准备运行环境,固件核心模块负责建立UEFI规范中的启动服务(Boot Service)和运行时服务(Runtime Service)表,加载、运行其他功能模块,管理各模块之间的交互,实现内存的管理,实现和维护时钟中断和事件机制,实现和维护固件应用的特权级机制,实现UEFI规范中定义的Protocol的管理机制,实现UEFI规范要求实现的其他机制和功能,如调试接口、压缩算法、变量存储/处理等。基础架构功能模块实现UEFI规范中的Architectural Protocol,包括多个功能模块,每个模块实现一个 Architectural Protocol。每个 Architectural Protocol 包含一些基础服务接口,供固件中的其他功能模块调用。
[0009]设备协议层实现各种标准的工业规范,包括总线协议、外设接口等。其包括总线协议模块,实现各种总线协议,如 PCI / PCIE、SATA, PATA, SCS1、USB、ISA、SMBUS, LPCBUS 等。通常是一个模块实现一种总线协议,并通过UEFI规范中的Protocol机制“发布”这些总线的接口,这样其他模块就可以使用这些接口来访问总线。
[0010]固件应用层实现固件的各项功能,如配置界面、系统监控、文件系统、操作系统引导等;其包括设备扫描模块、人机界面模块、系统监控模块、IEEE1275支持模块、系统启动模块、内核加载模块和Shell模块,设备扫描模块枚举系统中的所有外部设备,如PCI / PCIE总线上的设备,为这些设备分配资源,并将设备与相应的外设驱动模块进行Connect (也即交给该设备驱动进行管理);人机界面模块位于显卡驱动模块之上,实现所有显示相关的接口,如设置显示模式、在特定位置打印字符串、显示图片、清屏等;系统监控模块实时检测处理器温度、系统电压和风扇转速,根据温度值来调整风扇的转速,允许用户设定温度阈值,当温度过高时,进行自动关机;IEEE1275支持模块实现IEEE1275规范中定义的固件与操作系统的函数接口、数据结构,供操作系统在启动和运行阶段调用;系统启动模块提供一个图形化的用户配置界面,用户通过菜单操作的方式,查看系统信息和对系统进行配置。最后根据用户的选择,从存储设备启动操作系统;文件系统模块实现FAT /FAT32、EXT2 / 3 / 4和IS09660文件系统,支持对文件的读取操作;内核加载模块在系统启动的最后阶段,这个模块从硬盘、U盘、光盘等存储介质中将内核文件(或内核加载器)加载到内存中,并为内核文件准备必要的参数,然后跳转到内核(或内核加载器)的入口点执行,这样就将控制权交给了操作系统;Shell模块Shell是UEFI固件提供的一个命令行环境,基于UEFI固件中提供的大量接口服务,可以开发出Shell下的多种固件应用程序。
[0011]本发明的基于飞腾台式机的UEFI固件的具体运行步骤如下:
[0012](I)初始化处理器、内存,建立起固件运行的基本环境;
[0013](2)将UEFI固件代码复制到内存,并对固件进行解压,加载固件核心模块;
[0014](3)建立UEFI固件的基础服务;
[0015](4)加载UEFI固件功能模块,包括基础架构功能模块、设备协议模块;
[0016](5)扫描设备并为设备分配系统资源,加载设备驱动模块,完成设备初始化;
[0017](6)加载执行固件应用模块;
[0018](7)运行配置界面;
[0019](8)从存储设备加载操作系统。
[0020]上述步骤中,步骤(I)中执行处理器驱动模块。在步骤(I)执行之前,系统中的虚拟机监控器Hypervisor已经实现了物理处理器和内存的初始化,此时处理器驱动模块只需要对虚拟的处理器、内存进行初始化,进行参数的配置,以及提供访问CPU、Cache、内存等部件的接口。
[0021]上述步骤中,步骤(2)中执行固件核心加载模块。步骤(I)执行完成后,系统内存已经初始化好,此时固件代码可以在内存中运行以加快运行速度;而且可以用C语言来实现固件代码,加快开发速度。固件中包含的功能模块较多,而FLASH芯片的容量有限,一般需要将存放功能模块的固件卷进行压缩,固件核心加载模块负责从FLASH中将压缩的固件卷复制到内存中,并进行解压;解压成功后,在内存中创建H0B(Hand_0ff Block)数据表,存放处理器、内存、FLASH等系统信息,提供给后续的固件模块使用;最后,固件核心加载模块将控制权交给固件核心模块。
[0022]上述步骤中,步骤(3)中执行固件核心模块。固件核心模块首先初始化UEFI的系统服务,为后续的功能模块的加载、运行做准备。主要是完成UEFI系统表、UEFI启动服务表和UEFI运行时服务表的初始化,具
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1