CN103677912B - 芯片及其启动方法 - Google Patents

芯片及其启动方法 Download PDF

Info

Publication number
CN103677912B
CN103677912B CN201310656271.8A CN201310656271A CN103677912B CN 103677912 B CN103677912 B CN 103677912B CN 201310656271 A CN201310656271 A CN 201310656271A CN 103677912 B CN103677912 B CN 103677912B
Authority
CN
China
Prior art keywords
guidance code
difference
cpu
code section
guidance
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
Application number
CN201310656271.8A
Other languages
English (en)
Other versions
CN103677912A (zh
Inventor
彭亢
杨宏伟
刘灿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Haisi Technology Co ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201310656271.8A priority Critical patent/CN103677912B/zh
Publication of CN103677912A publication Critical patent/CN103677912A/zh
Priority to US14/562,236 priority patent/US9411603B2/en
Application granted granted Critical
Publication of CN103677912B publication Critical patent/CN103677912B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Stored Programmes (AREA)

Abstract

本发明实施例提供一种芯片及其启动方法。该方法包括CPU在上电后,获取引导镜像文件,所述引导镜像文件中包括通用引导代码和差异引导代码,所述通用引导代码由不同芯片的引导代码中的通用部分编译得到,所述通用引导代码包括第一引导代码段和第二引导代码段,所述差异引导代码由所述CPU所属芯片与其它芯片的引导代码中的差异部分编译得到;从所述引导镜像文件中读取并运行所述第一引导代码段,读取所述差异引导代码的指示信息;根据所述差异引导代码的指示信息,从所述引导镜像文件中读取并运行所述差异引导代码;运行所述第二引导代码段,以完成所述CPU所属芯片的引导。本发明实施例可以降低维护成本以及降低出错可能性。

Description

芯片及其启动方法
技术领域
本发明实施例涉及嵌入式技术,尤其涉及一种芯片及其启动方法。
背景技术
在嵌入式系统中,需要通过单板(boot)完成中央处理器(Central ProcessingUnit,CPU)和双倍速率同步动态随机存储器(Double Data Rate,DDR)的初始化,在CPU和DDR初始化之后才能启动Linux等操作系统。
当前通用的包含CPU的芯片的启动流程包括:CPU在上电之后,从指定的存储介质的起始位置读取指令进行CPU和DDR等硬件的初始化;之后CPU将boot和操作系统(Operating System,OS)中的代码拷贝到DDR的指定位置并运行。在以上的方案中,CPU和DDR等硬件的初始化配置都是保存在boot代码中的,编译好之后就不能再修改了,除非重新编译。
在对系列化芯片进行软件开发时,由于不同芯片的设计差异,需要为每一款芯片编写各自的boot代码,即使是同一公司的两款差异很小的芯片都需要在代码里面设计不同的分支。随着新开发出来的芯片数量不断增多,导致维护成本不断增加,出错的可能性也不断加大。
发明内容
有鉴于此,本发明实施例提供了一种芯片及其启动方法,用以解决现有技术中存在的boot代码维护成本较高及出错可能性较高的问题。
第一方面,提供了一种芯片启动方法,包括:
中央处理器CPU在上电后,获取引导镜像文件,所述引导镜像文件中包括通用引导代码和差异引导代码,所述通用引导代码由不同芯片的引导代码中的通用部分编译得到,所述通用引导代码包括第一引导代码段和第二引导代码段,所述差异引导代码由所述CPU所属芯片与其它芯片的引导代码中的差异部分编译得到;
所述CPU从所述引导镜像文件中读取所述第一引导代码段,并运行所述第一引导代码段;
所述CPU从所述第一引导代码段中读取所述差异引导代码的指示信息;
所述CPU根据所述差异引导代码的指示信息,从所述引导镜像文件中读取并运行所述差异引导代码;
所述CPU运行所述第二引导代码段,以完成所述CPU所属芯片的引导。
结合第一方面,在第一方面的第一种可能的实现方式中,所述差异引导代码至少用于初始化双倍速率同步动态随机存储器DDR,所述读取并运行所述差异引导代码之后,所述方法还包括:
所述DDR根据运行后的所述差异引导代码完成初始化;
所述CPU运行所述第二引导代码段包括:
在所述DDR初始化后,所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段。
结合第一方面的第一种可能的实现方式,在第一方面的第二种可能的实现方式中,所述第二引导代码段中包括操作系统OS镜像文件的指示信息,所述OS镜像文件用于启动OS;
所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段包括:
所述CPU从所述第二引导代码段中获取所述OS镜像文件的指示信息;
所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段之后,所述方法还包括:
所述CPU根据所述OS镜像文件的指示信息将所述OS镜像文件读取到所述DDR中并运行所述OS镜像文件。
结合第一方面的第一种可能的实现方式,在第一方面的第三种可能的实现方式中,所述CPU运行所述第二引导代码段之前,所述方法还包括:
所述CPU在所述DDR初始化后,将所述第一引导代码段、所述差异引导代码和所述第二引导代码段读取到所述DDR中,以共同完成所述CPU所属芯片的引导。
结合第一方面或第一方面的第一种至第三种任一种可能的实现方式,在第一方面的第四种可能的实现方式中,所述第一引导代码段和所述第二引导代码段之间是非连续存储的,所述差异引导代码存储在所述第一引导代码段和所述第二引导代码段的非连续部分;或者,所述第一引导代码段和所述第二引导代码段之间是连续存储的。
第二方面,提供了一种芯片,包括:
中央处理器CPU,用于在上电后,获取引导镜像文件,所述引导镜像文件中包括通用引导代码和差异引导代码,所述通用引导代码由不同芯片的引导代码中的通用部分编译得到,所述通用引导代码包括第一引导代码段和第二引导代码段,所述差异引导代码由所述CPU所属芯片与其它芯片的引导代码中的差异部分编译得到;从所述引导镜像文件中读取所述第一引导代码段,并运行所述第一引导代码段;从所述第一引导代码段中读取所述差异引导代码的指示信息;根据所述差异引导代码的指示信息,从所述引导镜像文件中读取并运行所述差异引导代码;以及,运行所述第二引导代码段,以完成所述CPU所属芯片的引导。
结合第二方面,在第二方面的第一种可能的实现方式中,所述差异引导代码至少用于初始化双倍速率同步动态随机存储器DDR,所述芯片还包括:
DDR,用于根据运行后的所述差异引导代码完成初始化;
所述CPU具体用于在所述DDR初始化后,所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段。
结合第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述第二引导代码段中包括操作系统OS镜像文件的指示信息,所述OS镜像文件用于启动OS;
所述CPU具体用于从所述第二引导代码段中获取所述OS镜像文件的指示信息;根据所述OS镜像文件的指示信息将所述OS镜像文件读取到所述DDR中并运行所述OS镜像文件。
结合第二方面的第一种可能的实现方式,在第二方面的第三种可能的实现方式中,所述CPU还用于:
在所述DDR初始化后,将所述第一引导代码段、所述差异引导代码和所述第二引导代码段读取到所述DDR中,以共同完成所述CPU所属芯片的引导。
结合第二方面或第二方面的第一种至第三种任一种可能的实现方式,在第二方面的第四种可能的实现方式中,所述第一引导代码段和所述第二引导代码段之间是非连续存储的,所述差异引导代码存储在所述第一引导代码段和所述第二引导代码段之间的非连续部分;或者,所述第一引导代码段和所述第二引导代码段之间是连续存储的。
通过上述技术方案,将不同芯片的差异代码从boot代码中分离处理,boot代码中仅保存不同芯片的通用代码,这样就可以使同一产品领域的芯片甚至同一厂商的多款芯片共用一份boot代码,进而降低维护的代码数量,降低维护成本以及降低出错可能性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种芯片启动方法的流程示意图;
图2为本发明实施例中一种差异引导代码的结构示意图;
图3为本发明实施例提供的另一种芯片启动方法的流程示意图;
图4为图3对应的系统结构示意图;
图5为本发明实施例提供的另一种芯片启动方法的流程示意图;
图6为图5对应的系统结构示意图;
图7为本发明实施例提供的一种芯片的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例提供的一种芯片启动方法的流程示意图,包括:
11:CPU在上电后,获取引导镜像文件,所述引导镜像文件中包括通用引导代码和差异引导代码。
所述通用引导代码为所述特定芯片的引导代码中的通用部分编译得到,在本发明中,所述引导代码的通用部分是指引导代码中的可以适用于多种芯片的通用代码。在实际产品中,不同芯片对应的引导镜像文件中总会有内容相同或者功能相同的、通用的引导代码段,在本发明实施例中,提取内容相同或者功能相同的、通用的代码段作为通用引导代码。
所述通用引导代码包括第一引导代码段和第二引导代码段,所述差异引导代码由所述CPU所属芯片与其它芯片的引导代码中的差异部分编译得到;
本发明实施例中,每个芯片中有各自的CPU,每个芯片有各自对应的引导镜像文件,每个CPU可以读取自身芯片对应的引导镜像文件。与现有技术不同的是,现有技术中,引导镜像文件中包括由boot代码编译后得到的代码,该boot代码中不仅包括不同芯片间的通用代码,还包括不同芯片间的差异代码。
而本发明实施例中,引导镜像文件中包括的通用引导代码是由不同芯片的引导代码中的通用部分编译得到,例如,由现有的各芯片的boot代码中的通用部分编译得到;而差异引导代码是由该CPU所属芯片与其它芯片的引导代码中的差异部分编译得到,例如,CPU所属芯片为芯片A,那么该CPU获取的引导镜像文件中的差异引导代码是芯片A与其它芯片的boot代码中的差异部分编译得到。上述的差异引导代码也可以称为二进制文件。因此,本发明实施例可以将不同芯片间的差异代码从boot代码中分离出来,将该差异代码编译后形成独立的二进制文件,而boot代码仅保存不同芯片的通用代码,将该仅保存不同芯片的通用代码编译后得到引导代码。
上述的差异代码(或者说该CPU所属芯片与其它芯片引导代码中的差异部分)是指不同芯片间所具有的不同的代码,例如,参见图2,前面是寄存器地址,后面是需要进行的操作,这些代码经过编译后可以组成上述的二进制文件(或者称为差异引导代码)。
上述的通用代码(或者称为不同芯片的引导代码中的通用部分)是指不同芯片间所具有的相同的代码。根据厂商和芯片系列的不同,通用代码和差异代码是可以配置的。通常来讲,通用代码是某个厂商或某个芯片序列中通用模块所定义的标准代码,例如,用于启动和/或初始化串口、网口、USB接口等标准化接口的代码,差异代码是指配置给芯片的除了通用代码之外的代码。
另外,本发明实施例中的通用引导代码可以分为两部分,可以称为第一引导代码段和第二引导代码段。第一引导代码段和第二引导代码段之间在存储时可以是连续存储的,可以组成一个连续存储的整体,或者,第一引导代码段和第二引导代码段之间在存储时也可以分别是非连续存储的,差异化引导代码位于第一引导代码段和第二引导代码段之间的非连续存储部分。
12:所述CPU从所述引导镜像文件中读取所述第一引导代码段,并运行所述第一引导代码段。
第一引导代码段中记录差异引导代码的指示信息,通过运行第一引导代码段可以获取引导镜像文件中的差异引导代码。在本发明实施例中,所述指示信息可以为差异引导代码的位置信息,用来调用所述差异引导代码的命令信息,或者其他用于锁定并运行所述差异引导代码的参数信息。第一引导代码段可以理解为是引导镜像文件的入口文件,以读取初步的引导镜像文件,完成初步的CPU配置。
13:所述CPU从所述第一引导代码段中读取所述差异引导代码的指示信息;
由于第一引导代码段中记录二进制文件的信息,根据运行后的第一引导代码段可以获取差异引导代码的指示信息。
14:所述CPU根据所述差异引导代码的指示信息,从所述引导镜像文件中读取并运行所述差异引导代码。
差异引导代码是由CPU所属芯片与其它芯片的差异代码编译得到的,用于一些硬件的配置,该硬件配置至少包括DDR的初始化,除此之外,还可以用于CPU模式切换、通用寄存器配置或flash控制器的初始化等。
通过读取并运行差异引导代码可以完成DDR的初始化,DDR的初始化例如可以包括DDR控制器的初始化和DDR物理接口(DDR PHY)的初始化,DDR控制器的初始化例如包括配置控制接口时序、配置读写访问时序、配置低功耗设置、配置自刷新设置等。DDR PHY的初始化例如包括匹配基准时钟和数据采样时钟。
15:所述CPU运行所述第二引导代码段,以完成所述CPU所属芯片的引导。可选的,在读取并运行差异引导代码后,可以完成DDR的初始化,即14之后还可以包括:
所述DDR根据运行后的所述差异引导代码完成初始化;
所述CPU运行所述第二引导代码段包括:
在所述DDR初始化后,所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段。
可选的,所述第二引导代码段中包括OS镜像文件的指示信息,所述OS镜像文件用于启动OS;
所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段包括:
所述CPU从所述第二引导代码段中获取所述OS镜像文件的指示信息;
所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段之后,所述方法还包括:
所述CPU根据所述OS镜像文件的指示信息将所述OS镜像文件读取到所述DDR中并运行所述OS镜像文件。之后可以启动OS。
可选的,上述的引导镜像文件以及OS镜像文件可以存储在flash中。本发明实施例中的镜像文件(包括引导镜像文件和OS镜像文件)是指经过编译后的能够在CPU中运行的代码。
本实施例通过将不同芯片间的差异代码从boot代码中分离处理,boot代码中仅保存不同芯片的通用代码,这样就可以使同一产品领域的芯片甚至同一厂商的多款芯片共用一份boot代码,进而降低维护的代码数量,降低维护成本以及降低出错可能性。
图3为本发明实施例提供的另一种芯片启动方法的流程示意图,本实施例以引导代码分为两部分,二进制文件位于两部分的引导代码之间为例。
参见图4,为图3对应的系统结构示意图,该系统包括CPU 41、DDR 42和闪存(flash)43,引导镜像文件保存在flash中,引导镜像文件包括通用引导代码和差异引导代码,本实施例以通用引导代码分为两部分为例,分别用boot1和boot2表示,差异引导代码用reg_info.bin表示。可以理解的是,该flash中还可以保存OS镜像文件,OS镜像文件是对OS代码进行编译后可以由CPU执行的文件,以及其它一些镜像文件,如文件系统镜像文件(file system)。boot1和boot2是可以配置的,只要保证boot1中至少记录差异引导代码的指示信息。本实施例以boot1用于记录差异引导代码的指示信息,boot2用于完成必要的硬件配置为例。
在编译引导镜像文件时,可以在boot1和boot2之间预留一段空白空间,规定好起始地址和长度,在得到reg_info.bin后,将reg_info.bin插入到boot1和boot2之间的空白空间。也就是说,本实施例中boot1自身是连续存储的,boot2自身也是连续存储的,但是,boot1和boot2之间是非连续存储的,reg_info.bin自身是连续存储的,且reg_info.bin位于boot1和boot2之间非连续存储的位置,使得boot1、reg_info.bin和boot2依次连续存储。
reg_info.bin可以是对差异代码进行编译后得到。其中,通用代码可以通过Excel表格编译后得到通用引导代码,差异代码可以通过Excel表格编译后得到差异引导代码。之后将差异引导代码(Reg_info.bin)和通用引导代码(包括boot1以及boot2)一起烧录到flash中。
参见图3,本实施例包括:
31:CPU上电后,从flash的设定位置读取并运行boot1。
如图4的(1)所示。
其中,设定位置可以是CPU中默认的位置信息,例如,通常默认从地址0开始读取,同时boot1的起始位置也是地址0。因此CPU可以从地址0开始读取并运行boot1。
通过读取并运行boot1,可以完成初步的CPU配置,并为后续解析差异引导代码提供信息。
32:CPU根据boot1从flash中读取并运行差异引导代码reg_info.bin。差异引导代码至少用于完成DDR的初始化,还可以用于其它硬件的配置和初始化。
如图4的(2)所示。
其中,boot1中可以包含该reg_info.bin的指示信息,CPU根据该boot1可以读取并运行reg_info.bin。
DDR的初始化内容可以参见14的具体内容。
其它硬件的配置和初始化例如包括CPU模式切换、通用寄存器的配置、flash控制器的初始化等。
其中,CPU模式切换可以包括将CPU的模式从超级保护(SVC32)模式切换到slow模式,再从slow模式切换到normal模式。通用寄存器的配置可以包括管脚配置、开启时钟、开启供电等。Flash控制器的初始化可以包括撤销复位、开启时钟等。
33:在至少DDR初始化后,CPU将flash中的引导镜像文件(boot1+reg_info.bin+boot2)拷贝到DDR中,并运行boot2,以及,在boot2运行之后,CPU将flash中的OS镜像文件拷贝到DDR中,并运行该OS镜像文件,以启动操作系统。
如图4的(3)所示。
其中,CPU可以驱动flash控制器将上述的镜像文件(包括引导镜像文件和OS镜像文件)从flash中拷贝到DDR。
boot1中可以记录boot2的入口信息,或者,可以预先配置boot2的开始几条代码是可以直接执行的,那么根据boot1的记录或者直接执行的代码可以运行boot2。通过运行boot2可以完成一些必要的硬件的初始化,例如串口、网口等的初始化。
boot2中可以记录OS镜像文件的指示信息,在boot2运行后,CPU可以根据boot2中记录的OS镜像文件的指示信息从flash中将OS镜像文件读取到DDR中,并运行OS镜像文件,以启动OS。
本实施例通过将reg_info.bin和通用引导代码(boot1+boot2)进行分离处理,reg_info.bin由自身芯片与其它芯片间的差异代码编译得到,通用引导代码由不同芯片间的通用代码编译得到,可以保证不同芯片的通用引导代码(boot1+boot2)是一样的,不同芯片只需要维护reg_info.bin这个差异引导代码即可,通用引导代码(boot1+boot2)只需要维护一份,进而可以降低维护成本,降低出错率。
图5为本发明实施例提供的另一种芯片启动方法的流程示意图,本实施例以引导代码为整体为例。
参见图6,为图5对应的系统结构示意图,该系统包括CPU 61、DDR 62和闪存(flash)63,引导镜像文件保存在flash中,引导镜像文件包括通用引导代码和差异引导代码,本实施例以通用引导代码为一部分为例,用boot表示,差异引导代码用Reg_info.bin表示。也就是说,本实施例中boot自身是连续存储的,reg_info.bin自身是连续存储的,使得boot和reg_info.bin依次连续存储。
可以理解的是,该flash中还可以保存OS镜像文件,OS镜像文件是对OS代码进行编译后可以由CPU执行的文件,以及其它一些镜像文件,如文件系统镜像文件,如文件系统代码(file system)。
其中,通用代码可以通过Excel表格编译后得到通用引导代码,差异代码可以通过Excel表格编译后得到差异引导代码。之后将差异引导代码(reg_info.bin)和通用引导代码boot)一起烧录到flash中。
参见图5,本实施例包括:
51:CPU上电后,从flash的设定位置读取并运行boot。
如图6的(1)所示。
其中,设定位置可以是CPU中默认的位置信息,例如,通常默认从地址0开始读取,同时boot的起始位置也是地址0。因此CPU可以从地址0开始读取并运行boot。
此时运行的boot可以是整个boot中的一部分,该部分可以完成对CPU的初步配置,并且可以根据该部分运行差异引导代码reg_info.bin。
52:CPU根据运行的部分boot从flash中读取并运行差异引导代码reg_info.bin。差异引导代码至少用于完成DDR的初始化,还可以用于其它硬件的配置和初始化。
如图6的(2)所示。
其中,运行的部分boot中可以包含该reg_info.bin的指示信息,CPU根据该运行的部分boot可以读取并运行reg_info.bin。
其中,boot中可以记录结束的信息,通过从设定位置读取并运行boot后,可以通过依次执行代码直至代码表明结束,该结束之前的boot即为上述运行的部分boot。
运行的部分boot和剩余的部分boot可以类似上一实施例的boot1和boot2,该两部分也是可以配置的,只要保证运行的部分boot中至少记录差异引导代码的指示信息。本实施例以运行的部分boot用于记录差异引导代码的指示信息,剩余的部分boot用于完成必要的硬件配置为例。
DDR的初始化内容可以参见14的具体内容。
其它硬件的配置和初始化可以参见32的具体内容。
53:在至少DDR初始化后,CPU将flash中的引导镜像文件(boot+reg_info.bin)拷贝到DDR中,并运行剩余的部分boot,以及,在剩余的部分boot运行之后,CPU将flash中的OS镜像文件拷贝到DDR中,并运行该OS镜像文件,以启动操作系统(OS)。
如图6的(3)所示。
其中,CPU可以驱动flash控制器将上述的镜像文件(包括引导镜像文件和OS镜像文件)从flash中拷贝到DDR。
51中已经运行的部分boot中可以记录未运行的另一部分boot(即剩余的部分boot)的入口信息,或者,可以预先配置剩余的部分boot的开始几条代码是可以直接执行的,那么根据已经运行的部分boot的记录或者直接执行的代码可以运行该剩余的部分boot。通过运行该剩余的部分boot可以完成一些必要的硬件的初始化,例如串口、网口等的初始化。
剩余部分boot中可以记录OS镜像文件的指示信息,在剩余部分boot运行后,CPU可以根据剩余部分boot中记录的OS镜像文件的指示信息从flash中将OS镜像文件读取到DDR中,并运行OS镜像文件,以启动OS。
本实施例通过将reg_info.bin和通用引导代码(boot)进行分离处理,reg_info.bin由自身芯片与其它芯片间的差异代码编译得到,通用引导代码由不同芯片间的通用代码编译得到,可以保证不同芯片的通用引导代码(boot)是一样的,不同芯片只需要维护reg_info.bin这个的差异引导代码即可,通用引导代码(boot)代码只需要维护一份,进而可以降低维护成本,降低出错率。
图7为本发明实施例提供的一种芯片的结构示意图,该芯片70包括CPU71,CPU 71用于在上电后,获取引导镜像文件,所述引导镜像文件中包括通用引导代码和差异引导代码,所述通用引导代码由不同芯片的引导代码中的通用部分编译得到,所述通用引导代码包括第一引导代码段和第二引导代码段,所述差异引导代码由所述CPU所属芯片与其它芯片的引导代码中的差异部分编译得到;从所述引导镜像文件中读取所述第一引导代码段,并运行所述第一引导代码段;从所述第一引导代码段中读取所述差异引导代码的指示信息;根据所述差异引导代码的指示信息,从所述引导镜像文件中读取并运行所述差异引导代码;以及,运行所述第二引导代码段,以完成所述CPU所属芯片的引导。
可选的,所述差异引导代码至少用于初始化DDR,所述芯片还包括:DDR72,DDR 72用于根据运行后的所述差异引导代码完成初始化;所述CPU 71具体用于在所述DDR 72初始化后,所述CPU 71将所述第二引导代码段读取到所述DDR 72中并运行所述第二引导代码段。
可选的,所述第二引导代码段中包括OS镜像文件的指示信息,所述OS镜像文件用于启动OS;所述CPU 71具体用于从所述第二引导代码段中获取所述OS镜像文件的指示信息;根据所述OS镜像文件的指示信息将所述OS镜像文件读取到所述DDR 72中并运行所述OS镜像文件。
可选的,所述CPU 71还用于:在所述DDR 72初始化后,将所述第一引导代码段、所述差异引导代码和所述第二引导代码段读取到所述DDR 72中,以共同完成所述CPU 71所属芯片的引导。
可选的,所述第一引导代码段和所述第二引导代码段之间是非连续存储的,所述差异引导代码存储在所述第一引导代码段和所述第二引导代码段之间的非连续部分;或者,所述第一引导代码段和所述第二引导代码段之间是连续存储的。
可选的,引导镜像文件和OS镜像文件可以存储在flash中。
本实施例通过将不同芯片的差异代码从boot代码中分离处理,boot代码中仅保存不同芯片的通用代码,这样就可以使同一产品领域的芯片甚至同一厂商的多款芯片共用一份boot代码,进而降低维护的代码数量,降低维护成本以及降低出错可能性。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

Claims (10)

1.一种芯片启动方法,用于启动特定芯片,所述特定芯片中包括中央处理器CPU,其特征在于,包括:
CPU在上电后,获取引导镜像文件,所述引导镜像文件中包括通用引导代码和差异引导代码,所述通用引导代码为所述特定芯片的引导代码中的、同样适用于其他芯片的通用部分编译得到,所述通用引导代码包括第一引导代码段和第二引导代码段,所述差异引导代码是由所述特定芯片的引导代码中相对于其他芯片的差异部分编译得到的,所述第一引导代码段中记录有所述差异引导代码的指示信息;
所述CPU从所述引导镜像文件中读取所述第一引导代码段,并运行所述第一引导代码段;
所述CPU从所述第一引导代码段中读取所述差异引导代码的指示信息;
所述CPU根据所述差异引导代码的指示信息,从所述引导镜像文件中读取并运行所述差异引导代码;
所述CPU运行所述第二引导代码段,以完成所述特定芯片的引导。
2.根据权利要求1所述的方法,其特征在于,所述差异引导代码至少用于初始化双倍速率同步动态随机存储器DDR,所述读取并运行所述差异引导代码之后,所述方法还包括:
所述DDR根据运行后的所述差异引导代码完成初始化;
所述CPU运行所述第二引导代码段包括:
在所述DDR初始化后,所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段。
3.根据权利要求2所述的方法,其特征在于,所述第二引导代码段中包括操作系统OS镜像文件的指示信息,所述OS镜像文件用于启动OS;
所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段包括:
所述CPU从所述第二引导代码段中获取所述OS镜像文件的指示信息;
所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段之后,所述方法还包括:
所述CPU根据所述OS镜像文件的指示信息将所述OS镜像文件读取到所述DDR中并运行所述OS镜像文件。
4.根据权利要求2所述的方法,其特征在于,所述CPU运行所述第二引导代码段之前,所述方法还包括:
所述CPU在所述DDR初始化后,将所述第一引导代码段、和所述差异引导代码读取到所述DDR中,以通过所述第一引导代码段、第二引导代码段以及所述差异引导代码共同完成所述CPU所属芯片的引导。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述第一引导代码段和所述第二引导代码段之间是非连续存储的,所述差异引导代码存储在所述第一引导代码段和所述第二引导代码段的非连续部分;或者,所述第一引导代码段和所述第二引导代码段之间是连续存储的。
6.一种芯片,其特征在于,包括:
中央处理器CPU,用于在上电后,获取引导镜像文件,所述引导镜像文件中包括通用引导代码和差异引导代码,所述通用引导代码为所述芯片的引导代码中的、同样适用于其他芯片的通用部分编译得到,所述通用引导代码包括第一引导代码段和第二引导代码段,所述差异引导代码是由所述芯片相对于其他芯片的引导代码的差异部分编译得到的,所述第一引导代码段中记录有所述差异引导代码的指示信息;从所述引导镜像文件中读取所述第一引导代码段,并运行所述第一引导代码段;从所述第一引导代码段中读取所述差异引导代码的指示信息;根据所述差异引导代码的指示信息,从所述引导镜像文件中读取并运行所述差异引导代码;以及,运行所述第二引导代码段,以完成所述芯片的引导。
7.根据权利要求6所述的芯片,其特征在于,所述差异引导代码至少用于初始化双倍速率同步动态随机存储器DDR,所述芯片还包括:
DDR,用于根据运行后的所述差异引导代码完成初始化;
所述CPU具体用于在所述DDR初始化后,所述CPU将所述第二引导代码段读取到所述DDR中并运行所述第二引导代码段。
8.根据权利要求7所述的芯片,其特征在于,所述第二引导代码段中包括操作系统OS镜像文件的指示信息,所述OS镜像文件用于启动OS;
所述CPU具体用于从所述第二引导代码段中获取所述OS镜像文件的指示信息;根据所述OS镜像文件的指示信息将所述OS镜像文件读取到所述DDR中并运行所述OS镜像文件。
9.根据权利要求7所述的芯片,其特征在于,所述CPU还用于:
在所述DDR初始化后,将所述第一引导代码段和所述差异引导代码读取到所述DDR中,以通过所述第一引导代码段、第二引导代码段以及所述差异引导代码共同完成所述CPU所属芯片的引导。
10.根据权利要求6-9任一项所述的芯片,其特征在于,所述第一引导代码段和所述第二引导代码段之间是非连续存储的,所述差异引导代码存储在所述第一引导代码段和所述第二引导代码段之间的非连续部分;或者,所述第一引导代码段和所述第二引导代码段之间是连续存储的。
CN201310656271.8A 2013-12-06 2013-12-06 芯片及其启动方法 Active CN103677912B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201310656271.8A CN103677912B (zh) 2013-12-06 2013-12-06 芯片及其启动方法
US14/562,236 US9411603B2 (en) 2013-12-06 2014-12-05 Chip and starting method thereof

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201310656271.8A CN103677912B (zh) 2013-12-06 2013-12-06 芯片及其启动方法

Publications (2)

Publication Number Publication Date
CN103677912A CN103677912A (zh) 2014-03-26
CN103677912B true CN103677912B (zh) 2017-12-01

Family

ID=50315569

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201310656271.8A Active CN103677912B (zh) 2013-12-06 2013-12-06 芯片及其启动方法

Country Status (2)

Country Link
US (1) US9411603B2 (zh)
CN (1) CN103677912B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105867992A (zh) * 2016-03-28 2016-08-17 乐视控股(北京)有限公司 代码编译方法和装置
CN109643351B (zh) * 2016-08-30 2023-12-15 株式会社索思未来 处理装置、半导体集成电路以及半导体集成电路的启动方法
CN109614798B (zh) * 2017-09-30 2022-12-27 华为技术有限公司 安全启动方法、装置及终端设备
CN110347444B (zh) * 2019-07-12 2022-06-07 深圳忆联信息系统有限公司 一种ssd多状态切换的启动方法及其系统
CN111708541A (zh) * 2020-06-22 2020-09-25 深圳市友华通信技术有限公司 镜像文件的编译方法和装置
CN114296717A (zh) * 2021-12-06 2022-04-08 北京声智科技有限公司 一种添加小程序的方法、装置及电子设备
CN115359744B (zh) * 2022-08-16 2023-04-28 海的电子科技(苏州)有限公司 多通道mipi模组点屏方法、设备及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2301747A (en) * 1995-06-02 1996-12-11 Dsc Communications Remotely programmable subscriber terminal in a wireless telecommunications system
US6643772B1 (en) * 2000-07-13 2003-11-04 International Business Machines Corporation Universal boot code for a computer network
US7243347B2 (en) * 2002-06-21 2007-07-10 International Business Machines Corporation Method and system for maintaining firmware versions in a data processing system
US7415603B2 (en) * 2005-05-24 2008-08-19 Comcast Cable Holdings, Llc Method and system of configuring media units from different vendors using a single bulk configuration file
CN100524217C (zh) * 2007-01-04 2009-08-05 炬力集成电路设计有限公司 一种嵌入式系统的引导方法及装置
US8578332B2 (en) * 2007-04-30 2013-11-05 Mark Murray Universal microcode image
US8402284B2 (en) 2007-04-30 2013-03-19 Hewlett-Packard Development Company, L.P. Symbiotic storage devices
US7865710B2 (en) 2007-04-30 2011-01-04 Hewlett-Packard Development Company, L.P. Software recovery without the use of a keyboard, mouse, trackball or computer monitor
US8065510B2 (en) 2007-07-30 2011-11-22 Hewlet-Packard Development Company, L.P. System and methods of retrieving firmware between network locations
US7734959B2 (en) 2007-07-30 2010-06-08 Hewlett-Packard Development Company, L.P. Operating system recovery across a network
US8788637B2 (en) * 2007-11-05 2014-07-22 Hewlett-Packard Development Company, L.P. Systems and methods for downloading boot code associated with base stations
CN101907997A (zh) * 2010-08-11 2010-12-08 深圳市共进电子有限公司 一种嵌入式设备的通用启动方法
CN103135997A (zh) * 2011-11-24 2013-06-05 中兴通讯股份有限公司 实现嵌入式设备引导程序通用性的方法及装置

