CN113672260B - 一种处理器cpu初始化方法 - Google Patents
一种处理器cpu初始化方法 Download PDFInfo
- Publication number
- CN113672260B CN113672260B CN202110942309.2A CN202110942309A CN113672260B CN 113672260 B CN113672260 B CN 113672260B CN 202110942309 A CN202110942309 A CN 202110942309A CN 113672260 B CN113672260 B CN 113672260B
- Authority
- CN
- China
- Prior art keywords
- cpu
- model
- configuration information
- ddr
- management
- 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
- 238000000034 method Methods 0.000 title claims abstract description 53
- 239000002245 particle Substances 0.000 claims abstract description 37
- 238000012545 processing Methods 0.000 claims abstract description 32
- 238000003860 storage Methods 0.000 claims description 30
- 238000012795 verification Methods 0.000 claims description 16
- 238000004590 computer program Methods 0.000 claims description 12
- 125000004122 cyclic group Chemical group 0.000 claims description 6
- 238000012423 maintenance Methods 0.000 abstract description 14
- 238000004519 manufacturing process Methods 0.000 abstract description 9
- 238000007726 management method Methods 0.000 description 87
- 230000005971 DNA damage repair Effects 0.000 description 65
- 238000013500 data storage Methods 0.000 description 9
- 238000011161 development Methods 0.000 description 7
- 238000012986 modification Methods 0.000 description 7
- 230000004048 modification Effects 0.000 description 7
- 230000001360 synchronised effect Effects 0.000 description 5
- 238000012360 testing method Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 230000008439 repair process Effects 0.000 description 2
- 102000002706 Discoidin Domain Receptors Human genes 0.000 description 1
- 108010043648 Discoidin Domain Receptors Proteins 0.000 description 1
- 230000004075 alteration Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000011990 functional testing Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1004—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's to protect a block of data words, e.g. CRC or checksum
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Quality & Reliability (AREA)
- Stored Programmes (AREA)
Abstract
本申请公开了一种处理器CPU初始化方法及装置,用以降低维护成本、提高生产和维修效率。该方法包括:通过寄存器读取CPU的型号;确定CPU型号所属的CPU类型;其中,不同类型的CPU的双倍速率DDR颗粒的类型、DDR布线和DDR颗粒的个数中的至少一个是不相同的;根据确定的CPU类型,获取CPU类型对应的基础初始化序列;基础初始化序列用于初始化寄存器的配置;加载基础初始化序列。基于上述方案,DDR颗粒的类型、DDR布线和DDR颗粒的个数等特征,将CPU进行分类,为每个类型CPU分别生成一套基础初始化序列,从而实现一套Bootloader程序兼容多个CPU的需求,可以降低维护成本,提高生产和维修效率。
Description
技术领域
本申请涉及计算机领域,特别涉及一种处理器CPU初始化方法。
背景技术
在嵌入式***(Linux)领域,根据设备运行的不同阶段,可以将设备的***程序分为:引导程序、Linux内核、文件***及应用程序等四个部分。其中,引导程序可以包括只读存储器程序(Rom code)和引导加载程序(Bootloader),而Rom code为固化在中央处理器(Central Processing Unit,CPU)内部程序,用户不可更改,Bootloader程序可以认为是设备上电后运行的第一个程序。Bootloader程序主要负责完成双倍速率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random Access Memory,DDR)、闪存(Flash)、串口和网络等基础硬件模块初始化,***运行环境的准备和Linux内核加载的引导。
Bootloader程序和硬件平台强相关,不同处理器架构有着不同的Bootloader程序。即使是相同硬件平台处理器,如果板级硬件存在差异,对应的Bootloader程序也不一样。因此对于开发来说需要移植和维护多套Bootloader程序,一旦出现问题需要分别对多套Bootloader程序进行同步。对于测试来说需要针对不同硬件方案的多套Bootloader程序进行多次相同的功能测试;对于产线和维修来说需要对不同Bootloader程序的设备进行区分烧录和升级,会增加维护成本,降低生产和维修效率。
发明内容
本申请实施例提供了一种处理器(Central Processing Unit,CPU)初始化方法,用以达到一套Bootloader程序可以兼容多CPU或多种硬件设备的目的。
第一方面,本申请实施例提供了一种处理器CPU初始化方法,包括:
通过寄存器读取CPU的型号;所述型号为第一型号;
确定所述第一型号所属的CPU类型;不同类型的CPU的DDR颗粒的类型、DDR颗粒的个数和DDR布线中的至少一个是不相同的;
根据确定的所述CPU类型,获取所述CPU类型对应的基础初始化序列;所述基础初始化序列用于初始化所述寄存器的配置;
加载所述基础初始化序列。
目前相关技术,对于不同的处理器架构有着不同的Bootloader,即使是相同处理器,如果板级硬件存在差异,对应的Bootloader程序也不一样。基于上述方案,根据DDR颗粒的类型、DDR颗粒的个数和DDR布线中的至少一个等特征,将CPU进行分类,为每种类型CPU分别生成一种基础初始化序列,从而实现一套Bootloader程序兼容多个CPU的需求,可以降低维护成本,提高生产和维修效率。
在一种可能的实现方式中,在确定的所述CPU类型中包含两个或两个以上CPU的型号时,根据确定的所述CPU类型,获取所述类型对应的基础初始化序列之后,还包括:
通过寄存器读取所述CPU的型号;所述型号为第二型号;
获取所述第二型号对应的配置信息;
根据所述配置信息,更新所述寄存器的配置。
基于上述方案,通过运行对应的基础初始化序列完成DDR控制器、***时钟、时钟分频和DDR PHY等模块初始化后,再根据CPU型号进行寄存器配置的动态更新,可以实现同一套Bootloader程序兼容多CPU。满足项目开发中多CPU多硬件方案的实际需求,可以降低代码开发和维护、测试、生产及返修的复杂度和工作量,还可以降低相关成本。
在一种可能的实现方式中,获取所述第二型号对应的配置信息,包括:
获取管理头;所述管理头包括管理头标识;所述管理头中存储有各CPU型号对应的配置信息;
在所述管理头标识与预设管理头标识相同的情况下,对所述管理头标识进行循环冗余校验CRC;
在CRC校验成功后,从所述管理头中获取所述第二型号对应的配置信息。
基于上述方案,通过校验管理头标识来确定配置信息的管理头,从而可以准确获取需要的CPU的配置信息。
在一种可能的实现方式中,所述管理头还包括更新状态,获取所述第二型号对应的配置信息之前,还包括:
确定所述更新状态为未更新。
基于上述方案,通过对管理头内的更新状态的查询,在更新状态为未更新时获取对应的配置信息,可以防止多次重复更新配置的操作。
在一种可能的实现方式中,确定所述更新状态为未更新之后,获取所述第二型号对应的配置信息之前,还包括:
对所述配置信息进行校验;
确定所述配置信息校验通过;在所述配置信息未缺失数据时,确定所述配置信息校验通过。
基于上述方案,通过对基础初始化序列的校验,可以保证基础初始化序列数据的完整性和准确性可以确保设备初始化的正常进行。
在一种可能的实现方式中,根据所述配置信息,更新所述寄存器的配置之后,还包括:
将所述管理头中的所述更新状态设置为已更新。
基于上述方案,将管理头中的更新状态进行更新,以便用于下次启动时查询更新状态,防止多次重复更新寄存器的配置。
在一种可能的实现方式中,所述寄存器的配置包括以下中的至少一个:
DDR控制器、***时钟、时钟分频和DDR端口物理层PHY。
第二方面,本申请实施例提供了一种处理器CPU初始化装置,包括:处理单元和存储单元;
所述存储单元,用于存储计算机程序或指令,以及CPU类型和基础初始化序列的对应关系;
所述处理单元,用于执行存储单元中的计算机程序或指令,并执行下述操作:
通过寄存器读取CPU的型号;所述型号为第一型号;
确定所述第一型号所属的CPU类型;不同类型的CPU的双倍速率DDR颗粒的类型、DDR颗粒的个数和DDR布线中的至少一个是不相同的;
根据确定的所述CPU类型,从所述存储单元中获取所述CPU类型对应的基础初始化序列;所述基础初始化序列用于初始化所述寄存器的配置;
加载所述基础初始化序列。
在一种可能的实现方式中,所述存储单元,还用于存储配置信息;
所述处理单元在确定的所述CPU类型中包含两个或两个以上CPU的型号时,根据确定的所述CPU类型,获取所述类型对应的基础初始化序列之后,还用于:
通过寄存器读取所述CPU的型号;所述型号为第二型号;
从所述存储单元获取所述第二型号对应的配置信息;
根据所述配置信息,更新所述寄存器的配置。
在一种可能的实现方式中,所述存储单元还用于存储预设管理头标识;
所述处理单元获取所述第二型号对应的配置信息时,具体用于:
获取管理头;所述管理头包括管理头标识;所述管理头中存储有各CPU型号对应的配置信息;
在所述管理头标识与预设管理头标识相同的情况下,对所述管理头进行循环冗余校验(Cyclic Redundancy Check,CRC);
在CRC校验成功后,从所述管理头中获取所述第二型号对应的配置信息。
在一种可能的实现方式中,所述管理头还包括更新状态,所述处理单元获取所述第二型号对应的配置信息之前,还用于:
确定所述更新状态为未更新。
在一种可能的实现方式中,所述处理单元确定所述更新状态为未更新之后,获取所述第二型号对应的配置信息之前,还用于:
对所述配置信息进行校验;
确定所述配置信息校验通过;在所述配置信息未缺失数据时,确定所述配置信息校验通过。
在一种可能的实现方式中,所述处理单元根据所述配置信息,更新所述寄存器的配置之后,还用于:
将所述管理头中的所述更新状态设置为已更新。
在一种可能的实现方式中,所述存储单元存储的寄存器的配置包括以下中的至少一个:
DDR控制器、***时钟、时钟分频和DDR端口物理层PHY。
第三方面,本申请实施例提供了一种电子设备,所述电子设备包括处理器和存储器;
所述存储器,用于存储计算机程序或指令;
所述处理器,用于执行存储器中的计算机程序或指令,以利用控制器中的硬件资源执行第一方面任一种可能实现方式中方法的操作步骤。
第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述各方面的方法。
另外,第二方面至第四方面的有益效果可以参见如第一方面所述的有益效果,此处不再赘述。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例。
图1为本申请实施例提供的为摄像设备的结构示意图。
图2为本申请实施例提供的一种处理器CPU初始化方法的示例性流程图之一;
图3为本申请实施例提供的一种处理器CPU初始化方法的示例性流程图之一;
图4为本申请实施例提供的一种处理器CPU初始化装置的结构示意图;
图5为本申请实施例提供的一种电子设备示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请技术方案的一部分实施例,而不是全部的实施例。基于本申请文件中记载的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请技术方案保护的范围。
本申请实施例中的术语“第一”和“第二”是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的保护。例如包含了一系列步骤或单元的过程、方法、***、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请中的“多个”可以表示至少两个,例如可以是两个、三个或者更多个,本申请实施例不做限制。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,在不做特别说明的情况下,一般表示前后关联对象是一种“或”的关系。
目前,相关技术中Bootloader程序和硬件平台强相关,不同处理器架构有着不同的Bootloader程序,即使是相同硬件平台处理器,如果板级硬件存在差异,对应的Bootloader程序也不一样。对于开发、测试、生产及维修来说工作量很大,维护成本很高且生产和维修效率很低,所以如何做到一套Bootloader程序兼容多CPU或多种硬件设备亟待解决。
有鉴于此,本申请实施例提供了一种处理器CPU初始化方法。该方法中,首先通过CPU型号、DDR布线方式和DDR颗粒中的至少一个对CPU进行分类。在CPU类型中只包含一个CPU型号时,设备上电后加载CPU类型对应的基础初始化序列,完成设备的初始化。在CPU类型中包含两个或两个以上CPU型号时,可以先根据CPU类型加载对应的基础初始化序列,完成外置DDR和Flash等基础模块的初始化,然后根据实际的CPU型号读取预存的配置信息,在外置DDR上更新基础初始化序列,从而达到一套Bootloader程序可以兼容多CPU或多种硬件设备的目的。
本申请实施例提供的技术方案可以应用于采用Linux***的设备。以下,以摄像设备为例对本申请实施例提供的技术方案适用的设备进行说明。参阅图1,摄像设备可以包括:
CPU101、DDR控制器102和数据存储设备103。其中,CPU101内部还包含寄存器1011,数据存储设备103包含DDR1031和Flash1032。
其中,CPU101作为芯片的运算和控制核心,是信息处理和程序运行的最终执行单元。寄存器1011是CPU内部用来存放数据的一些小型存储区域,用来暂时存放参与运算的数据和运算结果。
DDR控制器102负责控制内存并且还是负责DDR1031与CPU101之间数据交换的重要组成部分。
数据存储设备103是用于储存数据信息的设备,通常是将数据信息数字化后再以利用电、磁或光学等方式的媒体加以存储,其中包含DDR1031和Flash1032。DDR1031为具有双倍数据传输率的同步动态随机存取存储器,DDR1031有一个同步接口的动态随机存取内存,其数据传输速度为***时钟频率的两倍。Flash1032是一种电子式可清除程序化只读存储器的形式,允许在操作中被多次擦或写的存储器。主要用于一般性数据存储。
参阅图2,为本申请实施例提供的一种处理器CPU初始化方法的示例性流程图,可包括以下操作:
S201,设备通过寄存器读取CPU的CPU型号。
设备上电后,可以通过CPU内部寄存器读取CPU的CPU型号。可选的,CPU型号可以包括Hi3512、Hi3796和Hi3571等。应理解,CPU型号还可以包括其他的型号,上述型号只是一种示例。
S202,设备根据CPU型号确定CPU类型。
设备可以根据预先存储的CPU型号和CPU类型的对应关系,确定S201中CPU的CPU类型。该CPU型号和CPU类型的对应关系可以存储在数据存储设备中。例如,CPU型号和CPU类型的对应关系可以存储在如图1示出的Flash1032中。
其中,对CPU进行分类时,可以根据CPU的DDR布线、DDR颗粒的个数和DDR颗粒的类型中的部分或全部信息进行分类。不同CPU类型的Bootloader程序在设备启动中的基础初始化序列配置是不同的。
举例来说,首先可以按照CPU外接DDR颗粒的个数进行分类,如可以将单片DDR颗粒的CPU分为一类,外接两片DDR颗粒的CPU为一类等。
另外,由于外接单片DDR颗粒的CPU不需要DDR布线,因此可以不用对外接单片DDR颗粒的CPU的类型进行细化。而CPU外接两个及以上DDR时,还可以按照DDR布线方式,将不同的CPU型号分为多个CPU类型。例如,可以将以T布线方式的CPU分为一类,将以Fly-by布线方式的CPU分为一类等。
此外,不同类型的DDR颗粒其传输速率和其对应的时钟频率要求可以是不同的,因此还可以根据外接DDR颗粒的类型对CPU进行分类。例如,可以将外接两片1800MbpsDDR颗粒的CPU分为一类,将外接两片2133MbpsDDR颗粒的CPU分为一类等。
以下,不失一般性的,以CPU的DDR布线、DDR颗粒的个数和DDR颗粒的类型对CPU分类为例进行说明。本申请实施例中,不同类型的CPU的DDR布线、DDR颗粒的个数和DDR颗粒的类型均不相同。
需要说明的是,一个CPU类型中可能包含多个CPU型号,也可能只包含一个CPU型号。
应理解,上述CPU分类方法仅是示例性,并不构成对CPU进行分类的方法的限定。还可以通过其他方式对CPU进行分类。
S203,设备根据CPU类型获取该CPU类型对应的基础初始化序列。
其中,设备可以在数据存储设备,如Flash中获取预先存储的该CPU类型所对应的基础初始化序列。
S204,设备加载其基础初始化序列。
设备可以加载在S203中获取的基础初始化序列,完成对DDR控制器、***时钟、时钟分频和DDR PHY等基础模块的初始化。
基于上述方案,设备通过加载对应的基础初始化序列完成DDR控制器、***时钟、时钟分频和DDR PHY等模块的初始化,可以实现同一套Bootloader程序兼容多CPU。满足项目开发中多CPU多硬件方案的实际需求,可以降低代码开发和维护、测试、生产及返修的复杂度和工作量,还可以降低成本。
在一种可能的实现方式中,如果识别到的CPU型号其对应的CPU类型中只有一个CPU型号,那么通过上述S201-S204则可以实现对设备的初始化。
如果识别到的CPU型号其对应的CPU类型中有多个CPU型号,那么该CPU类型中不同型号的CPU其初始化所需的基础初始化序列存在着差异。因此在通过上述S201-S204对设备进行初始化之后,还要根据CPU型号对寄存器的配置进行更新。
具体的,设备可以根据CPU型号,从数据存储设备中获取CPU型号对应的配置信息。该配置信息中可以包括用于更新寄存器配置的配置信息。设备可以根据配置信息更新S204中加载的基础初始化序列,以实现更新寄存器的配置。其中,设备对基础初始化序列进行更新时,可以根据获取到的配置信息替换已经加载的基础初始化序列。
基于上述方案,设备可以根据CPU型号的差异对寄存器的配置进行更新,既能满足项目开发中多CPU多硬件方案的实际需求,又能对具有差异化的CPU的寄存器配置进行动态更新。
可选的,由于CPU片内资源有限,上述更新存储器的配置的操作可以在外置DDR中执行。例如,可以在图1中的数据存储设备中的DDR1031中执行。
在一种可能的实现方式中,上述CPU型号对应的配置信息可以存储在管理头中。设备可以从管理头中获取第二型号所对应的配置信息。可选的,为了避免重复更新,降低设备的工作量,在更新寄存器的配置之前,设备还可以获取管理头,对管理头进行校验。首先设备可以通过预设管理头标识对获取的管理头的管理头标识进行校验。其中,数据存储设备中可以预先存储预设管理头标识,设备在对管理头的管理头标识进行校验时,可以判断预设管理头标识与配置信息的管理头的管理头标识是否一致。如果一致,则可以认为校验通过,如果不一致则可以认为校验未通过。
举例来说,通过管理头标识对管理头进行校验,可以用幻数(magic number,Magic)作为管理头标识,当识别到管理头的Magic与预设Magic匹配时,判断管理头标识校验通过。
如果管理头标识校验未通过则设备退出更新,正常运行。如果管理头标识校验通过则继续对管理头进行CRC校验,对管理头的完整性进行校验。具体的,CRC校验是一种用于校验通信链路上数字传输准确性的计算方法,通过某种数学运算来建立数据位和校验位的约定关系进行校验。设备使用某公式计算出被传送数据所含信息的一个值,并将此值附在被传送数据后,管理头则对同一数据进行相同的计算,应该得到相同的结果。如果这两个CRC结果不一致,则判断管理头CRC校验未通过;如果这两个CRC结果一致,则判断管理头CRC校验通过。
需要说明的是,上述管理头进行校验的方法仅是示例性,并不构成对管理头进行校验的方法的限定。设备还可以通过其他方式对管理头进行校验。
基于上述方案,通过校验管理头进行校验来确定管理头及其数据是否完整,可以准确获取CPU的配置信息,减少***工作量。
在一个示例中,如果CRC校验未通过,则设备退出更新正常运行。在CRC校验通过时,还可以对管理头中的更新状态进行校验。具体的,管理头中还包括更新状态。该更新状态可以用于表示寄存器的配置是否已更新,或者说基础初始化序列是否已更新。如果该更新状态为已更新,则说明基础初始化序列已完成更新,为了防止多次重复更新配置,因此设备退出更新,正常运行。
基于上述方案,获取管理头内的更新状态,可以防止多次重复更新配置的操作。
如果校验到更新状态为未更新,则获取管理头内存储的CPU型号对应的配置管理信息对配置信息的有效性进行校验。其中,对配置信息的有效性进行校验包括对其完整性和准确性的校验。
具体的,管理头中预先存储有CPU型号对应的配置管理信息,设备可根据管理头中预先存储的配置管理信息对获取的CPU型号对应的配置信息进行校验。设备可以校验配置信息是否缺失数据,以及还可以校验配置信息是否正确。
如果配置信息出现数据缺失或错误的情况,则判断为校验未通过,因此设备退出更新,正常运行;如果配置信息完整且准确则判断为校验通过,则设备可以根据获取到的CPU型号对应的配置信息更新S204中加载的基础初始化序列,以实现更新寄存器的配置。
基于上述方案,通过对基础初始化序列的校验,可以保证基础初始化序列数据的完整性和准确性可以确保设备初始化的正常进行。
在一个示例中,设备在更新寄存器的配置后,可以更新管理头内的更新状态。具体的,设备可以将管理头内的更新状态设置为已更新,以便于下一次启动时查询更新状态,避免重复更新。
下面,为了能够更加清晰地理解本申请实施例提出的方案,将结合具体的实施例对本申请提供的一种处理器CPU初始化方法进行介绍。
首先对CPU进行分类。其中,A平台的CPU存储接口为16bit DDR3(L)/DDR4,最高速率1800Mbps;B平台的CPU性能和硬件接口数量高于A平台的CPU,存储接口为32bit DDR3(L)/DDR4,最高速率1800Mbps;C平台的CPU性能略高于B平台的CPU性能,存储接口为32bitDDR3(L)/DDR4,最高速率2133Mbps。假设A平台的CPU接单片DDR颗粒,B平台的CPU以T布线方式接两片1800MbpsDDR颗粒,C平台的CPU以T布线方式接两片2133MbpsDDR颗粒。根据CPU类型、DDR颗粒和DDR布线方式可以将A、B和C三个平台分为两类,A平台单独为第一类,B平台和C平台为第二类。
由于第一类中仅包含A平台的CPU,因此设备上电后如果识别到该CPU的CPU型号为A平台,则可以确定该CPU的类型为第一类,则直接使用第一类对应的基础初始化序列。而第二类中包含B平台和C平台的CPU,因此设备上电后如果识别到该CPU的CPU型号为B平台或C平台,则可以确定该CPU类型为第二类,则先使用第二类对应的基础初始化序列对DDR控制器、***时钟、时钟分频和DDR PHY等模块完成初始化后,再根据CPU型号动态更新基础初始化序列。
基于以上示例,参阅图3,为本申请实施例提供的一种处理器CPU初始化方法的示例性流程图之一,具体包括:
S301,设备读取CPU型号。
设备上电后,通过CPU内部寄存器读取其CPU型号。
S302,设备判断CPU所属的平台。
其中,如果设备通过CPU型号判断CPU为A平台,则执行S303;如果设备通过CPU型号判断CPU为B平台或C平台,则执行S304。
S303,设备加载A平台的基础初始化序列。
A平台对应的CPU类型为只包含一种CPU型号的情况,所以只需要加载A平台对应的基础初始化序列,也就是A平台所属的CPU类型对应的基础初始化序列,即可完成对DDR控制器、***时钟、时钟分频和DDR PHY等模块的初始化。设备可以执行S309。
S304,设备加载B平台和C平台的基础初始化序列。
B平台和C平台对应的CPU类型包含两种及两种以上CPU型号的情况,需要先加载B平台和C平台通用的基础初始化序列,也就是B平台和C平台所属的CPU类型对应的基础初始化序列,完成对DDR控制器、***时钟、时钟分频和DDRPHY等模块的初始化,由于B平台和C平台的CPU型号不相同,因此寄存器的配置存在差异。所以,在加载B平台和C平台所属的CPU类型对应的基础初始化序列之后,设备可以根据CPU型号进行基础初始化序列的动态更新。
由于CPU内部资源有限,因此在外置DDR中进行基础初始化序列的动态更新。具体的,动态更新的操作可以包括以下S305-S308。
S305,设备读取管理头,并对管理头进行校验。
其中,设备对管理头进行校验的方法可以参见如图2所示的方法实施例中的相关说明,此处不再赘述。如果校验通过,继续执行S306;如果校验未通过,执行S310。
S306,设备判断管理头内的更新状态是否为已更新。
设备通过管理头内的更新状态判断基础初始化序列的更新状态,如果更新状态为未更新,则继续执行S307;如果更新状态为已更新,则执行S310。
S307,设备读取管理头内的配置管理信息并对配置信息进行有效性校验。
设备通过管理头内存储的配置管理信息对配置信息进行校验,判断配置信息的有效性。其中,对配置信息进行校验的方法可以参见如图2所示的方法实施例中的相关说明,此处不再赘述。如果校验通过,则执行S308;如果校验未通过,则执行S310。
S308,设备更新基础初始化序列和管理头内的更新状态。
设备对配置信息校验完成后,设备将CPU型号对应的配置信息更新到S304设备加载B平台和C平台的基础初始化序列的位置,并将管理头中的更新状态进行更新,以便用于下次启动时查询,防止多次重复更新配置。
S309,设备初始化完成,正常运行。
S310,设备退出更新流程,正常运行。
基于上述方法的同一构思,参见图4,为本申请实施例提供的一种处理器CPU初始化装置400。装置400能够执行上述方法中的各个步骤,为了避免重复,此处不再详述。装置400包括存储单元401和处理单元402。可选的,该装置400。
在一种场景下:
存储单元401用于存储计算机程序或指令;
处理单元402,用于执行存储单元中的计算机程序或指令,并执行下述处理:
通过寄存器读取CPU的型号;所述型号为第一型号;
确定所述第一型号所属的CPU类型;其中,不同类型的CPU的双倍速率DDR颗粒的类型、DDR颗粒的个数和DDR布线中的至少一个是不相同的;
根据确定的所述CPU类型,从所述存储单元401中获取所述CPU类型对应的基础初始化序列;所述基础初始化序列用于初始化所述寄存器的配置;
加载所述基础初始化序列。
在一种可能的实现方式中,所述存储单元401,还用于存储配置信息;
所述处理单元402在确定的所述CPU类型中包含两个或两个以上CPU的型号时,根据确定的所述CPU类型,获取所述类型对应的基础初始化序列之后,还用于:
通过寄存器读取所述CPU的型号;所述型号为第二型号;
从所述存储单元401获取所述第二型号对应的配置信息;
根据所述配置信息,更新所述寄存器的配置。
在一种可能的实现方式中,所述存储单元401还用于存储预设管理头标识;
所述处理单元402获取所述第二型号对应的配置信息时,具体用于:
获取管理头;所述管理头包括管理头标识;所述管理头中存储有各CPU型号对应的配置信息;
在所述管理头标识与预设管理头标识相同的情况下,对所述管理头标识进行循环冗余校验CRC;
在CRC校验成功后,从所述管理头中获取所述第二型号对应的配置信息。
在一种可能的实现方式中,所述管理头还包括更新状态,所述处理单元402获取所述第二型号对应的配置信息之前,还用于:
确定所述更新状态为未更新。
在一种可能的实现方式中,所述处理单元402确定所述更新状态为未更新之后,获取所述第二型号对应的配置信息之前,还用于:
对所述配置信息进行校验;
确定所述配置信息校验通过;在所述配置信息未缺失数据时,确定所述配置信息校验通过。
在一种可能的实现方式中,所述处理单元402根据所述配置信息,更新所述寄存器的配置之后,还用于:
将所述管理头中的所述更新状态设置为已更新。
在一种可能的实现方式中,所述存储单元401存储的寄存器的配置包括以下中的至少一个:
DDR控制器、***时钟、时钟分频和DDR端口物理层PHY。
参阅图5,本申请实施例还提供了一种电子设备,所述电子设备包括处理器501和存储器502。存储器502用于存储计算机执行指令,处理器501执行存储器中的计算机执行指令以利用控制器中的硬件资源执行上述方法任一种可能实现方式中方法的操作步骤。处理器501可以用于执行处理单元402的操作,存储器502可以用于执行存储单元401的操作。
本申请实施例还提供一种计算机可存储介质,其上存储有计算机程序,该程序被处理器执行时实现如上述任一方法的步骤。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
虽然以上描述了本申请的具体实施方式,但是本领域的技术人员应当理解,这些仅是举例说明,本申请的保护范围是由所附权利要求书限定的。本领域的技术人员在不背离本申请的原理和实质的前提下,可以对这些实施方式做出多种变更或修改,但这些变更和修改均落入本申请的保护范围。尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (14)
1.一种处理器CPU初始化方法,其特征在于,包括:
通过寄存器读取CPU的型号;所述型号为第一型号;
确定所述第一型号所属的CPU类型;其中,不同类型的CPU的双倍速率DDR颗粒的类型、DDR颗粒的个数和DDR布线中的至少一个是不相同的;
根据确定的所述CPU类型,获取所述CPU类型对应的基础初始化序列;所述基础初始化序列用于初始化所述寄存器的配置;
加载所述基础初始化序列;
其中,在确定的所述CPU类型中包含两个或两个以上CPU的型号时,根据确定的所述CPU类型,获取所述类型对应的基础初始化序列之后,还包括:
通过寄存器读取所述CPU的型号;所述型号为第二型号;
获取所述第二型号对应的配置信息;
根据所述配置信息,更新所述寄存器的配置。
2.根据权利要求1所述的方法,其特征在于,获取所述第二型号对应的配置信息,包括:
获取管理头;所述管理头包括管理头标识;所述管理头中存储有各CPU型号对应的配置信息;
在所述管理头标识与预设管理头标识相同的情况下,对所述管理头标识进行循环冗余校验CRC;
在CRC校验成功后,从所述管理头中获取所述第二型号对应的配置信息。
3.根据权利要求2所述的方法,其特征在于,所述管理头还包括更新状态,获取所述第二型号对应的配置信息之前,还包括:
确定所述更新状态为未更新。
4.根据权利要求3所述的方法,其特征在于,确定所述更新状态为未更新之后,获取所述第二型号对应的配置信息之前,还包括:
对所述配置信息进行校验;
确定所述配置信息校验通过;在所述配置信息未缺失数据时,确定所述配置信息校验通过。
5.根据权利要求2或4所述的方法,其特征在于,根据所述配置信息,更新所述寄存器的配置之后,还包括:
将所述管理头中的所述更新状态设置为已更新。
6.根据权利要求1~2或4任一所述的方法,其特征在于,所述寄存器的配置包括以下中的至少一个:
DDR控制器、***时钟、时钟分频和DDR端口物理层PHY。
7.一种处理器CPU初始化装置,其特征在于,包括:处理单元和存储单元;
所述存储单元,用于存储计算机程序或指令、CPU类型和基础初始化序列的对应关系,以及配置信息;
所述处理单元,用于执行存储单元中的计算机程序或指令,并执行下述操作:
通过寄存器读取CPU的型号;所述型号为第一型号;
确定所述第一型号所属的CPU类型;不同类型的CPU的双倍速率DDR颗粒的类型、DDR颗粒的个数和DDR布线中的至少一个是不相同的;
根据确定的所述CPU类型,从所述存储单元中获取所述CPU类型对应的基础初始化序列;所述基础初始化序列用于初始化所述寄存器的配置;
加载所述基础初始化序列;
所述处理单元在确定的所述CPU类型中包含两个或两个以上CPU的型号时,根据确定的所述CPU类型,获取所述类型对应的基础初始化序列之后,还用于:
通过寄存器读取所述CPU的型号;所述型号为第二型号;
从所述存储单元获取所述第二型号对应的配置信息;
根据所述配置信息,更新所述寄存器的配置。
8.如权利要求7所述的装置,其特征在于,所述存储单元还用于存储预设管理头标识;
所述处理单元获取所述第二型号对应的配置信息时,具体用于:
获取管理头;所述管理头包括管理头标识;所述管理头中存储有各CPU型号对应的配置信息;
在所述管理头标识与预设管理头标识相同的情况下,对所述管理头标识进行循环冗余校验CRC;
在CRC校验成功后,从所述管理头中获取所述第二型号对应的配置信息。
9.如权利要求8所述的装置,其特征在于,所述管理头还包括更新状态,所述处理单元获取所述第二型号对应的配置信息之前,还用于:
确定所述更新状态为未更新。
10.如权利要求9所述的装置,其特征在于,所述处理单元确定所述更新状态为未更新之后,获取所述第二型号对应的配置信息之前,还用于:
对所述配置信息进行校验;
确定所述配置信息校验通过;在所述配置信息未缺失数据时,确定所述配置信息校验通过。
11.如权利要求8或10所述的装置,其特征在于,所述处理单元根据所述配置信息,更新所述寄存器的配置之后,还用于:
将所述管理头中的所述更新状态设置为已更新。
12.如权利要求7~8或10任一项所述的装置,其特征在于,所述存储单元存储的寄存器的配置包括以下中的至少一个:
DDR控制器、***时钟、时钟分频和DDR端口物理层PHY。
13.一种电子设备,其特征在于,所述电子设备包括处理器和存储器,
所述存储器,用于存储计算机程序或指令;
所述处理器,用于执行存储器中的计算机程序或指令,使得权利要求1-6中任一项所述的方法被执行。
14.一种计算机可读存储介质,其上存储有计算机程序指令,其特征在于,该计算机程序指令被处理器执行时实现权利要求1-6任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110942309.2A CN113672260B (zh) | 2021-08-17 | 2021-08-17 | 一种处理器cpu初始化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110942309.2A CN113672260B (zh) | 2021-08-17 | 2021-08-17 | 一种处理器cpu初始化方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113672260A CN113672260A (zh) | 2021-11-19 |
CN113672260B true CN113672260B (zh) | 2024-04-12 |
Family
ID=78543332
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110942309.2A Active CN113672260B (zh) | 2021-08-17 | 2021-08-17 | 一种处理器cpu初始化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113672260B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114675891B (zh) * | 2022-03-28 | 2023-07-21 | 苏州浪潮智能科技有限公司 | 一种PCIe交换芯片初始化的方法、装置、设备及介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514001A (zh) * | 2012-06-27 | 2014-01-15 | 中兴通讯股份有限公司 | 处理器初始化方法及装置 |
CN106648758A (zh) * | 2016-11-30 | 2017-05-10 | 中国电子科技集团公司第五十八研究所 | 一种多核处理器boot启动***及方法 |
CN111857840A (zh) * | 2020-06-10 | 2020-10-30 | 新华三技术有限公司 | 基本输入输出***bios启动方法及装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP5943681B2 (ja) * | 2012-04-09 | 2016-07-05 | キヤノン株式会社 | 情報処理装置、情報処理装置のファームウエア更新方法及びプログラム |
-
2021
- 2021-08-17 CN CN202110942309.2A patent/CN113672260B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103514001A (zh) * | 2012-06-27 | 2014-01-15 | 中兴通讯股份有限公司 | 处理器初始化方法及装置 |
CN106648758A (zh) * | 2016-11-30 | 2017-05-10 | 中国电子科技集团公司第五十八研究所 | 一种多核处理器boot启动***及方法 |
CN111857840A (zh) * | 2020-06-10 | 2020-10-30 | 新华三技术有限公司 | 基本输入输出***bios启动方法及装置 |
Non-Patent Citations (3)
Title |
---|
ADS环境下ARM微处理器初始化代码的实现;徐大诏等;《信息通信》;20111215(第6期);全文 * |
Implementation of an initial-configuration based on self-reconfiguration for an on-board processor;Florian Rittner等;《2013 NASA/ESA Conference on Adaptive Hardware and Systems (AHS-2013)》;20130919;全文 * |
基于MCU的嵌入式***的Bootloader设计;温暖;杨维明;彭菊红;王旭光;;微电子学与计算机;20180305(第03期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN113672260A (zh) | 2021-11-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115841089B (zh) | 一种基于uvm的***级芯片验证平台及验证方法 | |
US20120191963A1 (en) | BIOS Updating System, BIOS Updating Method, and Related Computer Program Product | |
CN105893234A (zh) | 用于软件测试的方法和计算设备 | |
CN115184764A (zh) | 一种芯片测试方法、装置、电子设备及存储介质 | |
CN113672260B (zh) | 一种处理器cpu初始化方法 | |
US20050154573A1 (en) | Systems and methods for initializing a lockstep mode test case simulation of a multi-core processor design | |
CN113377586B (zh) | 一种服务器自动化检测方法、装置及存储介质 | |
US6751569B2 (en) | System and method for receiving information from a test apparatus | |
CN114218882A (zh) | 一种SoC芯片检验方法、装置及相关设备 | |
US20150019852A1 (en) | Verification method for system execution environment | |
CN116543828B (zh) | Ufs协议测试方法、装置、可读存储介质及电子设备 | |
CN103713977A (zh) | 一种微处理器ip核比较验证的实现方法 | |
CN109582334B (zh) | 可编程逻辑器件的升级方法及装置 | |
CN111176757B (zh) | 基于JTAG的SoC启动方法和装置 | |
CN105955857A (zh) | 一种检验bios的方法及装置 | |
US6973564B2 (en) | Automatically initiating a manufacturing mode of a system firmware | |
CN105301480A (zh) | Soc芯片的测试方法 | |
CN110471828B (zh) | 一种操作***测试方法、装置及其设备 | |
CN113722212B (zh) | 一种cpld升级测试方法、装置、设备及介质 | |
CN113673189A (zh) | 基于dut替代模型的验证方法、装置、设备及介质 | |
CN110096888B (zh) | 一种加快验证及分析smm安全隐患的方法及*** | |
US20200349304A1 (en) | Method, apparatus, device, and medium for implementing simulator | |
US6842855B2 (en) | System and method for providing information to a computer system | |
CN113407394B (zh) | 一种服务器ras功能测试的方法、装置、设备和介质 | |
CN118035022B (zh) | 一种高速缓存验证方法、装置、设备、介质及程序产品 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |