CN107273105B - 固件启动方法和装置 - Google Patents
固件启动方法和装置 Download PDFInfo
- Publication number
- CN107273105B CN107273105B CN201610217575.8A CN201610217575A CN107273105B CN 107273105 B CN107273105 B CN 107273105B CN 201610217575 A CN201610217575 A CN 201610217575A CN 107273105 B CN107273105 B CN 107273105B
- Authority
- CN
- China
- Prior art keywords
- firmware
- initializing
- processor
- module
- core
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/4401—Bootstrapping
- G06F9/4403—Processor initialisation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种固件启动方法和装置,其中,固件启动方法包括:初始化处理器内核,建立固件运行的基础环境;确定所述固件的启动位置,根据所述启动位置构建上层软件传递参数;根据所述上层软件传递参数运行所述固件中的操作系统自启动函数。本发明提供的固件启动方法,可以避免固件开发过程中引入的缺陷和风险,提高了固件的稳定性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种固件启动方法和装置。
背景技术
固件(也称为Firmware),是固化到计算机主板上只读存储器(Read-Only Memory,简称ROM)中的一组程序,它是计算机系统最基础的底层软件,是操作系统运行之前执行的一小段程序,包括基本输入输出程序、系统设置信息、开机自检程序和系统自启动程序等等,可以实现初始化各个硬件设备、初始化高速缓存和内存控制器等等。通过启动固件,可以使得计算机的软硬件环境达到一个确定状态,为最终启动操作系统做好准备。
固件开发不但依赖于处理器的体系结构,而且依赖于计算机系统板级设备的配置,例如:对于2块不同的主板,要想让运行在一块主板上的固件程序也能运行在另一块主板上,一般也需要修改固件的源程序。不同的处理器架构都有各自的固件启动过程,固件开发通常在开源软件的基础上通过修改优化实现。
目前,对于x86架构的处理器和先进的精简指令集处理器(Advanced ReducedInstruction Set Computer Machines,简称ARM),均有相对完善的固件启动过程,通过开源软件可以实现固件启动,例如:可以采用U-boot通用引导装载机实现。但是,对于无内部互锁流水级的微处理器(Microprocessor without interlocked piped stages,简称MIPS),还没有一个完善的固件启动流程和规范,因此,导致了开发人员在固件开发过程中引入了较多的缺陷和风险,降低了固件的稳定性。
发明内容
本发明提供了一种固件启动方法和装置,提供了基于MIPS处理器的一种固件启动流程,以此固件启动流程为基础,可以避免固件开发过程中引入的缺陷和风险,提高了固件的稳定性。
本发明提供的固件启动方法,包括:
初始化处理器内核,建立固件运行的基础环境;
确定所述固件的启动位置,根据所述启动位置构建上层软件传递参数;
根据所述上层软件传递参数运行所述固件中的操作系统自启动函数。
本发明提供的固件启动装置,包括:
处理器初始化模块,用于初始化处理器内核,建立固件运行的基础环境;
固件启动模块,用于确定所述固件的启动位置,根据所述启动位置构建上层软件传递参数;
固件加载模块,用于根据所述上层软件传递参数运行所述固件中的操作系统自启动函数。
本发明提供一种固件启动方法和装置,其中,固件启动方法包括:初始化处理器内核,建立固件运行的基础环境,确定固件的启动位置,根据启动位置构建上层软件传递参数,根据上层软件传递参数运行固件中的操作系统自启动函数。本发明提供的固件启动方法,为基于MIPS架构的处理器提供了一种固件启动流程,明确了固件启动过程中各个阶段的职责,以此固件启动流程为基础,可以避免引入过多的缺陷和风险,从而提高了固件的稳定性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例一提供的固件启动方法的流程图;
图2为本发明实施例二提供的固件启动方法的流程图;
图3为本发明实施例三提供的固件启动方法的流程图;
图4为本发明实施例一提供的固件启动装置的结构示意图;
图5为本发明实施例二提供的固件启动装置的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的固件启动方法和装置,主要应用于基于MIPS处理器的固件启动,用于解决现有的基于MIPS处理器的固件启动流程不规范的问题,在固件开发过程依照本实施例提供的固件启动方法,可以避免引入缺陷和风险,提高了固件的稳定性。
图1为本发明实施例一提供的固件启动方法的流程图,本实施例提供的固件启动方法,执行主体可以为固件启动装置,在计算机系统中,固件启动装置可以是基于MIPS架构的中央处理器(Central Processing Unit,简称CPU)。如图1所示,本实施例提供的固件启动方法,可以包括:
步骤101、初始化处理器内核,建立固件运行的基础环境。
处理器内部包括很多元器件和芯片,例如:处理器内核、运算器、控制器、高速缓冲存储器(也称为Cache)、寄存器,等等。在本步骤中,通过初始化处理器内核,可以建立固件运行的基础环境。具体的,固件运行的基础环境,是指与固件正常运行相关的元器件达到正常状态即可。
其中,处理器内核也称为处理器核心芯片、核心或者内核,处理器所有的计算、接收或者存储命令、处理数据都由处理器内核执行。
可选的,作为本步骤的一种具体实现方式,初始化处理器内核,建立固件运行的基础环境,可以包括:
若处理器内核为单核,则对处理器内核进行初始化处理。其中,初始化处理包括:关中断、配置异常向量、初始化Cache、初始化传输后备缓冲器(Translation LookasideBuffer,简称TLB),以及清理寄存器。
可选的,作为本步骤的另一种具体实现方式,初始化处理器内核,建立固件运行的基础环境,可以包括:
若处理器内核为多核,则在处理器内核中确定主核和至少一个从核,并对主核和每个从核均进行初始化处理。其中,初始化处理包括:关中断、配置异常向量、初始化Cache、初始化TLB,以及清理寄存器。
在上述具体实现方式中,单核或者多核是指处理器内核的数目,如果处理器只有一个处理器内核,该处理器为单核处理器,可以认为处理器内核为单核,如果处理器有多个处理器内核,该处理器为多核处理器,根据处理器内核的数目可以进一步分为双核处理器、四核处理器,等等,此时,可以认为处理器内核为多核。
其中,关中断是指处理器在预设时间内只执行一个程序的指令。异常向量是指,在发生异常时,处理器会跳转到对应该异常的固定地址去执行异常处理程序,该固定地址即为异常向量。TLB用于存储虚拟地址和物理地址之间的对应关系,清理寄存器是指将寄存器清零。
步骤102、确定固件的启动位置,根据启动位置构建上层软件传递参数。
其中,上层软件传递参数是指在固件启动过程中构建的固件传递给上层软件的信息,上层软件包括内核和操作系统,其中,内核是指操作系统最基本的部分,是为众多应用程序提供对计算机硬件的安全访问的一部分软件。
需要说明的是,本实施例对于上层软件传递参数的具体实现方式不做特别限制。例如:上层软件传递参数可以为内存布局、开发板类型,等等,其中,内存布局用于指示内存的分配和使用状况,开发板类型是指各个芯片的型号信息。
可选的,启动位置可以为ROM或者随机存取存储器(Random Access Memory,简称RAM)。
固件只能存储在计算机系统中的ROM中,ROM可以有多种类型,例如:可擦写只读存储器(EraseableReadOnlyMemory,简称EROM)或者电可擦可编程只读存储器(ElectricallyErasable Programmable Read-Only Memory,简称EEPROM),等等。而固件的启动位置可以是ROM,也可以是RAM,例如:当计算机上电第一次启动时,固件的启动位置只能为ROM,在固件启动的过程中,固件被拷贝到RAM中,因此,当计算机上电完成第一次启动之后,RAM中也会存储有固件程序,后续,如果计算机进行休眠操作或者待机操作,当计算机再次启动时,固件的启动位置就可以是RAM,当然,此时固件的启动位置也可以是ROM。
需要说明的是,固件启动位置的应用场景,可以由开发人员根据需要预先设定。
需要说明的是,本实施例对于RAM的具体类别不加以限制,例如:在计算机系统中,RAM可以为内存。
可选的,作为本步骤的一种具体实现方式,确定固件的启动位置,根据启动位置构建上层软件传递参数,可以包括:
若固件的启动位置为ROM,则初始化RAM,将固件转换至RAM中运行,构建上层软件传递参数。
可选的,作为本步骤的另一种具体实现方式,确定固件的启动位置,根据启动位置构建上层软件传递参数,可以包括:
若固件的启动位置为RAM,则直接在RAM中运行固件,构建上层软件传递参数。
在上述具体实现方式中,根据固件的启动位置不同,分别进行固件的启动。由于ROM的存取速率较低,RAM的存取速率较高,所以,当固件的启动位置为ROM时,需要对RAM进行初始化,将固件转移至RAM中运行,从而提升固件的启动速度。当固件的启动位置为RAM时,则直接运行RAM中存储的固件程序。
步骤103、根据上层软件传递参数运行固件中的操作系统自启动函数。
在本步骤中,运行操作系统自启动函数用于自动加载内核和启动操作系统,通过本步骤,完成了固件启动过程中的软件加载功能。
可见,本实施例提供的固件启动方法,为基于MIPS架构的处理器提供了一种固件启动流程,明确了固件启动过程中各个阶段的职责,以此固件启动流程为基础,固件开发人员在固件开发的过程中,根据各个阶段的职责进行源程序代码开发,可以避免引入过多的缺陷和风险,从而提高了固件的稳定性,同时,也提高了开发人员进行固件开发的开发效率。
可选的,在步骤102确定固件的启动位置之前,还可以包括:初始化串口。
串口也称为串行接口或者串行通讯接口,是采用串行通信方式的扩展接口。在计算机系统中,串口可以有多个,且位于计算机主板上的不同位置,例如:串口可以位于处理器内部,或者位于南北桥片上,或者位于计算机主板上。串口可以有多种用途,例如:用于计算机主板上各个器件之间的数据传输或者接口调试,或者用于计算机与其他外部设备之间的通信,等等。
本实施例中的串口,是指计算机内部用于调试的串口。
可选的,作为初始化串口的一种具体实现方式,可以包括:
确定串口的位置。其中,位置包括:处理器内部和/或桥片内部。
若串口位于处理器内部,则对处理器进行与串口相关的初始配置;和/或,若串口位于桥片内部,则对桥片进行与串口相关的初始配置。
通过上述步骤,根据串口的位置,仅对处理器和/或桥片进行与串口相关的初始配置,即,仅对处理器或者桥片进行部分的初始配置,并不是对整个处理器或者整个桥片进行初始配置。由于没有对整个处理器或者整个桥片进行初始配置,因此,避免了不必要的配置导致的系统资源浪费,提升了固件的启动速度,节省了固件的启动时间。
可选的,本实施例提供的固件启动方法,还可以包括:判断操作系统是否启动成功。
若否,则进入交互界面。交互界面上显示有多个信息提示框,信息提示框用于指示操作人员根据信息提示框的显示内容进行手动操作。
通过上述步骤,当操作系统启动失败时,将对操作人员显示交互界面,以便操作人员根据交互界面上各个信息提示框中的显示内容进行下一步的处理,为操作人员在固件启动失败时提供了一种排错处理方式,提升了操作的灵活性。
需要说明的是,本实施例对于交互界面的具体布局不做特别限制,例如:在交互界面上,可以分两列显示各个信息提示框,也可以根据信息提示框的显示内容分区域进行显示。
需要说明的是,本实施例对于信息提示框的数目、显示内容、显示语言和显示形式不做特别限制。例如:信息提示框可以为具有边框的长方形形状,显示语言可以为中文和英文;或者,信息提示框可以仅为显示内容不具有边框的显示形式,信息提示框的显示内容可以为查询设备信息、查询内核名称、手动加载内核、手动启动操作系统,等等。
本实施例提供了一种固件启动方法,包括:初始化处理器内核,建立固件运行的基础环境,确定固件的启动位置,根据启动位置构建上层软件传递参数,根据上层软件传递参数运行固件中的操作系统自启动函数。本实施例提供的固件启动方法,可以避免固件开发过程中引入的缺陷和风险,提高了固件的稳定性。
图2为本发明实施例二提供的固件启动方法的流程图,本实施例在实施例一的基础上,提供了固件启动方法的另一种实现方式,尤其是提供了当固件的启动位置为ROM时的一种具体实现方式。如图2所示,本实施例提供的固件启动方法,初始化RAM,可以包括:
步骤201、对处理器进行基础配置。
其中,基础配置包括:修正处理器主频、配置处理器总线和非法地址访问处理。
在本步骤中,对处理器进行基础配置,是指对处理器自身的相关参数和设备进行配置,并且,仅配置与固件运行相关的参数和设备即可,并不需要对整个处理器进行配置。
其中,处理器主频是指处理器内核工作的时钟频率。
其中,处理器总线主要由处理器使用,用于处理器内核与高速缓冲存储器、内存和桥片之间传送信息。处理器总线可以有多种实现方式,本实施例对此不加以限制。例如:处理器总线可以为互联总线,采用交叉开关实现。
其中,非法地址访问是处理器内部异常错误的一种,例如:处理器访问了被禁止访问的内存,或者其他原因,非法地址访问处理即针对非法地址访问进行的处理操作。
需要说明的是,本实施中的基础配置,不限于修正处理器主频、配置处理器总线和非法地址访问处理这三项,还可以包括其他配置,可以根据需要进行设置。
步骤202、初始化内存。
可选的,作为本步骤的一种具体实现方式,初始化内存,可以包括:
判断I2C总线是否在桥片上。
若是,则对桥片进行与I2C总线相关的初始配置。
通过上述步骤,当I2C总线在桥片上是,仅对桥片进行与I2C总线相关的初始配置,由于没有对整个桥片进行初始配置,因此,避免了不必要的配置导致的系统资源浪费,提升了固件的启动速度,节省了固件的启动时间。
步骤203、初始化与处理器相关的I/O控制器。
其中,输入输出(input/output,简称I/O)控制器是指控制计算机所有输入输出的控制器件,I/O控制器可以有多个,可以位于计算机主板上的不同位置,例如:在处理器内部或者在桥片上。
在本步骤中,仅初始化与处理器相关的I/O控制器,不需要对所有的I/O控制器都进行初始化。由于没有对所有I/O处理器都进行初始化,因此,避免了不必要的初始化导致的系统资源浪费,提升了固件的启动速度,节省了固件的启动时间。
其中,初始化I/O控制器,可以包括:I/O地址映射、桥片互联配置,等等。
步骤204、对内存进行环境配置。
其中,环境配置包括:将固件从ROM中拷贝至内存中、设置堆栈和设置函数传参。
可选的,在步骤202初始化内存之前,还可以包括:
确定ROM的运行模式;其中,运行模式包括:Cache模式和非高速缓冲存储器un-Cache模式。
其中,Cache模式是指在固件运行的过程中通过Cache进行预缓存的模式,具体的,固件中的一部分程序会缓存至Cache中运行,可以增加固件的运行速度。un-Cache模式是指在固件运行的过程中没有用到Cache的模式。
本实施例提供了一种固件启动方法,具体提供了初始化RAM的处理流程,明确了初始化RAM过程中各个阶段的职责,以此固件启动流程和初始化RAM流程为基础,固件开发人员在固件开发的过程中,根据各个阶段的职责进行源程序代码开发,可以避免引入过多的缺陷和风险,从而提高了固件的稳定性,同时,也提高了开发人员进行固件开发的开发效率。
图3为本发明实施例三提供的固件启动方法的流程图,本实施例在实施例一和实施例二的基础上,提供了固件启动方法的又一种实现方式,尤其是提供了实施例一中步骤103中构建上层软件传递参数的一种具体实现方式。如图3所示,本实施例提供的固件启动方法,步骤103中,构建上层软件传递参数,可以包括:
步骤301、执行构造函数。
其中,构造函数是一种特殊的方法,主要用来在创建对象时初始化对象,即为对象成员变量赋初始值。
步骤302、注册数据结构和指令。
步骤303、初始化环境变量。
其中,环境变量是指在操作系统中用来指定操作系统运行环境的一些参数。
步骤304、初始化桥片和PCI控制器。
其中,外设部件互连标准(Peripheral Component Interconnect,简称PCI)是一种局部并行总线标准,PCI控制器用于控制计算机主板上的所有PCI插槽。
在本步骤中,初始化桥片是指初始化整个桥片,即,对桥片上的所有元器件进行初始化。
步骤305、初始化设备驱动程序。
驱动程序是指使操作系统和硬件设备之间通信的特殊程序,相当于硬件设备的接口,操作系统只有通过这个接口,才能控制硬件设备工作。
通过本步骤,初始化所有硬件设备的驱动程序,以使所有硬件设备可以正常工作。
步骤306、启动设备的轮询中断。
其中,中断是指当出现需要时,处理器暂时停止当前程序的执行转而执行处理新情况程序的执行过程。
在本步骤中,通过轮询的方式,依次实现每个硬件设备的中断。
步骤307、构造上层软件传递参数。
可选的,在步骤301执行构造函数之前,还可以包括:
判断固件是否为压缩模式。
若是,则对固件解压缩。
由于计算机系统中ROM的存储空间可能较小,因此,ROM中存储的固件可能是采用压缩算法压缩后的固件,此时,ROM中存储的固件为压缩模式。通过上述步骤,首先判断固件是否为压缩模式,如果是压缩模式,需要在运行固件程序之前,将压缩模式的固件进行解压缩,从而正常运行固件程序。
本实施例提供了一种固件启动方法,具体提供了运行固件构建上层软件传递参数的处理流程,明确了在固件运行过程中的各个阶段的职责,以此固件启动流程为基础,固件开发人员在固件开发的过程中,根据各个阶段的职责进行源程序代码开发,可以避免引入过多的缺陷和风险,从而提高了固件的稳定性,同时,也提高了开发人员进行固件开发的开发效率。
图4为本发明实施例一提供的固件启动装置的结构示意图,本实施例提供的固件启动装置,用于执行图1所示实施例提供的固件启动方法。如图4所示,本实施例提供的固件启动装置,可以包括:
处理器初始化模块11,用于初始化处理器内核,建立固件运行的基础环境。
固件启动模块12,用于确定固件的启动位置,根据启动位置构建上层软件传递参数。
固件加载模块13,用于根据上层软件传递参数运行固件中的操作系统自启动函数。
可选的,处理器初始化模块11,具体用于:
若处理器内核为单核,则对处理器内核进行初始化处理。初始化处理包括:关中断、配置异常向量、初始化Cache、初始化TLB,以及清理寄存器。
可选的,处理器初始化模块11,具体用于:
若处理器内核为多核,则在处理器内核中确定主核和至少一个从核,并对主核和每个从核均进行初始化处理。初始化处理包括:关中断、配置异常向量、初始化Cache、初始化TLB,以及清理寄存器。
可选的,固件启动模块12具体用于:
若固件的启动位置为ROM,则初始化RAM,将固件转换至RAM中运行,构建上层软件传递参数。
可选的,固件启动模块12具体用于:
若固件的启动位置为RAM,则直接在RAM中运行固件,构建上层软件传递参数。
可选的,还可以包括:串口初始化模块14。
串口初始化模块14,用于初始化串口。
可选的,串口初始化模块14具体用于:
确定串口的位置。其中,位置包括:处理器内部和/或桥片内部。
若串口位于处理器内部,则对处理器进行与串口相关的初始配置;和/或,若串口位于桥片内部,则对桥片进行与串口相关的初始配置。
可选的,还可以包括:处理模块15。处理模块15用于:
判断操作系统是否启动成功。
若否,则进入交互界面。交互界面上显示有多个信息提示框,信息提示框用于指示操作人员根据信息提示框的显示内容进行手动操作。
本实施例提供的固件启动装置,可以执行上述方法实施例,其实现原理和技术效果类似,此处不再赘述。
本实施例提供了一种固件启动方法,包括:处理器初始化模块、固件启动模块和固件加载模块。本实施例提供的固件启动装置,可以避免固件开发过程中引入的缺陷和风险,提高了固件的稳定性。
图5为本发明实施例二提供的固件启动装置的结构示意图,本实施例在图4所示实施例的基础上,提供了固件启动装置的另一种实现方式,用于执行图1~图3示出的任一实施例提供的固件启动方法。如图5所示,本实施例提供的固件启动装置,可以包括:处理器初始化模块11、固件启动模块12、固件加载模块13、串口初始化模块14和处理模块15。
其中,固件启动模块12可以包括RAM初始化模块121,RAM初始化模块121包括:处理器配置模块1211、内存初始化模块1212、I/O控制器初始化模块1213和内存环境配置模块1214。
处理器配置模块1211,用于对处理器进行基础配置。其中,基础配置包括:修正处理器主频、配置处理器总线和非法地址访问处理。
内存初始化模块1212,用于初始化内存。
I/O控制器初始化模块1213,用于初始化与处理器相关的I/O控制器。
内存环境配置模块1214,用于对内存进行环境配置。其中,环境配置包括:将固件从ROM中拷贝至内存中、设置堆栈和设置函数传参。
其中,固件启动模块12包括固件运行模块122,固件运行模块122用于:
执行构造函数。
注册数据结构和指令。
初始化环境变量。
初始化桥片和PCI控制器。
初始化设备驱动程序。
启动设备的轮询中断;
构造上层软件传递参数。
可选的,RAM初始化模块121还可以包括:模式确定模块1215。模式确定模块1215用于:
确定ROM的运行模式。其中,运行模式包括:Cache模式和un-Cache模式。
可选的,内存初始化模块1212具体用于:
判断I2C总线是否在桥片上。
若是,则对桥片进行与I2C总线相关的初始配置。
可选的,固件运行模块122还用于:
判断固件是否为压缩模式。
若是,则对固件解压缩。
本实施例提供的固件启动装置,可以执行上述方法实施例,其实现原理和技术效果类似,此处不再赘述。
本实施例提供了一种固件启动方法,可以避免固件开发过程中引入的缺陷和风险,提高了固件的稳定性。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (22)
1.一种固件启动方法,其特征在于,包括:
初始化处理器内核,建立固件运行的基础环境;
确定所述固件的启动位置,根据所述启动位置构建上层软件传递参数;
根据所述上层软件传递参数运行所述固件中的操作系统自启动函数;
在所述确定所述固件的启动位置之前,还包括:初始化串口;
所述初始化串口,包括:
确定所述串口的位置;其中,所述位置包括:处理器内部和/或桥片内部;
若所述串口位于处理器内部,则仅对所述处理器进行与所述串口相关的初始配置;和/或,若所述串口位于桥片内部,则仅对所述桥片进行与所述串口相关的初始配置。
2.根据权利要求1所述的固件启动方法,其特征在于,所述初始化处理器内核,建立固件运行的基础环境,包括:
若所述处理器内核为单核,则对所述处理器内核进行初始化处理;所述初始化处理包括:关中断、配置异常向量、初始化高速缓冲存储器Cache、初始化传输后备缓冲器TLB,以及清理寄存器。
3.根据权利要求1所述的固件启动方法,其特征在于,所述初始化处理器内核,建立固件运行的基础环境,包括:
若所述处理器内核为多核,则在所述处理器内核中确定主核和至少一个从核,并对所述主核和每个所述从核均进行初始化处理;所述初始化处理包括:关中断、配置异常向量、初始化高速缓冲存储器Cache、初始化传输后备缓冲器TLB,以及清理寄存器。
4.根据权利要求1所述的固件启动方法,其特征在于,所述确定所述固件的启动位置,根据所述启动位置构建上层软件传递参数,包括:
若所述固件的启动位置为只读存储器ROM,则初始化随机存取存储器RAM,将所述固件转换至所述RAM中运行,构建所述上层软件传递参数。
5.根据权利要求1所述的固件启动方法,其特征在于,所述确定所述固件的启动位置,根据所述启动位置构建上层软件传递参数,包括:
若所述固件的启动位置为随机存取存储器RAM,则直接在所述RAM中运行所述固件,构建所述上层软件传递参数。
6.根据权利要求4所述的固件启动方法,其特征在于,所述初始化RAM,包括:
对处理器进行基础配置;其中,所述基础配置包括:修正处理器主频、配置处理器总线和非法地址访问处理;
初始化内存;
初始化与所述处理器相关的输入输出I/O控制器;
对所述内存进行环境配置;其中,所述环境配置包括:将所述固件从所述ROM中拷贝至所述内存中、设置堆栈和设置函数传参。
7.根据权利要求6所述的固件启动方法,其特征在于,在所述初始化内存之前,还包括:
确定所述ROM的运行模式;其中,所述运行模式包括:高速缓冲存储器Cache模式和非高速缓冲存储器un-Cache模式。
8.根据权利要求6所述的固件启动方法,其特征在于,所述初始化内存,包括:
判断内置集成电路I2C总线是否在桥片上;
若是,则对所述桥片进行与所述I2C总线相关的初始配置。
9.根据权利要求1所述的固件启动方法,其特征在于,所述构建上层软件传递参数,包括:
执行构造函数;
注册数据结构和指令;
初始化环境变量;
初始化桥片和外设部件互连标准PCI控制器;
初始化设备驱动程序;
启动设备的轮询中断;
构造所述上层软件传递参数。
10.根据权利要求9所述的固件启动方法,其特征在于,在所述执行构造函数之前,还包括:
判断所述固件是否为压缩模式;
若是,则对所述固件解压缩。
11.根据权利要求1至10任一所述的固件启动方法,其特征在于,还包括:判断操作系统是否启动成功;
若否,则进入交互界面;所述交互界面上显示有多个信息提示框,所述信息提示框用于指示操作人员根据所述信息提示框的显示内容进行手动操作。
12.一种固件启动装置,其特征在于,包括:
处理器初始化模块,用于初始化处理器内核,建立固件运行的基础环境;
固件启动模块,用于确定所述固件的启动位置,根据所述启动位置构建上层软件传递参数;
固件加载模块,用于根据所述上层软件传递参数运行所述固件中的操作系统自启动函数;
还包括:串口初始化模块;
所述串口初始化模块,用于初始化串口;
所述串口初始化模块具体用于:
确定所述串口的位置;其中,所述位置包括:处理器内部和/或桥片内部;
若所述串口位于处理器内部,则仅对所述处理器进行与所述串口相关的初始配置;和/或,若所述串口位于桥片内部,则仅对所述桥片进行与所述串口相关的初始配置。
13.根据权利要求12所述的固件启动装置,其特征在于,所述处理器初始化模块,具体用于:
若所述处理器内核为单核,则对所述处理器内核进行初始化处理;所述初始化处理包括:关中断、配置异常向量、初始化高速缓冲存储器Cache、初始化传输后备缓冲器TLB,以及清理寄存器。
14.根据权利要求12所述的固件启动装置,其特征在于,所述处理器初始化模块,具体用于:
若所述处理器内核为多核,则在所述处理器内核中确定主核和至少一个从核,并对所述主核和每个从核均进行初始化处理;所述初始化处理包括:关中断、配置异常向量、初始化高速缓冲存储器Cache、初始化传输后备缓冲器TLB,以及清理寄存器。
15.根据权利要求12所述的固件启动装置,其特征在于,所述固件启动模块具体用于:
若所述固件的启动位置为只读存储器ROM,则初始化随机存取存储器RAM,将所述固件转换至所述RAM中运行,构建所述上层软件传递参数。
16.根据权利要求12所述的固件启动装置,其特征在于,所述固件启动模块具体用于:
若所述固件的启动位置为随机存取存储器RAM,则直接在所述RAM中运行所述固件,构建所述上层软件传递参数。
17.根据权利要求15所述的固件启动装置,其特征在于,所述固件启动模块包括RAM初始化模块,所述RAM初始化模块包括:处理器配置模块、内存初始化模块、I/O控制器初始化模块和内存环境配置模块;
所述处理器配置模块,用于对处理器进行基础配置;其中,所述基础配置包括:修正处理器主频、配置处理器总线和非法地址访问处理;
所述内存初始化模块,用于初始化内存;
所述I/O控制器初始化模块,用于初始化与所述处理器相关的输入输出I/O控制器;
所述内存环境配置模块,用于对所述内存进行环境配置;其中,所述环境配置包括:将所述固件从所述ROM中拷贝至所述内存中、设置堆栈和设置函数传参。
18.根据权利要求17所述的固件启动装置,其特征在于,所述RAM初始化模块还包括:模式确定模块;所述模式确定模块用于:
确定所述ROM的运行模式;其中,所述运行模式包括:高速缓冲存储器Cache模式和非高速缓冲存储器un-Cache模式。
19.根据权利要求17所述的固件启动装置,其特征在于,所述内存初始化模块具体用于:
判断内置集成电路I2C总线是否在桥片上;
若是,则对所述桥片进行与所述I2C总线相关的初始配置。
20.根据权利要求12所述的固件启动装置,其特征在于,所述固件启动模块包括固件运行模块,所述固件运行模块用于:
执行构造函数;
注册数据结构和指令;
初始化环境变量;
初始化桥片和外设部件互连标准PCI控制器;
初始化设备驱动程序;
启动设备的轮询中断;
构造所述上层软件传递参数。
21.根据权利要求20所述的固件启动装置,其特征在于,所述固件运行模块还用于:
判断所述固件是否为压缩模式;
若是,则对所述固件解压缩。
22.根据权利要求12至21任一所述的固件启动装置,其特征在于,还包括:处理模块;所述处理模块用于:
判断操作系统是否启动成功;
若否,则进入交互界面;所述交互界面上显示有多个信息提示框,所述信息提示框用于指示操作人员根据所述信息提示框的显示内容进行手动操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610217575.8A CN107273105B (zh) | 2016-04-08 | 2016-04-08 | 固件启动方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610217575.8A CN107273105B (zh) | 2016-04-08 | 2016-04-08 | 固件启动方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107273105A CN107273105A (zh) | 2017-10-20 |
CN107273105B true CN107273105B (zh) | 2021-06-01 |
Family
ID=60052882
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610217575.8A Active CN107273105B (zh) | 2016-04-08 | 2016-04-08 | 固件启动方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107273105B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113687868A (zh) * | 2021-08-31 | 2021-11-23 | 联想(北京)有限公司 | 设备固件启动方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5602732A (en) * | 1994-12-21 | 1997-02-11 | General Motors Corporation | Fault tolerant displacement determination method |
CN101458622A (zh) * | 2007-12-14 | 2009-06-17 | 环达电脑(上海)有限公司 | 可安装操作系统的计算机装置及其方法 |
CN201522669U (zh) * | 2009-10-16 | 2010-07-07 | 浩鑫股份有限公司 | 计算机主机及其主机板的配置架构 |
CN102122199A (zh) * | 2011-01-20 | 2011-07-13 | 关建国 | 一种可兼容多种计算机系统规格的主板制造方法 |
CN104572164A (zh) * | 2014-03-21 | 2015-04-29 | 中电科技(北京)有限公司 | 一种基于飞腾便携式计算机的uefi固件实现方法 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8165196B2 (en) * | 2006-09-28 | 2012-04-24 | Broadcom Corporation | System, method, and apparatus for display manager |
CN104572161B (zh) * | 2014-03-21 | 2017-10-27 | 中电科技(北京)有限公司 | 一种基于龙芯便携式计算机的uefi固件实现方法 |
CN105429785A (zh) * | 2015-11-02 | 2016-03-23 | 浪潮集团有限公司 | 一种基于sdn方式的交换机操作系统加载方法 |
-
2016
- 2016-04-08 CN CN201610217575.8A patent/CN107273105B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5602732A (en) * | 1994-12-21 | 1997-02-11 | General Motors Corporation | Fault tolerant displacement determination method |
CN101458622A (zh) * | 2007-12-14 | 2009-06-17 | 环达电脑(上海)有限公司 | 可安装操作系统的计算机装置及其方法 |
CN201522669U (zh) * | 2009-10-16 | 2010-07-07 | 浩鑫股份有限公司 | 计算机主机及其主机板的配置架构 |
CN102122199A (zh) * | 2011-01-20 | 2011-07-13 | 关建国 | 一种可兼容多种计算机系统规格的主板制造方法 |
CN104572164A (zh) * | 2014-03-21 | 2015-04-29 | 中电科技(北京)有限公司 | 一种基于飞腾便携式计算机的uefi固件实现方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107273105A (zh) | 2017-10-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109478135B (zh) | 计算机系统和用于重新引导计算机系统的方法 | |
JP6507435B2 (ja) | 命令エミュレーションプロセッサ、方法、およびシステム | |
US8954721B2 (en) | Multi-chip initialization using a parallel firmware boot process | |
US9940291B2 (en) | Assigning processors to memory mapped configuration | |
US11275709B2 (en) | Systems and methods for multi-architecture computing | |
KR102262176B1 (ko) | 예외로부터 리턴할 때 마스크 불가능 인터럽트의 조기 인에이블링의 회피 | |
US20090265708A1 (en) | Information Processing Apparatus and Method of Controlling Information Processing Apparatus | |
US9372702B2 (en) | Non-disruptive code update of a single processor in a multi-processor computing system | |
US20230128809A1 (en) | Efficient fuzz testing of low-level virtual devices | |
WO2000019292A2 (en) | Upgrade card for a computer system | |
CN114661347A (zh) | 用于安全指令集执行、仿真、监控和阻止的装置和方法 | |
EP3910469A1 (en) | Interface and warm reset path for memory device firmware upgrades | |
WO2022066301A1 (en) | Phased boot process to dynamically initialize devices in a verified environment | |
WO2009144892A1 (ja) | デバイスエミュレーション支援装置、デバイスエミュレーション支援方法、デバイスエミュレーション支援回路及び情報処理装置 | |
CN113535245A (zh) | 用于更快的启动过程的多处理器启动流程的方法、系统和设备 | |
CN105556461B (zh) | 用于预os镜像重写以提供跨架构支持、安全性自省和性能优化的技术 | |
EP2325747A2 (en) | Virtual platform for prototyping system-on-chip designs | |
US7203819B2 (en) | Program processing device | |
US5867658A (en) | Method and apparatus for implementing a stop state for a processor in a multiprocessor system | |
CN107273105B (zh) | 固件启动方法和装置 | |
CN113467850A (zh) | 管理程序移除 | |
CN109656758B (zh) | 用于异构双处理器系统芯片的调试方法及系统 | |
AU2017438670B2 (en) | Simulation device, simulation method, and simulation program | |
US20050091022A1 (en) | Ultra fast multi-processor system simulation using dedicated virtual machines | |
JP2003122594A (ja) | 半導体装置および評価装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant after: Loongson Zhongke Technology Co.,Ltd. Address before: 100095 Building 2, Longxin Industrial Park, Zhongguancun environmental protection technology demonstration park, Haidian District, Beijing Applicant before: LOONGSON TECHNOLOGY Corp.,Ltd. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |