CN109800032A - Bootrom多核加载方法及装置 - Google Patents
Bootrom多核加载方法及装置 Download PDFInfo
- Publication number
- CN109800032A CN109800032A CN201910097589.4A CN201910097589A CN109800032A CN 109800032 A CN109800032 A CN 109800032A CN 201910097589 A CN201910097589 A CN 201910097589A CN 109800032 A CN109800032 A CN 109800032A
- Authority
- CN
- China
- Prior art keywords
- bootrom
- cpu
- multicore
- bootloader
- load
- 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.)
- Granted
Links
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种BOOTROM多核加载方法及装置,方法包括以下步骤:控制芯片上电;同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom;监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号;根据接收到的IPC中断信号,停止运行其他CPU;读取完成Bootrom加载的CPU对应的BootLoader文件到CPU0的ATCM零地址;CPU0的运行指针跳转到ATCM零地址,运行对应的BootLoader文件。本方案采用多个CPU核心同时进行Bootrom加载,使控制芯片Bootrom能够以最少的时间加载BootLoader运行,大大缩短了加载时间。
Description
技术领域
本发明涉及到固态硬盘测试领域,特别是涉及到一种BOOTROM多核加载方法及装置。
背景技术
Bootrom为固化在微控制器内部,用于芯片正常工作的代码。现有的Bootrom加载方案为:Bootrom运行在单个CPU中,通过GPIO来选择从NorFlash中加载BootLoader文件还是从NandFlash中加载BootLoader文件,校验完BootLoader文件的正确性之后,运行指针便跳转到BootLoader的零地址,BootLoader运行。如图1所示,为现有Bootrom加载方案的流程图。
具体的,现有的加载方案具有以下缺点:
1.多核的固态硬盘控制器芯片仅使用一个核来运行嵌入在控制器芯片内部的Bootrom代码,现有Bootrom加载方法无法体现出多核控制器芯片强大的性能优势。
2.Bootrom的加载方式有两种,分别为Norflash加载和Nandflash加载,通常控制器芯片通过某个GPIO引脚来选择不同的加载方式,现有Bootrom加载方法需要占据控制器的GPIO资源。
3.固态硬盘对Bootrom的启动时间有较高的要求,Bootrom无法自动比较Norflash加载和Nandflash加载的时间,现有Bootrom无法自动选择最快的加载方式。
4.Bootrom中Nandflash加载的相关代码,取决于Nand的颗粒类型,一旦Nand颗粒更新换代,Bootrom会无法执行Nandflash加载功能,现有Bootrom加载方法对Bootrom的兼容性较差。
发明内容
为了解决上述现有技术的缺陷,本发明的目的是提供一种BOOTROM多核加载方法及装置。
为达到上述目的,本发明的技术方案是:
一种BOOTROM多核加载方法,其特征在于,包括以下步骤:
控制芯片上电;
同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom;
监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号;
根据接收到的IPC中断信号,停止运行其他CPU;
读取完成Bootrom加载的CPU对应的BootLoader文件到CPU0的ATCM零地址;
CPU0的运行指针跳转到ATCM零地址,运行对应的BootLoader文件。
进一步地,所述同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom步骤,包括,
CPU0开启IPC中断;
从NorFlash中读取BootLoader文件;
校验读取的BootLoader文件的正确性。
进一步地,所述同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom步骤,包括,
CPU1使用默认的配置初始化Nand颗粒;
从默认颗粒的NandFlash中读取BootLoader文件;
校验读取的BootLoader文件的正确性。
进一步地,所述同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom步骤,包括,
CPU2从EFUSE中读取库代码文件;
将运行指针跳转到库代码的零地址,库代码运行;
库代码对更新换代的Nand颗粒进行初始化操作,从NandFlash中读取BootLoader文件;
将运行指针跳转回到Bootrom;
校验读取的BootLoader文件的正确性。
进一步地,所述监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号步骤,包括,
获取BootLoader文件校验结果;
若校验结果为正确,则判定该CPU完成Bootrom加载。
本发明还提出了一种BOOTROM多核加载装置,包括:
上电单元,用于为控制芯片上电;
多核运行单元,用于同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom;
监控接收单元,用于监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号;
停止运行单元,用于根据接收到的IPC中断信号,停止运行其他CPU;
搬运单元,用于读取完成Bootrom加载的CPU对应的BootLoader文件到CPU0的ATCM零地址;
跳转单元,用于将CPU0的运行指针跳转到ATCM零地址,运行对应的BootLoader文件。
进一步地,所述多核运行单元包括
中断开启模块,用于CPU0开启IPC中断;
第一读取模块,用于从NorFlash中读取BootLoader文件;
第一校验模块,用于校验读取的BootLoader文件的正确性。
进一步地,所述多核运行单元包括:
默认初始化模块,用于CPU1使用默认的配置初始化Nand颗粒;
第二读取模块,用于从默认颗粒的NandFlash中读取BootLoader文件;
第二校验模块,用于校验读取的BootLoader文件的正确性。
进一步地,所述多核运行单元包括:
代码读取模块,用于CPU2从EFUSE中读取库代码文件;
第一跳转模块,用于将运行指针跳转到库代码的零地址,库代码运行;
颗粒初始化模块,用于使用库代码对更新换代的Nand颗粒进行初始化操作,从NandFlash中读取BootLoader文件;
第二跳转模块,用于将运行指针跳转回到Bootrom;
第三校验模块,用于校验读取的BootLoader文件的正确性。
进一步地,所述监控接收单元包括:
结果获取模块,用于获取BootLoader文件校验结果;
完成判定模块,用于若校验结果为正确,则判定该CPU完成Bootrom加载。
本发明的有益效果是:本方案采用多个CPU核心同时进行Bootrom加载,使控制芯片Bootrom能够以最少的时间加载BootLoader运行,相对于现有的解决方案,大大缩短了加载时间;通过库代码初始化更新换代的Nand颗粒,在不占用控制器GPIO资源的同时,提高了Bootrom对Nand颗粒的兼容性。
附图说明
图1为现有Bootrom加载方案的流程图;
图2为本发明一种BOOTROM多核加载方法的方法流程图;
图3为本发明CPU0从Norflash加载Bootrom的流程图;
图4为本发明CPU1从Nandflash加载Bootrom的流程图;
图5为本发明CPU2初始化Nand颗粒之后从Nandflash加载Bootrom的流程图;
图6为本发明监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号步骤的方法流程图;
图7为本发明一种BOOTROM多核加载方法的实际应用流程图;
图8为本发明一种BOOTROM多核加载装置的结构原理框图;
图9为本发明一种多核运行单元的结构框图;
图10为本发明另一种多核运行单元的结构框图;
图11为本发明另一种多核运行单元的结构框图;
图12为本发明监控接收单元的结构原理框图。
具体实施方式
为阐述本发明的思想及目的,下面将结合附图和具体实施例对本发明做进一步的说明。
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明,本发明实施例中所有方向性指示(诸如上、下、左、右、前、后等)仅用于解释在某一特定姿态(如附图所示)下各部件之间的相对位置关系、运动情况等,如果该特定姿态发生改变时,则该方向性指示也相应地随之改变,所述的连接可以是直接连接,也可以是间接连接。
另外,在本发明中如涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
如无特别说明,本文中的“/”代表含义为“或”。
本文中英文缩写的解释如下:
Bootrom:固化在微控制器内部,用于芯片正常工作的代码。
NorFlash:一种非易失性的存储器。
NandFlash:一种非易失性存储器,具有容量大,改写速度快等优点。
Bootloader:用于加载固态硬盘全系统固件的加载工程。
GPIO:通用输入/输出。
IPC:进程间通信,IPC模块可通过中断通知共享存储空间,实现CPU之间的通讯。
ATCM:一种控制器内部的高速缓存。
EFUSE:一种一次性可编程存储器。
IPC(Inter-Process Communication,进程间通信)。
General Purpose Input Output(通用输入/输出)简称为GPIO,或总线扩展器,人们利用工业标准I2C、SMBus或SPI接口简化了I/O口的扩展。
参照图2-7,提出本发明一具体实施例,一种BOOTROM多核加载方法,其特征在于,包括以下步骤:
S10、控制芯片上电。
S20、同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom。
S30、监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号。
S40、根据接收到的IPC中断信号,停止运行其他CPU。
S50、读取完成Bootrom加载的CPU对应的BootLoader文件到CPU0的ATCM零地址。
S60、CPU0的运行指针跳转到ATCM零地址,运行对应的BootLoader文件。
对于步骤S20,芯片上电后,控制器芯片内部的三个CPU(CPU0、CPU1和CPU2)同时开始加载并运行各自的Bootrom代码。CPU0中的Bootrom采用NorFlash加载的方式运行,CPU1中的Bootrom采用NandFlash加载的方式运行,CPU2中的Bootrom代码为专门用于提高Nand颗粒加载兼容性的代码。
具体的,不同CPU之间通过IPC模块实现CPU之间的通讯,告知其他CPU对应BootLoader文件的加载校验情况。
参考图3,步骤S20包括以下步骤:
S211、CPU0开启IPC中断。
S212、从NorFlash中读取BootLoader文件。
S213、校验读取的BootLoader文件的正确性。
对于步骤S211-S213,CPU0上电之后,首先会开启IPC中断,进而加载BootLoader文件,并对BootLoader文件的正确性进行校验。在这个过程中,一旦CPU0收到CPU1或CPU2发来的IPC中断信号,说明CPU1或CPU2已经完成了Bootloader的加载校验,即代表CPU1或者CPU2先于CPU0完成加载校验操作。CPU0便不会继续执行剩下的操作,例如Bootloader加载校验操作,同时CPU0会关闭IPC中断,停止CPU1和CPU2的所有操作。
如果CPU0比CPU1和CPU2先完成BootLoader的加载校验操作,CPU0同样会关闭IPC中断,并停止CPU1和CPU2的所有操作,将BootLoader文件复制到CPU0的ATCM零地址,再将运行指针跳转到ATCM零地址,加载BootLoader文件运行。这样,便可自动找出三个CPU中最快完成加载校验BootLoader文件的方式,控制器芯片会自动选择该最快的加载方式运行BootLoader文件,同时释放了控制器GPIO的资源。
参考图4,步骤S20包括以下步骤:
S221、CPU1使用默认的配置初始化Nand颗粒。
S222、从默认颗粒的NandFlash中读取BootLoader文件。
S223、校验读取的BootLoader文件的正确性。
对于步骤S221-S223,CPU1上电之后,会使用Bootrom代码中默认的颗粒配置,初始化NandFlash,从NandFlash中加载BootLoader文件,并对其做正确性校验,一旦校验通过,便向CPU0发送IPC中断信号,通知CPU0已经有核心完成了BootLoader文件的加载校验操作,其他CPU0和CPU2无需继续执行剩下的操作,提高BootLoader文件的加载效率,缩短Bootrom的启动时间。
参考图5,步骤S20包括以下步骤:
S231、CPU2从EFUSE中读取库代码文件。
S232、将运行指针跳转到库代码的零地址,库代码运行。
S233、库代码对更新换代的Nand颗粒进行初始化操作,从NandFlash中读取BootLoader文件。
S234、将运行指针跳转回到Bootrom。
S235、校验读取的BootLoader文件的正确性。
对于步骤S231-S235,CPU2上电之后,首先会读取控制器EFUSE中的库代码文件,运行该库代码,将BootLoader文件从NandFlash中读取出来,再跳转回到Bootrom中继续运行,如果校验通过,便向CPU0发送IPC中断信号,通知CPU0已经有核心完成了BootLoader文件的加载校验操作,提高了BootLoader文件的加载效率,缩短Bootrom的启动时间。
由于EFUSE中的库代码会根据后续固态硬盘所使用的Nand颗粒进行适配,库代码是后续编写烧写进EFUSE中的,这便保证了CPU2中的Bootrom代码可以支持更新换代的Nand颗粒,提高了Bootrom对Nand颗粒的兼容性。
对于步骤S30,监控所有进行Bootrom加载的CPU,在不同的CPU在完成Bootrom启动,也就是成功加载校验完BootLoader文件之后,就会通过IPC向CPU0发送IPC中断信号,根据接收到的IPC中断信号可以确定已经有完成加载校验的CPU,此时停止其他CPU运行,并将BootLoader文件复制搬运到CPU0中的ATCM零地址,再将运行指针跳转到ATCM零地址,加载BootLoader文件运行。这样,便可自动找出三个CPU中最快完成加载校验BootLoader文件的方式,控制器芯片会自动选择该最快的加载方式运行BootLoader文件,同时释放了控制器GPIO的资源。
参考图6,步骤S30包括以下步骤:
S31、获取BootLoader文件校验结果。
S32、若校验结果为正确,则判定该CPU完成Bootrom加载。
对于步骤S31和S32,不同的CPU通过不同的方式读取BootLoader文件,在BootLoader文件在读取加载之后,需要对BootLoader文件进行校验,进行校验,防止运行错误的BootLoader文件。
对于步骤S40-S60,在接收到任一CPU发送的IPC中断信号之后,立即获取发出IPC中断信号的CPU信息,并将其余的CPU停止运行,并将加载校验成功的BootLoader文件复制搬运到CPU0中的ATCM零地址,再将运行指针跳转到ATCM零地址,加载BootLoader文件运行。这样,便可自动找出三个CPU中最快完成加载校验BootLoader文件的方式,控制器芯片会自动选择该最快的加载方式运行BootLoader文件,同时释放了控制器GPIO的资源。
本方案采用多个CPU核心同时进行Bootrom加载,使控制芯片Bootrom能够以最少的时间加载BootLoader运行,相对于现有的解决方案,大大缩短了加载时间。同时通过库代码初始化更新换代的Nand颗粒,在不占用控制器GPIO资源的同时,提高了Bootrom对Nand颗粒的兼容性。
具体的,参考图7,为本发明一种BOOTROM多核加载方法的具体应用实例。通过采用3个不同的CPU核心(CPU0,CPU1和CPU2)同时进行Bootrom加载,使控制芯片Bootrom能够以最少的时间加载BootLoader运行,相对于现有的解决方案,大大缩短了加载时间。同时通过库代码初始化更新换代的Nand颗粒,在不占用控制器GPIO资源的同时,提高了Bootrom对Nand颗粒的兼容性。
参考图8-12,本发明另一实施例还提出了一种BOOTROM多核加载装置,包括:
上电单元10,用于为控制芯片上电。
多核运行单元20,用于同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom。
监控接收单元30,用于监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号。
停止运行单元40,用于根据接收到的IPC中断信号,停止运行其他CPU。
搬运单元50,用于读取完成Bootrom加载的CPU对应的BootLoader文件到CPU0的ATCM零地址。
跳转单元60,用于将CPU0的运行指针跳转到ATCM零地址,运行对应的BootLoader文件。
对于多核运行单元20,芯片上电后,控制器芯片内部的三个CPU(CPU0、CPU1和CPU2)同时开始加载并运行各自的Bootrom代码。CPU0中的Bootrom采用NorFlash加载的方式运行,CPU1中的Bootrom采用NandFlash加载的方式运行,CPU2中的Bootrom代码为专门用于提高Nand颗粒加载兼容性的代码。
具体的,不同CPU之间通过IPC模块实现CPU之间的通讯,告知其他CPU对应BootLoader文件的加载校验情况。
参考图9,多核运行单元20包括中断开启模块201,第一读取模块202和第一校验模块203。
中断开启模块201,用于CPU0开启IPC中断。
第一读取模块202,用于从NorFlash中读取BootLoader文件。
第一校验模块203,用于校验读取的BootLoader文件的正确性。
CPU0上电之后,首先会开启IPC中断,进而加载BootLoader文件,并对BootLoader文件的正确性进行校验。在这个过程中,一旦CPU0收到CPU1或CPU2发来的IPC中断信号,说明CPU1或CPU2已经完成了Bootloader的加载校验,即代表CPU1或者CPU2先于CPU0完成加载校验操作。CPU0便不会继续执行剩下的操作,例如Bootloader加载校验操作,同时CPU0会关闭IPC中断,停止CPU1和CPU2的所有操作。
如果CPU0比CPU1和CPU2先完成BootLoader的加载校验操作,CPU0同样会关闭IPC中断,并停止CPU1和CPU2的所有操作,将BootLoader文件复制到CPU0的ATCM零地址,再将运行指针跳转到ATCM零地址,加载BootLoader文件运行。这样,便可自动找出三个CPU中最快完成加载校验BootLoader文件的方式,控制器芯片会自动选择该最快的加载方式运行BootLoader文件,同时释放了控制器GPIO的资源。
参考图10,多核运行还单元包括:默认初始化模块211,第二读取模块212和第二校验模块213。
默认初始化模块211,用于CPU1使用默认的配置初始化Nand颗粒。
第二读取模块212,用于从默认颗粒的NandFlash中读取BootLoader文件。
第二校验模块213,用于校验读取的BootLoader文件的正确性。
CPU1上电之后,会使用Bootrom代码中默认的颗粒配置,初始化NandFlash,从NandFlash中加载BootLoader文件,并对其做正确性校验,一旦校验通过,便向CPU0发送IPC中断信号,通知CPU0已经有核心完成了BootLoader文件的加载校验操作,其他CPU0和CPU2无需继续执行剩下的操作,提高BootLoader文件的加载效率,缩短Bootrom的启动时间。
参考图11,多核运行单元还包括:代码读取模块221,第一跳转模块222,颗粒初始化模块223,第二跳转模块224和第三校验模块225。
代码读取模块221,用于CPU2从EFUSE中读取库代码文件。
第一跳转模块222,用于将运行指针跳转到库代码的零地址,库代码运行。
颗粒初始化模块223,用于使用库代码对更新换代的Nand颗粒进行初始化操作,从NandFlash中读取BootLoader文件。
第二跳转模块224,用于将运行指针跳转回到Bootrom。
第三校验模块225,用于校验读取的BootLoader文件的正确性。
CPU2上电之后,首先会读取控制器EFUSE中的库代码文件,运行该库代码,将BootLoader文件从NandFlash中读取出来,再跳转回到Bootrom中继续运行,如果校验通过,便向CPU0发送IPC中断信号,通知CPU0已经有核心完成了BootLoader文件的加载校验操作,提高了BootLoader文件的加载效率,缩短Bootrom的启动时间。
由于EFUSE中的库代码会根据后续固态硬盘所使用的Nand颗粒进行适配,库代码是后续编写烧写进EFUSE中的,这便保证了CPU2中的Bootrom代码可以支持更新换代的Nand颗粒,提高了Bootrom对Nand颗粒的兼容性。
对于监控接收单元30,监控所有进行Bootrom加载的CPU,在不同的CPU在完成Bootrom启动,也就是成功加载校验完BootLoader文件之后,就会通过IPC向CPU0发送IPC中断信号,根据接收到的IPC中断信号可以确定已经有完成加载校验的CPU,此时停止其他CPU运行,并将BootLoader文件复制搬运到CPU0中的ATCM零地址,再将运行指针跳转到ATCM零地址,加载BootLoader文件运行。这样,便可自动找出三个CPU中最快完成加载校验BootLoader文件的方式,控制器芯片会自动选择该最快的加载方式运行BootLoader文件,同时释放了控制器GPIO的资源。
参考图12,监控接收单元30包括结果获取模块31和完成判定模块32。
结果获取模块31,用于获取BootLoader文件校验结果。
完成判定模块32,用于若校验结果为正确,则判定该CPU完成Bootrom加载。
不同的CPU通过不同的方式读取BootLoader文件,在BootLoader文件在读取加载之后,需要对BootLoader文件进行校验,进行校验,防止运行错误的BootLoader文件。
对于停止运行单元40,搬运单元50和跳转单元60,在接收到任一CPU发送的IPC中断信号之后,立即获取发出IPC中断信号的CPU信息,并将其余的CPU停止运行,并将加载校验成功的BootLoader文件复制搬运到CPU0中的ATCM零地址,再将运行指针跳转到ATCM零地址,加载BootLoader文件运行。这样,便可自动找出三个CPU中最快完成加载校验BootLoader文件的方式,控制器芯片会自动选择该最快的加载方式运行BootLoader文件,同时释放了控制器GPIO的资源。
本方案采用多个CPU核心同时进行Bootrom加载,使控制芯片Bootrom能够以最少的时间加载BootLoader运行,相对于现有的解决方案,大大缩短了加载时间;通过库代码初始化更新换代的Nand颗粒,在不占用控制器GPIO资源的同时,提高了Bootrom对Nand颗粒的兼容性。
以上所述仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种BOOTROM多核加载方法,其特征在于,包括以下步骤:
控制芯片上电;
同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom;
监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号;
根据接收到的IPC中断信号,停止运行其他CPU;
读取完成Bootrom加载的CPU对应的BootLoader文件到CPU0的ATCM零地址;
CPU0的运行指针跳转到ATCM零地址,运行对应的BootLoader文件。
2.如权利要求1所述的BOOTROM多核加载方法,其特征在于,所述同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom步骤,包括,
CPU0开启IPC中断;
从NorFlash中读取BootLoader文件;
校验读取的BootLoader文件的正确性。
3.如权利要求1所述的BOOTROM多核加载方法,其特征在于,所述同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom步骤,包括,
CPU1使用默认的配置初始化Nand颗粒;
从默认颗粒的NandFlash中读取BootLoader文件;
校验读取的BootLoader文件的正确性。
4.如权利要求1所述的BOOTROM多核加载方法,其特征在于,所述同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom步骤,包括,
CPU2从EFUSE中读取库代码文件;
将运行指针跳转到库代码的零地址,库代码运行;
库代码对更新换代的Nand颗粒进行初始化操作,从NandFlash中读取BootLoader文件;
将运行指针跳转回到Bootrom;
校验读取的BootLoader文件的正确性。
5.如权利要求1所述的BOOTROM多核加载方法,其特征在于,所述监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号步骤,包括,
获取BootLoader文件校验结果;
若校验结果为正确,则判定该CPU完成Bootrom加载。
6.一种BOOTROM多核加载装置,其特征在于,包括:
上电单元,用于为控制芯片上电;
多核运行单元,用于同时运行多个CPU,不同CPU通过不同的加载模式加载对应的Bootrom;
监控接收单元,用于监控所有CPU,并接收最先完成Bootrom加载的CPU发出的IPC中断信号;
停止运行单元,用于根据接收到的IPC中断信号,停止运行其他CPU;
搬运单元,用于读取完成Bootrom加载的CPU对应的BootLoader文件到CPU0的ATCM零地址;
跳转单元,用于将CPU0的运行指针跳转到ATCM零地址,运行对应的BootLoader文件。
7.如权利要求6所述的BOOTROM多核加载装置,其特征在于,所述多核运行单元包括
中断开启模块,用于CPU0开启IPC中断;
第一读取模块,用于从NorFlash中读取BootLoader文件;
第一校验模块,用于校验读取的BootLoader文件的正确性。
8.如权利要求6所述的BOOTROM多核加载装置,其特征在于,所述多核运行单元包括:
默认初始化模块,用于CPU1使用默认的配置初始化Nand颗粒;
第二读取模块,用于从默认颗粒的NandFlash中读取BootLoader文件;
第二校验模块,用于校验读取的BootLoader文件的正确性。
9.如权利要求6所述的BOOTROM多核加载装置,其特征在于,所述多核运行单元包括:
代码读取模块,用于CPU2从EFUSE中读取库代码文件;
第一跳转模块,用于将运行指针跳转到库代码的零地址,库代码运行;
颗粒初始化模块,用于使用库代码对更新换代的Nand颗粒进行初始化操作,从NandFlash中读取BootLoader文件;
第二跳转模块,用于将运行指针跳转回到Bootrom;
第三校验模块,用于校验读取的BootLoader文件的正确性。
10.如权利要求6所述的BOOTROM多核加载装置,其特征在于,所述监控接收单元包括:
结果获取模块,用于获取BootLoader文件校验结果;
完成判定模块,用于若校验结果为正确,则判定该CPU完成Bootrom加载。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910097589.4A CN109800032B (zh) | 2019-01-31 | 2019-01-31 | Bootrom多核加载方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910097589.4A CN109800032B (zh) | 2019-01-31 | 2019-01-31 | Bootrom多核加载方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109800032A true CN109800032A (zh) | 2019-05-24 |
CN109800032B CN109800032B (zh) | 2022-03-25 |
Family
ID=66560824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910097589.4A Active CN109800032B (zh) | 2019-01-31 | 2019-01-31 | Bootrom多核加载方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109800032B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362436A (zh) * | 2019-07-12 | 2019-10-22 | 深圳忆联信息系统有限公司 | 提高Bootrom测试效率的方法及装置 |
CN111767231A (zh) * | 2020-07-08 | 2020-10-13 | 瓴盛科技有限公司 | 多平台Bootrom验证方法、装置、系统和计算机可读介质 |
CN112256338A (zh) * | 2020-10-27 | 2021-01-22 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
CN114489821A (zh) * | 2022-01-25 | 2022-05-13 | 中电科申泰信息科技有限公司 | 一种基于U-Boot的多核处理器一级启动程序架构 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450576A (en) * | 1991-06-26 | 1995-09-12 | Ast Research, Inc. | Distributed multi-processor boot system for booting each processor in sequence including watchdog timer for resetting each CPU if it fails to boot |
CN1525353A (zh) * | 2003-09-17 | 2004-09-01 | 中兴通讯股份有限公司 | 多处理器系统及其共享引导模块的方法 |
CN1553338A (zh) * | 2003-06-08 | 2004-12-08 | 华为技术有限公司 | 中央处理单元启动的方法及系统 |
CN104199699A (zh) * | 2014-08-29 | 2014-12-10 | 北京经纬恒润科技有限公司 | 程序加载方法、芯片启动方法、装置及主控设备 |
US20160321082A1 (en) * | 2013-12-30 | 2016-11-03 | Sanechips Technology Co., Ltd. | Chip starting method, multi-core processor chip and storage medium |
CN106126241A (zh) * | 2016-06-29 | 2016-11-16 | 上海友衷科技有限公司 | 一种Linux系统启动方法及系统 |
CN106648758A (zh) * | 2016-11-30 | 2017-05-10 | 中国电子科技集团公司第五十八研究所 | 一种多核处理器boot启动系统及方法 |
CN107544815A (zh) * | 2016-06-28 | 2018-01-05 | 中兴通讯股份有限公司 | 一种多处理器系统的启动方法及装置 |
CN108121685A (zh) * | 2017-08-07 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种嵌入式多核cpu固件运行方法 |
CN108874458A (zh) * | 2017-05-10 | 2018-11-23 | 鸿秦(北京)科技有限公司 | 一种多核SoC的固件启动方法以及多核SoC设备 |
CN109144420A (zh) * | 2018-08-22 | 2019-01-04 | 深圳忆联信息系统有限公司 | 多颗粒自适应初始化方法、装置、计算机设备及存储介质 |
-
2019
- 2019-01-31 CN CN201910097589.4A patent/CN109800032B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5450576A (en) * | 1991-06-26 | 1995-09-12 | Ast Research, Inc. | Distributed multi-processor boot system for booting each processor in sequence including watchdog timer for resetting each CPU if it fails to boot |
CN1553338A (zh) * | 2003-06-08 | 2004-12-08 | 华为技术有限公司 | 中央处理单元启动的方法及系统 |
CN1525353A (zh) * | 2003-09-17 | 2004-09-01 | 中兴通讯股份有限公司 | 多处理器系统及其共享引导模块的方法 |
US20160321082A1 (en) * | 2013-12-30 | 2016-11-03 | Sanechips Technology Co., Ltd. | Chip starting method, multi-core processor chip and storage medium |
CN104199699A (zh) * | 2014-08-29 | 2014-12-10 | 北京经纬恒润科技有限公司 | 程序加载方法、芯片启动方法、装置及主控设备 |
CN107544815A (zh) * | 2016-06-28 | 2018-01-05 | 中兴通讯股份有限公司 | 一种多处理器系统的启动方法及装置 |
CN106126241A (zh) * | 2016-06-29 | 2016-11-16 | 上海友衷科技有限公司 | 一种Linux系统启动方法及系统 |
CN106648758A (zh) * | 2016-11-30 | 2017-05-10 | 中国电子科技集团公司第五十八研究所 | 一种多核处理器boot启动系统及方法 |
CN108874458A (zh) * | 2017-05-10 | 2018-11-23 | 鸿秦(北京)科技有限公司 | 一种多核SoC的固件启动方法以及多核SoC设备 |
CN108121685A (zh) * | 2017-08-07 | 2018-06-05 | 鸿秦(北京)科技有限公司 | 一种嵌入式多核cpu固件运行方法 |
CN109144420A (zh) * | 2018-08-22 | 2019-01-04 | 深圳忆联信息系统有限公司 | 多颗粒自适应初始化方法、装置、计算机设备及存储介质 |
Non-Patent Citations (3)
Title |
---|
NISHA JACOB等: "Securing FPGA SoC configurations independent of their manufacturers", 《2017 30TH IEEE INTERNATIONAL SYSTEM-ON-CHIP CONFERENCE (SOCC)》 * |
刘大雪等: "基于固化代码的多外设多核数字信号处理器启动设计", 《第十九届计算机工程与工艺年会暨第五届微处理器技术论坛论文集》 * |
白杰等: "基于ARM的实验室智能无线监控系统设计", 《实验室研究与探索》 * |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110362436A (zh) * | 2019-07-12 | 2019-10-22 | 深圳忆联信息系统有限公司 | 提高Bootrom测试效率的方法及装置 |
CN111767231A (zh) * | 2020-07-08 | 2020-10-13 | 瓴盛科技有限公司 | 多平台Bootrom验证方法、装置、系统和计算机可读介质 |
CN111767231B (zh) * | 2020-07-08 | 2023-10-31 | 瓴盛科技有限公司 | 多平台Bootrom验证方法、装置、系统和计算机可读介质 |
CN112256338A (zh) * | 2020-10-27 | 2021-01-22 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
CN112256338B (zh) * | 2020-10-27 | 2023-12-05 | 记忆科技(深圳)有限公司 | Soc启动方法、装置、计算机设备及存储介质 |
CN114489821A (zh) * | 2022-01-25 | 2022-05-13 | 中电科申泰信息科技有限公司 | 一种基于U-Boot的多核处理器一级启动程序架构 |
Also Published As
Publication number | Publication date |
---|---|
CN109800032B (zh) | 2022-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109800032A (zh) | Bootrom多核加载方法及装置 | |
JP5270377B2 (ja) | ブリッジサポートを有するプラットフォーム起動 | |
EP2596423B1 (en) | Providing platform independent memory logic | |
CN106293832B (zh) | 一种soc芯片引导启动方法及系统 | |
US20070220244A1 (en) | Chipset-independent method for locally and remotely updating and configuring system BIOS | |
JP2014220011A (ja) | Mmc/sdデバイスからホストデバイスをブートする方法,mmc/sdデバイスからブート可能なホストデバイス及びホストデバイスをブートできるmmc/sdデバイス | |
US10140231B2 (en) | Flexible port configuration based on interface coupling | |
US20190065300A1 (en) | Method of retrieving debugging data in uefi and computer system thereof | |
US7194614B2 (en) | Boot swap method for multiple processor computer systems | |
CN109426527B (zh) | 在uefi固件及作业系统间分享蓝牙数据的电脑系统及其方法 | |
CN110688235B (zh) | Uefi固件与os间共享无线连接信息的系统及方法 | |
CN100498728C (zh) | 用于确定一组健康的处理器和用来引导系统的关联固件的系统和方法 | |
US11221842B2 (en) | Systems and methods for executing and verifying system firmware update before committing firmware update to motherboard | |
US8373707B1 (en) | System and method for selecting the boot VGA adapter in a multi-graphics processing unit computing system | |
US9778936B1 (en) | Booting a computing system into a manufacturing mode | |
WO2022199622A1 (zh) | 一种电子设备的启动程序的运行方法和电子设备 | |
CN116450046A (zh) | 云盘实现方法、装置、智能网卡、服务器及存储介质 | |
CN114461142B (zh) | 一种读写Flash数据的方法、系统、装置及介质 | |
CN113821265B (zh) | 操作系统控制方法、装置、计算机主板和可读存储介质 | |
US7519802B2 (en) | System and method for configuring a computer system | |
EP3223133A1 (en) | Method for setting redundant array of independent disks | |
CN101114230A (zh) | 自储存装置上读取选择只读存储器程序代码的方法 | |
CN113821240A (zh) | 固件升级方法、电子设备、存储介质及信号锁存电路 | |
CN112667544A (zh) | 一种控制主板插槽使能的方法、装置、系统及介质 | |
CN114637539B (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 |