Also Published As

Publication number Publication date
CN103677912A (zh) 2014-03-26
US20150160946A1 (en) 2015-06-11
US9411603B2 (en) 2016-08-09

Similar Documents

Publication Publication Date Title
CN103677912B (zh) 芯片及其启动方法
CN100530102C (zh) 用于在64位x86处理器上运行传统32位x86虚拟机的系统和方法
CN105159716B (zh) 一种存储器件初始化方法和电子设备
CN109388430A (zh) 实现微处理器对外设硬件控制的方法
CN102609222A (zh) 基于命令描述符的闪存控制方法
CN104156234A (zh) 启动多核处理器、bootloader大小端模式自适应的方法及装置
EP2058739B1 (en) Electronic device, information processing device, adapter device, and information exchange system
CN104484289B (zh) 一种基于扇区的嵌入式系统写保护的装置以及方法
CN104090804B (zh) 一种实时dsp嵌入式系统虚拟内存扩容方法
CN104808953A (zh) 控制数据存储的方法、装置及移动终端
CN106155752A (zh) 一种嵌入式操作系统启动的方法及装置
CN109937404A (zh) 程序模块之间的实时数据交换
CN105159714B (zh) 一种pmic初始化方法和电子设备
CN104765626A (zh) 一种固件程序烧写方法及装置
CN104572513B (zh) 一种无需驱动具有蓝牙功能的tf卡及其实现方法
CN100452008C (zh) 只读存储器转接装置
EP2273365A1 (en) Combined memory and storage device in an apparatus for data processing
CN205809855U (zh) 一种基于cpcie的组合式双控存储系统
US9582256B2 (en) Automated cooperative concurrency with minimal syntax
CN110262833B (zh) 一种配置应用程序功能的方法
CN100538673C (zh) 嵌入式系统及其接口装置与非易失性存储器的更新方法
CN102446132B (zh) 一种模拟本地总线进行板级管理的方法和装置
CN104166608A (zh) 存取芯片内建只读存储器的方法及计算机系统
CN103777966B (zh) 一种从二进制文件中提取代码信息的方法及装置
CN107168904A (zh) 一种基于bmcspi接口的tcm控制系统及方法

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant
TR01 Transfer of patent right
TR01 Transfer of patent right

Effective date of registration: 20190712

Address after: Room 101, 318 Shuixiu Road, Jinze Town, Qingpu District, Shanghai, 201700

Patentee after: Shanghai Haisi Technology Co.,Ltd.

Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen

Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd.

CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 201700 Room 101, No. 2 Hongqiaogang Road, Qingpu District, Shanghai

Patentee after: Haisi Technology Co.,Ltd.

Address before: 201700 Room 101, No. 318 Shuixiu Road, Jinze Town (Xicen), Qingpu District, Shanghai

Patentee before: Shanghai Haisi Technology Co.,Ltd.