处理器初始化方法及装置制造方法
【专利摘要】本发明公开了一种处理器初始化方法及装置,该方法包括:在硬件复位期间对相同架构下的处理器进行配置,其中,处理器属于同一系列且内核相同;对处理器及其片外资源进行初始化。本发明通过同一引导程序对相同架构下的处理器进行配置和初始化,将同类产品的引导程序编译为同一个文件,增加了引导程序的灵活性,便于引导程序版本的维护和管理,且进行不同硬件设备(即片外资源)的初始化工作,为底层软件进一步屏蔽了硬件差别。
【专利说明】处理器初始化方法及装置
【技术领域】
[0001]本发明涉及通信领域,具体而言,涉及一种处理器初始化方法及装置。
【背景技术】
[0002]在嵌入式设备中,需要通过引导程序引导操作系统,目前市场上通讯类产品有很大一部分使用PowerPC架构处理器,其引导程序选用U_Boot。U-Boot的实现理念是对于不同的单板使用不同的板级配置文件,是完全的静态方式,即一个引导程序只能引导一块单板,引导程序缺乏灵活性,而且版本管理不方便。
【发明内容】
[0003]本发明提供了一种处理器初始化方法及装置,以至少解决相关技术中,一个引导程序只能引导一块单板,缺乏灵活性且版本管理不方便的问题。
[0004]根据本发明的一个方面,提供了一种处理器初始化方法,包括:在硬件复位期间对相同架构下的处理器进行配置,其中,处理器属于同一系列且内核相同;对处理器及其片外资源进行初始化。
[0005]优选地,在硬件复位期间对相同架构下的处理器进行配置包括:通过通用引导程序获取处理器的配置信息,其中,通用引导程序是引导多个单板的引导程序;根据配置信息对处理器进行上电配置。
[0006]优选地,通过通用引导程序获取处理器的配置信息包括:通过可擦除可编程逻辑器件(Erasable Programmable Logic Device,简称为 EPLD)实现只读存储器(Read OnlyMemory,简称为ROM),并将处理器的配置信息保存到ROM中;在硬件复位期间将处理器发送的地址信号映射到ROM ;读取ROM中的配置信息。
[0007]优选地,对处理器及其片外资源进行初始化包括:初始化处理器的内核,读取处理器内核中标识处理器具体型号的寄存器;根据处理器的具体型号对处理器进行初始化。
[0008]优选地,在根据处理器的具体型号对处理器进行初始化之后,上述方法还包括:通过访问在硬件复位期间获取配置信息时已经配置的片外资源,获取不同单板的类型;根据不同单板的类型对未配置的片外资源以及处理器内部的功能模块进行初始化。
[0009]优选地,在硬件复位期间获取配置信息时已经配置的片外资源至少包括:EPLD。
[0010]根据本发明的另一方面,提供了一种处理器初始化装置,包括:配置模块,用于在硬件复位期间对相同架构下的处理器进行配置,其中,处理器属于同一系列且内核相同;初始化模块,用于对处理器及其片外资源进行初始化。
[0011]优选地,配置模块包括:获取单元,用于通过通用引导程序获取处理器的配置信息,其中,通用引导程序是引导多个单板的引导程序;配置单元,用于根据配置信息对处理器进行上电配置。
[0012]优选地,获取单元包括:处理子单元,用于通过EPLD实现ROM ;保存子单元,用于将处理器的配置信息保存到ROM中;映射子单元,用于在硬件复位期间将处理器发送的地址信号映射到ROM ;读取子单元,用于读取ROM中的配置信息。
[0013]优选地,初始化模块包括:第一初始化单元,用于初始化处理器的内核;读取单元,用于读取内核中标识处理器具体型号的寄存器;第二初始化单元,用于根据处理器的具体型号对处理器进行初始化。
[0014]本发明通过同一引导程序对相同架构下的处理器进行配置和初始化,将同类产品的引导程序编译为同一个文件,增加了引导程序的灵活性,便于引导程序版本的维护和管理,且进行不同硬件设备(即片外资源)的初始化工作,为底层软件进一步屏蔽了硬件差别。
【专利附图】
【附图说明】
[0015]此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0016]图1是根据本发明实施例的处理器初始化方法的流程图;
[0017]图2是根据本发明优选实施例的利用EPLD实现ROM、读取配置信息以及地址映射的不意图;
[0018]图3是根据本发明优选实施例的相同架构下同一系列处理器的通用引导程序的实现示意图;
[0019]图4是根据本发明优选实施例的处理器初始化方法的流程图;
[0020]图5是根据本发明实施例的处理器初始化装置的结构框图;
[0021]图6是根据本发明优选实施例的处理器初始化装置的结构框图一;
[0022]图7是根据本发明优选实施例的处理器初始化装置的结构框图二。
【具体实施方式】
[0023]需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0024]本发明实施例提供了一种处理器初始化方法,图1是根据本发明实施例的处理器初始化方法的流程图,如图1所示,包括如下的步骤S102至步骤S104。
[0025]步骤S102,在硬件复位期间对相同架构下的处理器进行配置,其中,处理器属于同一系列且内核相同。
[0026]步骤S104,对处理器及其片外资源进行初始化。
[0027]相关技术中,一个引导程序只能引导一块单板,缺乏灵活性且版本管理不方便。本发明实施例中,通过同一引导程序对相同架构下的处理器进行配置和初始化,将同类产品的引导程序编译为同一个文件,增加了引导程序的灵活性,便于引导程序版本的维护和管理,且进行不同硬件设备(即片外资源)的初始化工作,为底层软件进一步屏蔽了硬件差别。
[0028]需要说明的是,本发明实施例中的处理器需要满足两个前提条件:1、相同架构下,同一系列的处理器;2、处理器内核相同。这是因为相同架构的处理器在上电启动过程中具有相同的流程;相同的内核,可以保证处理器复位上电后,执行指令的一致性。只有满足这两个条件,对处理器具体型号的区分才有意义。在实际应用中,软件实现可以基于U-Boot开源代码,同时需要对U-boot代码进行架构调整和部分修改,并且在某些情况向需要借助其他硬件器件,如EPLD等。[0029]优选地,步骤S102包括:通过通用弓I导程序获取处理器的配置信息,其中,通用引导程序是引导多个单板的引导程序;根据配置信息对处理器进行上电配置。当然,配置也可以通过上下拉电阻实现,或者通过常用总线接口的设备进行获取配置信息。
[0030]通过通用引导程序获取处理器的配置信息包括:通过EPLD实现R0M,并将处理器的配置信息保存到ROM中;在硬件复位期间将处理器发送的地址信号映射到ROM ;读取ROM中的配置信息。本优选实施例中,利用EPLD实现R0M,从而进行地址映射以读取配置信息,避免了不同型号处理器的配置信息的差异对通用引导程序的实现的影响。
[0031]优选地,步骤S104包括:初始化处理器的内核,读取处理器内核中标识处理器具体型号的寄存器;根据处理器的具体型号对处理器进行初始化。
[0032]在根据处理器的具体型号对处理器进行初始化之后,上述方法还包括:通过访问在硬件复位期间获取配置信息时已经配置的片外资源,获取不同单板的类型;根据不同单板的类型对未配置的片外资源以及处理器内部的功能模块进行初始化。需要说明的是,在硬件复位期间获取配置信息时已经配置的片外资源至少包括:EPLD。在实际应用中,需要为每种单板定制唯一的逻辑程序(通过EPLD实现),其他功能可由引导程序代码完成,实现对处理器具体型号的屏蔽。
[0033]为了实现通用弓丨导程序,需要解决以下三个主要问题:一、处理器硬件复位期间的配置;二、动态实现对具体型号处理器的初始化;三、动态实现对不同类型单板的初始化。下面分别加以介绍。
[0034]一、处理器硬件复位期间的配置
[0035]在处理器硬件复位期间需要对处理器的启动设备(即引导程序的存放位置)、处理器时钟和锁相环、以及处理器的一些启动模式等进行配置,而进行这种配置的方法可以通过上下拉电阻实现,可以通过常用总线接口的设备(如I2C接口的电可擦除可编程只读存储器(Electrically Erasable Programmable Read-only Memory,简称为 EEPROM))进行获取,可以通过引导程序本身保存的配置信息进行获取。
[0036]其中,最为灵活并且最为通用的方法是将配置信息保存在引导程序中,由于本发明采用的是通用引导程序,这会引入一个新问题,即不同型号的处理器所需要的配置信息不尽相同,而又不能将不同型号处理器的配置信息都存储在通用引导程序中,对此,需要借助于EPLD实现一个逻辑功能,具体如下:通过EPLD实现一个R0M,将配置信息保存在ROM中,在硬件复位期间将处理器发送的地址信号,映射到EPLD内部实现的ROM空间,处理器便可以读取ROM中的配置信息,在若干时钟周期后,EPLD结束地址映射,返回正常状态,不影响处理器对正常地址空间的访问。这样在通用引导程序中就无需存储配置信息。利用EPLD实现ROM、读取配置信息以及地址映射的示意图参见图2,图2中只对从NOR Flash(闪存)执行引导程序的情况进行说明,引导程序中的虚线框表示无需在引导程序中存储配置信息。对于不同的启动设备(NOR Flash或者NAND Flash)具体的实现方法略有不同,但原理是一样的,此处不再赘述。
[0037]二、动态实现对具体型号处理器的初始化
[0038]由于相同架构下同一系列的处理器,具有相同的上电启动流程,即在上电后可以从某个地址上取指令,执行指令。在初始化处理器核心后(相同的核心),便可通过处理器核心空间内的寄存器获取处理器的具体型号,这是获取处理器型号的唯一方式,也是引导程序最早可以获得处理器型号的时机。
[0039]通过处理器型号的差异,进一步对处理器进行初始化。这里需要说明的是相同架构下同一系列处理器的内部地址空间肯定是互相兼容的(硬件厂商通常会这样做)。对于设备制造商来说同一型号处理器在使用上基本不会有太大差异,所以对同一型号处理器的初始化可以视为相同(如片上和片外资源的分配,内存管理单元(Memory Management Unit,简称为MMU)属性、输入输出(Input Output,简称为10)属性的配置等)。这样软件就可以在处理器执行若干指令后,通过读取处理器的型号信息,分别对不同型号处理器的片上和片外资源空间,IO管脚,以及必要的寄存器进行初始化。这个过程只需要完成处理器所必需的相关资源初始化的工作即可。在对片上和片外资源的分配上,软件要做好规划,保证同一型号处理器下的不同单板之间相互兼容。
[0040]三、动态实现对不同类型单板的初始化
[0041]有了上一步的保证,处理器就可以实现对片外资源的访问,对于某些片外资源需要进一步对处理器的相关功能模块进行初始化,如片外随机存取器(Random AccessMemory,简称为RAM)等,而某些片外资源在第一步,即处理器硬件复位期间的配置已经完成,如EPLD等。这时可以通过对片外资源(如EPLD)的访问,来动态识别单板的具体类型(在EPLD的逻辑中实现相关内部寄存器),根据不同类型的单板来完成对相关硬件的初始化工作。引导程序通常保存在NOR Flash或NAND Flash中,引导程序中到第三步为止,代码会在NOR Flash中或者NAND Flash RAM中执行,在获得单板类型后,可以对片外RAM进行初始化,将引导程序代码拷贝到片外RAM中执行。接下来就可以在正常的C环境下通过单板类型对不同硬件进行初始化工作了。
[0042]为了使本发明的技术方案和实现方法更加清楚,下面将结合优选的实施例对其实现过程进行详细描述。
[0043](I)处理器在硬件复位期`间,可通过硬编码(即上下拉电阻)、常用总线接口器件或者引导程序文件获得处理器的配置信息。如果选择通过引导程序文件获得处理器的配置信息,则进行步骤(2 ),否则进行步骤(3 )。
[0044](2)通过EPLD实现一个R0M,将配置信息保存在ROM中。在硬件复位期间将处理器发送的地址信号,映射到EPLD内部实现的ROM空间,处理器便可以读取ROM中的配置信息,在若干时钟周期后,EPLD结束地址映射,返回正常状态。
[0045](3)在处理器上电复位执行若干指令后,初始化处理器核心,设置MMU,读取处理器核心中标识处理器具体型号的寄存器,分别对不同型号处理器的片上和片外资源空间,10管脚,以及必要的寄存器进行初始化。
[0046](4)通过访问片外资源(如EPLD)动态获取单板类型,根据不同类型的单板来完成对相关片外资源以及处理器内部的功能模块进行初始化。
[0047]图3是根据本发明优选实施例的相同架构下同一系列处理器的通用引导程序的实现示意图,如图3所示,本优选实施例以射频识别(Radio Frequency Identification,简称RFID)产品中使用的PowerPC架构的X系列处理器为例,实现了可以运行在多种单板上的通用引导程序。对于X系列下具体型号的处理器用XI,X2,X3…表示;对单板类型使用 Boardl,Board2,Board3…表示;EPLD 的版本用 EPLD-1,EPLD-2,EPLD-3 表示。实现相同架构同一系列处理器的通用引导程序,需要为每种单板定制唯一的逻辑程序(通过EPLD实现),其他功能可由引导程序代码完成,实现对处理器具体型号的屏蔽。
[0048]图4是根据本发明优选实施例的处理器初始化方法的流程图,如图4所示,包括如下步骤:
[0049]步骤S402,通过硬编码选择启动设备,CPU上电复位。
[0050]步骤S404,EPLD地址映射,映射到EPLD内部的ROM空间,读取配置信息。
[0051]步骤S406,EPLD地址映射结束。
[0052]步骤S408,CPU进行上电配置。
[0053]步骤S410,CPU从启动设备中执行引导程序指令。
[0054]步骤S412,初始化CPU核心。
[0055]步骤S414,初始化MMU,分配CPU外设地址空间。
[0056]步骤S416,读取CPU核心中标识ID的寄存器。
[0057]步骤S418,根据ID对不同型号的CPU进行初始化(包括10,以及相关必要模块的初始化)。
[0058]步骤S420,通过CPU片外资源获得单板类型,可以通过EPLD内部寄存器实现。
[0059]步骤S422,根据单板类型对其它外设进行初始化。
[0060]步骤S424,引导程序可在RAM中实行代码。
[0061]步骤S426,引导程序进入正常启动流程。
[0062]由上述可知,本发明实施例将同一架构下相同内核处理器的引导程序统一为一个文件,动态识别处理器具体型号、单板类型,从而进行对于不同硬件设备的初始化工作,为底层软件进一步屏蔽硬件差别,增加了引导程序的灵活性,同时使引导程序的版本管理更加方便。
[0063]需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
[0064]本发明实施例还提供了 一种处理器初始化装置,该处理器初始化装置可以用于实现上述处理器初始化方法。图5是根据本发明实施例的处理器初始化装置的结构框图,如图5所示,包括配置模块52和初始化模块54。下面对其结构进行详细描述。
[0065]配置模块52,用于在硬件复位期间对相同架构下的处理器进行配置,其中,处理器属于同一系列且内核相同;第一初始化模块54,连接至配置模块52,用于对处理器及其片外资源进行初始化。
[0066]如图6所示,配置模块52包括:获取单元522,用于通过通用引导程序获取处理器的配置信息,其中,通用引导程序是引导多个单板的引导程序;配置单元524,连接至获取单元522,用于根据获取单元522获取的配置信息对处理器进行上电配置。
[0067]优选地,获取单元522包括:处理子单元,用于通过EPLD实现ROM ;保存子单元,连接至处理子单元,用于将处理器的配置信息保存到ROM中;映射子单元,连接至保存子单元,用于在硬件复位期间将处理器发送的地址信号映射到ROM ;读取子单元,连接至映射子单元,用于读取ROM中的配置信息。
[0068]优选地,第一初始化模块54包括:第一初始化单元,用于初始化处理器的内核;读取单元,连接至第一初始化单元,用于读取第一初始化单元初始化后的内核中标识处理器具体型号的寄存器;第二初始化单元,连接至读取单元,用于根据读取单元读取的处理器的具体型号对处理器进行初始化。
[0069]如图7所示,上述装置还包括:获取模块56,连接至第一初始化模块54,用于通过访问在硬件复位期间获取配置信息时已经配置的片外资源,获取不同单板的类型;第二初始化模块58,连接至获取模块56,用于根据获取模块56获取的不同单板的类型对未配置的片外资源以及处理器内部的功能模块进行初始化。
[0070]优选地,在硬件复位期间获取配置信息时已经配置的片外资源至少包括:EPLD。
[0071]需要说明的是,本发明上述实施例仅以PowerPC架构处理器为例,包括但不限于PowerPC架构处理器,上述方法同样适用于高级精简指令系统处理器(Advanced RISCMachines,简称为ARM,其中,RISC是指精简指令计算机,Reduced Instruction SetComputer)架构和无内部互锁流水级的微处理器(Microprocessor without InterlockedPiped Stages,简称为MIPS)架构的处理器。
[0072]综上所述,根据本发明的上述实施例,提供了 一种处理器初始化方法及装置。通过同一引导程序对相同架构下的处理器进行配置和初始化,将同类产品的引导程序编译为同一个文件,增加了引导程序的灵活性,便于引导程序版本的维护和管理,且进行不同硬件设备(即片外资源)的初始化工作,为底层软件进一步屏蔽了硬件差别。本发明通过逻辑器件和软件的配合,将同类产品的引导程序编译为同一个文件,便于版本的维护和管理,尤其是对生产过程中管理引导程序版本提供了保障。硬件主要是完成EPLD的设计,而软件则需要根据系统方案,完成对关键参数的整体规划,同时需要将开源代码进行架构调整和部分修改。
[0073]显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。
[0074]以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种处理器初始化方法,其特征在于包括: 在硬件复位期间对相同架构下的处理器进行配置,其中,所述处理器属于同一系列且内核相同; 对所述处理器及其片外资源进行初始化。
2.根据权利要求1所述的方法,其特征在于,在硬件复位期间对相同架构下的处理器进行配置包括: 通过通用引导程序获取所述处理器的配置信息,其中,所述通用引导程序是引导多个单板的引导程序; 根据所述配置信息对所述处理器进行上电配置。
3.根据权利要求2所述的方法,其特征在于,通过通用引导程序获取所述处理器的配置信息包括: 通过可擦除可编程逻辑器件EPLD实现只读存储器ROM,并将处理器的配置信息保到所述ROM中; 在硬件复位期间将所述处理器发送的地址信号映射到所述ROM ; 读取所述ROM中的配置信息。
4.根据权利要求1所述 的方法,其特征在于,对所述处理器以及片外资源进行初始化包括:初始化所述处理器的内核,读取所述处理器内核中标识所述处理器具体型号的寄存器; 根据所述处理器的具体型号对所述处理器进行初始化。
5.根据权利要求4所述的方法,其特征在于,在根据所述处理器的具体型号对所述处理器进行初始化之后,所述方法还包括: 通过访问在硬件复位期间获取配置信息时已经配置的片外资源,获取不同单板的类型; 根据所述不同单板的类型对未配置的片外资源以及所述处理器内部的功能模块进行初始化。
6.根据权利要求5所述的方法,其特征在于,在硬件复位期间获取配置信息时已经配置的片外资源至少包括:EPLD。
7.—种处理器初始化装置,其特征在于包括: 配置模块,用于在硬件复位期间对相同架构下的处理器进行配置,其中,所述处理器属于同一系列且内核相同; 初始化模块,用于对所述处理器及其片外资源进行初始化。
8.根据权利要求7所述的装置,其特征在于,所述配置模块包括: 获取单元,用于通过通用引导程序获取所述处理器的配置信息,其中,所述通用引导程序是引导多个单板的引导程序; 配置单元,用于根据所述配置信息对所述处理器进行上电配置。
9.根据权利要求8所述的装置,其特征在于,所述获取单元包括: 处理子单元,用于通过可擦除可编程逻辑器件EPLD实现只读存储器ROM ; 保存子单元,用于将处理器的配置信息保存到所述ROM中; 映射子单元,用于在硬件复位期间将所述处理器发送的地址信号映射到所述ROM ;读取子单元,用于读取所述ROM中的配置信息。
10.根据权利要求7所述的装置,其特征在于,所述初始化模块包括:第一初始化单元,用于初始化所述处理器的内核;读取单元,用于读取所述内核中标识所述处理器具体型号的寄存器;第二初始化单元,用于根据所述处`理器的具体型号对所述处理器进行初始化。
【文档编号】G06F9/445GK103514001SQ201210215590
【公开日】2014年1月15日 申请日期:2012年6月27日 优先权日:2012年6月27日
【发明者】丁岳, 汪旭光, 刘建志 申请人:中兴通讯股份有限公司