一种控制器加载多核固件的方法、装置、计算机设备及存储介质与流程

文档序号:17948834发布日期:2019-06-18 23:52阅读:137来源:国知局
一种控制器加载多核固件的方法、装置、计算机设备及存储介质与流程

本发明涉及固态硬盘,更具体地说是一种控制器加载多核固件的方法、装置、计算机设备及存储介质。



背景技术:

固态硬盘控制器的bootloader(多核固件加载工程)运行在单个cpu中,其作用是从nandflash中加载多核固件至控制器的存储区域运行。考虑到多核固件文件通常较大,通常控制器会将多核固件从nandflash中读取缓存到dram(动态随机存取存储器)中,再对固件做搬移。

加载多核固件的流程如图1所示,控制器芯片上电之后,固化在控制器内部的bootrom(启动代码)首先运行,bootrom会从nandflash指定区域加载bootloader运行。bootloader会对控制器相关的模块做初始化操作,包括crm(时钟模块)、nfc(nandflash控制器)、dmac(直接内存存取模块控制器)、dram。bootloader在sram(静态随机存取存储器)中申请一段缓存空间,控制器将每个page的数据读取到该段缓存空间,第一cpu(cpu0)再将缓存中的数据按顺序拷贝到dram中,直到读取完多核固件。此时,完整的多核固件便存储在了固态硬盘的dram中。由于cpu0无法通过cpu拷贝的方式将dram中的数据搬移到其他cpu的itcm(内核指令运行区域)或者dtcm(内核数据运行区域)中,因此只能通过外部模块搬运数据,通常控制器采用dma搬运的方式,将多核固件搬移到指定cpu的指定存储区域。cpu0再释放其他cpu,让其他cpu正常运行,cpu0再跳转至零地址运行。此时所有cpu正常运行全系统多核固件。

通常固态硬盘控制器bootloader对加载多核固件的时间要求较高,一旦启动时间过长,将导致固态硬盘和主机无法正常收发命令。

上述方法存在以下问题:通常多核固件文件较大,现有bootloader将数据从颗粒搬移到指定cpu的指定存储区域需要搬移3次,首先从nandflash中通过nfc搬移到一段缓存中,再通过cpu拷贝的方式从缓存搬移到dram中,最后使用dmac将dram中的数据搬移到各个cpu的指定位置,加载固件的时间过长,一旦时间过长,将导致固态硬盘和主机无法正常收发命令。另外,需要初始化的模块过多,从而导致初始化消耗的时间也太长。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种控制器加载多核固件的方法、装置、计算机设备及存储介质。

为实现上述目的,本发明采用以下技术方案:一种控制器加载多核固件的方法,所述方法包括以下步骤:

第一cpu运行启动代码;

启动代码从nandflash中加载多核固件加载工程;

第一cpu运行多核固件加载工程;

nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域;

第一cpu运行的多核固件加载工程释放除第一cpu之外的所有cpu,第一cpu再跳转至零地址运行。

其进一步技术方案为:所述的nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域中,所述指定存储区域为内核数据运行区域和内核指令运行区域。

其进一步技术方案为:所述的第一cpu运行多核固件加载工程的步骤之后,还包括以下步骤:

初始化nandflash控制器;

多核固件加载工程读取多核固件所在通道的第一个page,以获取多核固件搬移的相关信息。

其进一步技术方案为:所述的多核固件加载工程读取多核固件所在通道的第一个page,以获取多核固件搬移的相关信息的步骤中,所述相关信息包括指定的cpu编号、存储区域地址、搬移的数据长度。

其进一步技术方案为:所述的nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域的步骤之后,还包括以下步骤:

判断是否读取完所有page;

若是,则进入所述的第一cpu运行的多核固件加载工程释放除第一cpu之外的所有cpu,第一cpu再跳转至零地址运行步骤;

若否,则返回所述的nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域的步骤。

一种控制器加载多核固件的装置,所述装置包括第一运行单元、加载单元、第二运行单元、搬移单元以及释放单元;

所述第一运行单元,用于第一cpu运行启动代码;

所述加载单元,用于启动代码从nandflash中加载多核固件加载工程;

所述第二运行单元,用于第一cpu运行多核固件加载工程;

所述搬移单元,用于nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域;

所述释放单元,用于第一cpu运行的多核固件加载工程释放除第一cpu之外的所有cpu,第一cpu再跳转至零地址运行。

其进一步技术方案为:所述装置还包括初始化单元以及读取单元;

所述初始化单元,用于初始化nandflash控制器;

所述读取单元,用于多核固件加载工程读取多核固件所在通道的第一个page,以获取多核固件搬移的相关信息。

其进一步技术方案为:所述装置还包括判断单元;

所述判断单元,用于判断是否读取完所有page。

一种计算机设备,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的控制器加载多核固件的方法步骤。

一种存储介质,所述存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令被处理器执行时,使得所述处理器执行如上述的控制器加载多核固件的方法步骤。

本发明与现有技术相比的有益效果是:本发明提供的一种控制器加载多核固件的方法,避免了使用dma将dram中的多核固件搬移到指定cpu的指定存储区域,而是通过nandflash控制器直接将nandflash中每个page的多核固件搬移到cpu的指定存储区域,大大减少了控制器加载多核固件的时间。另外,去除了时钟模块、直接内存存取模块控制器以及动态随机存取存储器的使用,进一步的缩短了多核固件加载的时间。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征及优点能够更明显易懂,以下特举较佳实施例,详细说明如下。

附图说明

图1为现有技术控制器加载多核固件的流程图;

图2为本发明一种控制器加载多核固件的方法具体实施例的流程图;

图3为本发明一种控制器加载多核固件的装置具体实施例的结构示意图;

图4为本发明为本发明一种计算机设备具体实施例的示意性框图。

具体实施方式

为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。

应当理解,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序。

还应当理解,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。

如图2所示,本发明提供了一种控制器加载多核固件的方法,该方法包括以下步骤:

s10、第一cpu运行启动代码;

s20、启动代码从nandflash中加载多核固件加载工程;

s30、第一cpu运行多核固件加载工程;

s40、初始化nandflash控制器;

s50、多核固件加载工程读取多核固件所在通道的第一个page,以获取多核固件搬移的相关信息;

s60、nandflash控制器将nandflash中每个page(页)的多核固件搬移到cpu的指定存储区域;

s70、判断是否读取完所有page,若是,则进入步骤s80,若否,则返回步骤s60;

s80、第一cpu运行的多核固件加载工程释放除第一cpu之外的所有cpu,第一cpu再跳转至零地址运行。

具体的,步骤s50中,相关信息包括指定的cpu编号、存储区域地址、搬移的数据长度。步骤s60中,指定存储区域为内核数据运行区域和内核指令运行区域。

当固态硬盘的芯片上电之后,第一cpu(简称为cpu0)运行启动代码,启动代码会从nandflash中加载多核固件加载工程,然后cpu0会运行多核固件加载工程,多核固件加载工程运行后只需将多核固件加载工程所需的nandflash控制器(nfc)做相关初始化操作。固态硬盘控制器使用nfc通过固态硬盘系统总线将每个page中的固件直接搬移到指定cpu的内核数据运行区域和内核指令运行区域。由于多核固件搬移的相关信息存放在nandflash第一个page中,控制器在搬移数据之前,首先读取nandflash中的第一个page,获取多核固件的相关信息。搬移完数据之后,cpu0运行的多核固件加载工程便释放除cpu0之外的所有cpu,cpu0跳转至零地址运行,进而使得多核固件成功运行。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

