一种基于飞腾服务器的uefi固件实现方法_2

文档序号:8258045阅读:来源:国知局
管理、Η0Β、UEFI时钟、FLASH访问、解压缩、固件卷解析、UEFI事件、任务优先级、UEFI Protocol管理、UEFI变量存取等。系统服务表存放在内存的特定区域,UEFI固件中的所有功能模块都可以调用这些系统服务。
[0023]上述步骤中,步骤(4)中固件核心模块加载固件的功能模块。固件核心模块通过检索固件卷,依次查找其中的功能模块,并将其加载到内存中。每个功能模块都被编译成一个PE / ELF格式的可执行镜像,固件核心模块需要解析功能模块镜像,然后加载到内存的特定地址处,并跳转到入口函数。功能模块的入口函数执行完成后,通常会返回到固件核心模块,固件核心模块继续进行下一个功能模块的加载。
[0024]在步骤(4)中被加载的模块包括基础架构功能模块、设备协议模块。其中,基础架构功能模块主要功能是实现UEFI规范中的Architectural Protocol,主要包括:Boot Device Select1n (BDS)、CPU、Metronome、Monotonic Counter、RealTime Clock、Runtime>Security>Status Code>Timer>Variable>Variable ffrite>ffatchdog Timer,每个Architectural Protocol由一个模块来实现;设备协议层模块主要实现访问PCI / PCIE、SATA, PATA, SCS1、USB、ISA、SMBUS, LPCBUS 等总线的函数接口,并封装在 Protocol 中供其他功能模块调用,通常是一个模块实现一种总线协议。
[0025]上述步骤中,步骤(5)中完成设备的初始工作。固件核心模块加载设备驱动模块,实现主板上外设的初始化和实现访问外设的函数接口,包括南北桥芯片、显卡、SATA / IDE控制器、USB控制器、SMBUS控制器、LPC控制器、键盘、网卡等。通常由一个模块实现一种设备驱动。另外,在这个阶段由设备扫描模块扫描系统中的所有外设,并为外设分配内存、10和中断资源,这样外设在操作系统下才能正常工作。
[0026]上述步骤中,步骤¢)中固件核心模块加载固件卷中的固件应用模块,并实现对应的固件功能。包括显示模块、系统监控模块、服务器管理支持模块、IEEE1275支持模块、文件系统模块、内核加载模块、Shell模块、系统启动模块。最后,固件核心模块将控制权交给系统启动模块,准备启动操作系统。
[0027]上述步骤中,步骤(7)中系统启动模块通过调用固件核心模块和其他功能模块提供的服务接口,显示出图形配置界面作为人机交互界面。在这个阶段,固件根据用户的操作来进行下一步的工作,包括提供系统信息的显示和系统参数的配置,以及选择要启动的设备,包括硬盘、光盘、U盘、命令行等。用户通过特定按键退出配置界面进入到下一个执行步骤。
[0028]上述步骤中,步骤(8)中实现操作系统的启动。根据用户配置的启动顺序,系统启动模块依次尝试从硬盘、光盘、U盘等介质将操作系统内核文件(或内核加载器)加载到内存,并为内核准备必要的启动参数,然后将控制权交给内核(或内核加载器),从而完成系统的启动工作。操作系统启动完成后,可调用固件中实现的IEEE1275接口和数据结构。
[0029]有益效果:
[0030]1、本发明的方法符合国际主流的UEFI和PI固件规范,可利用UEFI联盟提供的开源代码资源快速实现固件;很多外设板卡厂商都提供基于UEFI规范的驱动,也可大大加快固件开发的进度;固件层可以提供更多的设备驱动和丰富的固件功能。另外,UEFI固件支持主要的计算机工业标准,如目前飞腾处理器还不支持的ACPI (高级配置和电源管理接口)规范,这样采用本发明设计的固件可以方便地增加对这些规范的支持。
[0031]2、本发明设计的UEFI固件的重要特点是高度模块化,固件所要实现的功能被分解成很多子功能,每个子功能由单独的模块来实现,并由一个核心模块来加载和管理这些功能模块。因此可以通过增删模块来方便地定制固件的功能。
[0032]3、本发明设计的UEFI固件可以实现对主流外设的支持,解决飞腾处理器平台传统固件OBP在外设兼容支持方面的缺陷,对于推动飞腾处理器的产业化带来好处。
【附图说明】
[0033]图1是基于飞腾服务器的UEFI固件的架构示意图。
【具体实施方式】
[0034]下面结合附图并举实施例,对本发明进行详细描述。
[0035]如附图1表示,下面以扬州万方公司设计的一款型号为WANGFANG-FT1000A-SERVER-V1.4的服务器主板为例,来介绍本发明描述的UEFI固件的【具体实施方式】。主要包括以下步骤:
[0036](I)实现STU阶段的功能模块,包括两个模块,这个两个模块在编译以后将依次被放到FLASH芯片的开始位置,并在系统上电后依次被执行。包括:
[0037](1.1)创建一个Start模块,即处理器驱动模块。根据飞腾FT1000A处理器手册实现处理器、Cache (高速缓存)、内存、地址窗口、TLB (旁路转换缓冲)等初始化,实现MCU (内存控制器)、SMBUS和内存的初始化,并提供访问CPU、Cache、内存等部件的接口 ;
[0038](1.2)创建一个Sec模块。这个模块的实现的功能包括在内存创建一些存放处理器、内存信息的数据结构,将FLASH芯片中的功能模块解压到内存中,最后加载执行固件核心模块DxeCore。
[0039](2)实现固件核心模块DxeCore。要实现的功能主要包括:实现UEFI规范中定义的启动服务和运行时服务表,加载、运行其他功能模块,管理各模块之间的交互,实现内存的管理,实现和维护时钟中断和事件机制,实现和维护固件应用的特权级机制,实现UEFI规范中定义的Protocol的管理机制,实现基础函数库,以及调试接口、压缩算法、变量存储/
处理等。
[0040](3)实现 Architectural Protocol,包括 Variable, Variable Write, Timer, CPU,Metronome, Monotonic Counter, Status Code, Watchdog Timer, RTC, BDS。一个模块实现一种 Architectural Protocol。
[0041](4)实现外设驱动模块。包括:
[0042](4.1)实现芯片组的驱动模块。根据芯片组手册实现对AMD RS780北桥芯片、AMDSB710南桥芯片的初始化,以及南桥芯片中PCI总线、USB、SATA / IDE,LPC / SMBUS总线、HD Aud1控制器的初始化。
[0043](4.2)实现外设驱动模块,包括显卡驱动、USB存储设备驱动、PS2键盘驱动、USB键盘驱动、SATA设备驱动、IDE设备驱动、网卡驱动、时钟中断驱动。
[0044](4.3)实现外设枚举模块,枚举PCI / PCIE总线上的设备,并为设备分配10、内存和中断资源。
[0045](5)实现总线驱动模块,包括 PCI / PCIE、SATA, PATA, SCS1、USB、ISA、SMBUS,LPCBUS,一个模块实现一种总线协议。
[0046](6)实现固件应用层模块。主要包括:
[0047](6.1)实现图形界面模块。可实现一个图形化的配置界面或命令行环境,支持用户查看处理器型号和频率、内存容量和频率、系统时间、启动顺序、外设列表等,并允许用户对系统时间、启动顺序进行配置。
[0048](6.2)实现 IEEE1275 支持模块,根据 IEEE Std.1275-1994 和 IEEEStd.1275.1-1994规范,建立操作系统启动和运行所需要的设备树(Device Tree),实现客户程序接口(Client Interface)、设备接口(Device Interface)等。
[0049](6.3)实现内核引导模块,在内存中创建数据结构以存放操作系统需要的运行参数,并根据用户的配置,从硬盘、U盘、光盘的固定扇区中读取操作系统内核加载器SILO (Sparc Improved boot LOader)到内存中,最后将控制权交给SIL0,由SILO完成操作系统内核的加载。
[0050](6.4)实现系统启动模块,其功能包括
当前第2页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1