对应于上述实施例所述的一种控制器加载多核固件的方法,本发明提供了一种控制器加载多核固件的装置。如图3所示,该装置包括第一运行单元1、加载单元2、第二运行单元3、搬移单元4以及释放单元5、初始化单元6、读取单元7以及判断单元8;

第一运行单元1,用于第一cpu运行启动代码;

加载单元2,用于启动代码从nandflash中加载多核固件加载工程;

第二运行单元3,用于第一cpu运行多核固件加载工程;

搬移单元4,用于nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域;

释放单元5,用于第一cpu运行的多核固件加载工程释放除第一cpu之外的所有cpu,第一cpu再跳转至零地址运行;

初始化单元6,用于初始化nandflash控制器;

读取单元7,用于多核固件加载工程读取多核固件所在通道的第一个page,以获取多核固件搬移的相关信息;

判断单元8,用于判断是否读取完所有page。

具体的,相关信息包括指定的cpu编号、存储区域地址、搬移的数据长度。指定存储区域为内核数据运行区域和内核指令运行区域。

当固态硬盘的芯片上电之后,第一cpu(简称为cpu0)运行启动代码,启动代码会从nandflash中加载多核固件加载工程,然后cpu0会运行多核固件加载工程,多核固件加载工程运行后只需将多核固件加载工程所需的nandflash控制器(nfc)做相关初始化操作。固态硬盘控制器使用nfc通过固态硬盘系统总线将每个page中的固件直接搬移到指定cpu的内核数据运行区域和内核指令运行区域。由于多核固件搬移的相关信息存放在nandflash第一个page中,控制器在搬移数据之前,首先读取nandflash中的第一个page,获取多核固件的相关信息。搬移完数据之后,cpu0运行的多核固件加载工程便释放除cpu0之外的所有cpu,cpu0跳转至零地址运行,进而使得多核固件成功运行。

如图4所示,本发明还提供了一种计算机设备,包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现如上述的控制器加载多核固件的方法步骤。

该计算机设备700可以是终端或服务器。该计算机设备700包括通过系统总线710连接的处理器720、存储器和网络接口750,其中,存储器可以包括非易失性存储介质730和内存储器740。

该非易失性存储介质730可存储操作系统731和计算机程序732。该计算机程序732被执行时,可使得处理器720执行任意一种控制器加载多核固件的方法。

该处理器720用于提供计算和控制能力,支撑整个计算机设备700的运行。

该内存储器740为非易失性存储介质730中的计算机程序732的运行提供环境,该计算机程序732被处理器720执行时,可使得处理器720执行任意一种控制器加载多核固件的方法。

该网络接口750用于进行网络通信,如发送分配的任务等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备700的限定,具体的计算机设备700可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。其中,所述处理器720用于运行存储在存储器中的程序代码,以实现以下步骤:

第一cpu运行启动代码;

启动代码从nandflash中加载多核固件加载工程;

第一cpu运行多核固件加载工程;

nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域;

第一cpu运行的多核固件加载工程释放除第一cpu之外的所有cpu,第一cpu再跳转至零地址运行。

进一步的:所述的第一cpu运行多核固件加载工程的步骤之后,还包括以下步骤:

初始化nandflash控制器;

多核固件加载工程读取多核固件所在通道的第一个page,以获取多核固件搬移的相关信息。

进一步的:所述的nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域的步骤之后,还包括以下步骤:

判断是否读取完所有page;

若是,则进入所述的第一cpu运行的多核固件加载工程释放除第一cpu之外的所有cpu,第一cpu再跳转至零地址运行步骤;

若否,则返回所述的nandflash控制器将nandflash中每个page的多核固件搬移到cpu的指定存储区域的步骤。

应当理解,在本申请实施例中,处理器720可以是中央处理单元(centralprocessingunit,cpu),该处理器720还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

本领域技术人员可以理解,图4中示出的计算机设备700结构并不构成对计算机设备700的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。

所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明中各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、磁碟或者光盘等各种可以存储程序代码的介质。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1