固件升级中内存动态分配的方法、装置、计算机设备及存储介质与流程

文档序号:19737183发布日期:2020-01-18 04:39阅读:187来源:国知局
固件升级中内存动态分配的方法、装置、计算机设备及存储介质与流程

本发明涉及ssd领域,更具体地说是指一种固件升级中内存动态分配的方法、装置、计算机设备及存储介质。



背景技术:

ssd,solidstatedisk或solidstatedrive,俗称固态硬盘,固态硬盘是用固态电子存储芯片阵列而制成的硬盘,ssd由控制单元和存储单元(flash芯片、dram芯片)组成。固态硬盘在接口的规范和定义、功能及使用方法上与普通硬盘的完全相同,在产品外形和尺寸上也完全与普通硬盘一致。被广泛应用于军事、车载、工控、视频监控、网络监控、网络终端、电力、医疗、航空、导航设备等诸多领域。

ssd固件升级,是使用改进的固件程序替换ssd中原有的固件,能够提高设备的功能和性能。固件升级分为固件下载和固件激活两步。其中,固件下载将固件通过多条命令下载,下载命令需要在dram中申请一段内存空间用于接收主机发送过来的新固件。当前机制是在dram中申请一段连续、固定大小的内存。这样存在一个弊端,当要升级的固件大小大于申请的固定大小的内存空间,会导致新固件无法完整的下载。

现有方案需要申请固定大小的内存空间,无法根据固件的大小实时更改临时内存空间的大小,会造成内存空间浪费。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种固件升级中内存动态分配的方法、装置、计算机设备及存储介质。

为实现上述目的,本发明采用以下技术方案:一种固件升级中内存动态分配的方法,其特征在于,包括以下步骤:

接收下载命令,所述下载命令携带有由待升级固件分割而成的固件数据;

解析接收到的第一条下载命令携带的header信息,得到待升级固件的固件大小;

根据固件大小,从动态随机存取存储器中申请固件大小的空闲内存作为临时内存;

接收剩余的下载命令;

将下载命令中携带的固件数据存储于临时内存中。

进一步地,所述根据固件大小,从动态随机存取存储器中申请固件大小的空闲内存作为临时内存的步骤,包括:

从动态随机存取存储器中获取连续或者不连续的空闲内存;

将空闲内存作为临时内存,用于存放固件数据。

进一步地,所述将下载命令中携带的固件数据存储于临时内存中的步骤之后,包括:

判断所有固件数据是否全部下载完毕;

若是,接收固件激活命令,根据固件激活命令激活待升级固件;

在固件激活完成之后,释放临时内存。

进一步地,所述接收固件激活命令,根据固件激活命令激活待升级固件的步骤,包括:

根据固件激活命令检查固件数据;

将固件数据从动态随机存取存储器的临时内存中写入nand的指定位置。

本发明还采用以下技术方案:一种固件升级中内存动态分配的装置,包括:

第一接收单元,用于接收下载命令,所述下载命令携带有由待升级固件分割而成的固件数据;

命令解析单元,用于解析接收到的第一条下载命令携带的header信息,得到待升级固件的固件大小;

内存申请单元,用于根据固件大小,从动态随机存取存储器中申请固件大小的空闲内存作为临时内存;

第二接收单元,用于接收剩余的下载命令;

固件下载单元,用于将下载命令中携带的固件数据存储于临时内存中。

进一步地,所述内存申请单元包括内存获取模块和临时内存模块;

所述内存获取模块,用于从动态随机存取存储器中获取连续或者不连续的空闲内存;

所述临时内存模块,用于将空闲内存作为临时内存,用于存放固件数据。

进一步地,还包括完成判断单元、固件激活单元和内存释放单元;

所述完成判断单元,用于判断所有固件数据是否全部下载完毕;

所述固件激活单元,用于在固件数据全部下载完毕时,接收固件激活命令,根据固件激活命令激活待升级固件;

所述内存释放单元,用于在固件激活完成之后,释放临时内存。

进一步地,所述固件激活单元包括数据检查模块和数据写入模块;

所述数据检查模块,用于根据固件激活命令检查固件数据;

所述数据写入模块,用于将固件数据从动态随机存取存储器的临时内存中写入nand的指定位置。

本发明还采用以下技术方案:一种计算机设备,所述计算机设备包括存储器及处理器,所述存储器上存储有计算机程序,所述处理器执行所述计算机程序时实现如上任一项所述的固件升级中内存动态分配的方法。

本发明还采用以下技术方案:一种存储介质,所述存储介质存储有计算机程序,所述计算机程序被处理器执行时可实现如上任一项所述的固件升级中内存动态分配的方法。

本发明与现有技术相比的有益效果是:本发明通过解析信息中的header信息,得到固件大小,并根据实际固件大小动态的从dram中获取空闲内存用作临时内存存储固件数据,在固件升级完成后,立即释放临时内存占用的内存空间,可以缩减存放固件数据的内存空间大小,同时,可以根据固件大小更改临时内存的大小,避免dram内存空间浪费。

下面结合附图和具体实施例对本发明作进一步描述。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明实施例提供的一种固件升级中内存动态分配的方法的应用场景示意图;

图2为本发明实施例提供的一种固件升级中内存动态分配的方法的流程示意图;

图3为本发明实施例提供的一种固件升级中内存动态分配的方法的子流程示意图;

图4为本发明另一实施例提供的一种固件升级中内存动态分配的方法的流程示意图;

图5为本发明另一实施例提供的一种固件升级中内存动态分配的方法的子流程示意图;

图6为本发明实施例提供的一种固件升级中内存动态分配的方法的应用原理图;

图7为本发明实施例提供的一种固件升级中内存动态分配的装置的示意性框图;

图8为本发明实施例提供的一种固件升级中内存动态分配的装置的内存申请单元的示意性框图;

图9为本发明另一实施例提供的一种固件升级中内存动态分配的装置的示意性框图;

图10为本发明另一实施例提供的一种固件升级中内存动态分配的装置的固件激活单元的示意性框图;

图11为本发明实施例提供的计算机设备的示意性框图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。

还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。

还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。

请参阅图1和图2,图1为本发明实施例提供的一种固件升级中内存动态分配的应用场景示意图。图2为本发明实施例提供的固件升级中内存动态分配的示意性流程图。该固件升级中内存动态分配应用于服务器中,该服务器与终端(主机)进行数据交互,由终端根据待升级固件分割成若干下载命令发送给服务器,并由服务器根据接收到的第一条下载命令解析,得到待升级固件的固件大小,并根据固件大小,控制ssd从动态随机存取存储器中申请固件大小的空闲内存作为临时内存,将下载命令中携带的固件数据存储于临时内存中,可以缩减需要申请的内存空间,同时可以根据固件的大小实时更改临时内存的大小,避免内存空间浪费。

图2是本发明实施例提供的固件升级中内存动态分配的方法的流程示意图。如图2所示,该方法包括以下步骤s110至s150。

s110、接收下载命令。

在本实施例中,现有的固件升级,用改进的固件程序或更新后的固件替换ssd中原有的固件,具有提高ssd的功能和性能的优点。固件升级包括固件下载和固件激活两个步骤,其中,固件下载时,将固件分割成多条下载命令,服务器接收来自终端(主机)的所有下载命令中携带的固件数据,以达到下载固件的目的。具体的,上述的下载命令携带有由待升级固件分割而成的固件数据,通过接收下载命令,即可获得下载命令中携带的固件数据。

s120、解析接收到的第一条下载命令携带的header信息,得到待升级固件的固件大小。

在本实施例中,header指的是携带固件相关信息(包括校验信息、固件大小等等)的512byte的一段数据,在第一条下载命令中包含有固件的内存大小信息,通过解析第一条下载命令携带的header信息,即可得到待升级固件的固件大小,后续根据固件大小向动态随机存取存储器(dynamicrandomaccessmemory,简称dram)申请空闲内存。

s130、根据固件大小,从动态随机存取存储器中申请固件大小的空闲内存作为临时内存。

现有技术方案固件下载时,是向dram申请一段连续、固定大小的内存用于存放待升级固件。现有技术方案存在以下弊端:当要升级的固件大小大于申请的固定大小的内存空间,会导致新固件无法完整的下载。而实际情况是每次升级的固件大小都不一样,因此无法一次性锁定一段合适大小的内存空间,申请的内存小了,固件升级会失败,申请内存大了,会造成资源浪费。

在本实施例中,从header中获取到固件大小之后,根据固件大小动态的向dram申请对应大小的空闲内存用于存放固件,能够做到根据实际固件的大小适应性的来向dram申请内存空间,可以保证足够存放待升级固件的前提下,有效的缩减需要申请内存空间的大小,避免空间浪费。

参阅图3,在一实施例中,步骤s130包括步骤s131和s132。

s131、从动态随机存取存储器中获取连续或者不连续的空闲内存。

s132、将空闲内存作为临时内存,用于存放固件数据。

对于步骤s131和s132,从动态随机存取存储器中获取连续或者不连续的空闲内存(以4kb为单位),将空闲内存作为临时内存,用于存放固件数据。本发难不要求连续的内存空间,通过零散的空闲内存提高了临时内存的配置的灵活性,更加高效的实现对于动态随机存取存储器的利用。

s140、接收剩余的下载命令。

在本实施例中,在根据实际固件大小申请建立临时内存空间之后,继续接收剩余的下载命令,以获取到剩余的固件数据,最终将待升级固件的所有固件数据全部下载到临时内存中存储,以对用于后续激活并升级固件。

s150、将下载命令中携带的固件数据存储于临时内存中。

在本实施例中,临时内存用于临时存储待升级固件的全部固件数据,ssd可以根据临时内存的固件数据进行升级,保证固件升级的稳定高效进行,最后在固件完成升级之后,立即释放临时内存,避免内存空间浪费,节省dram空间。

在一具体实施例中,图6为一种固件升级中内存动态分配的方法的实际应用原理图,如图6所示,本发明的一种固件升级中内存动态分配的方法可以直接应用于ssd中,由ssd接收主机下发下载命令,进行固件下载,并解析下载命令得到固件大小,根据固件大小向dram申请连续或者不连续的空闲内存作为临时内存存储固件数据。具体的,接收到第一条下载命令时,将img信息存放在dram的local_buf中。

本发明通过解析信息中的header信息,得到固件大小,并根据实际固件大小动态的从dram中获取空闲内存用作临时内存存储固件数据,在固件升级完成后,立即释放临时内存占用的内存空间,可以缩减存放固件数据的内存空间大小,同时,可以根据固件大小更改临时内存的大小,避免dram内存空间浪费。

图4是本发明另一实施例提供的一种固件升级中内存动态分配的方法的流程示意图。如图4所示,本实施例的固件升级中内存动态分配的方法包括步骤s210-s280。其中步骤s210-s250与上述实施例中的步骤s110-s150类似,在此不再赘述。下面详细说明本实施例中所增加的步骤s260-s280。

s260、判断所有固件数据是否全部下载完毕。

在本实施例中,通过判断下载命令是否全部接收下载完成,进而判断出固件数据是否全部下载完毕,如果全部下载完毕,则代表固件下载完成,可以根据固件激活命令激活固件完成固件升级;如果未下载完毕,则返回步骤s240,继续接收剩余的下载命令,并最终将全部固件数据下载存储到临时内存中。

s270、若是,接收固件激活命令,根据固件激活命令激活待升级固件。

在本实施例中,在固件数据全部下载完毕时,代表固件下载完成,可以根据固件激活命令激活固件完成固件升级。

参阅图5,在一实施例中,步骤s270包括步骤s271和s272。

s271、根据固件激活命令检查固件数据。

在一实施例中,在激活固件前,需要对固件数据进行检查,保证固件数据的完整性,并进一步保证后续固件升级的稳定进行。

s272、将固件数据从动态随机存取存储器的临时内存中写入nand的指定位置。

在一实施例中,将固件数据从动态随机存取存储器的临时内存中写入nand的指定位置,即完成了固件升级过程中的固件激活。

s280、在固件激活完成之后,释放临时内存。

在本实施例中,临时内存,是根据实际固件大小,动态的从dram中获取空闲内存,在固件升级完成后,立即释放这些临时占用的内存空间,避免dram内存空间浪费,节省dram的空间。

图7是本发明实施例提供的一种固件升级中内存动态分配的装置的示意性框图。如图7所示,对应于以上固件升级中内存动态分配的方法,本发明还提供一种固件升级中内存动态分配的装置。该固件升级中内存动态分配的装置包括用于执行上述固件升级中内存动态分配的方法的单元,该装置可以被配置于台式电脑、平板电脑、手提电脑、等终端中。具体地,请参阅图7,该固件升级中内存动态分配的装置包括第一接收单元10,命令解析单元20,内存申请单元30,第二接收单元40和固件下载单元50。

第一接收单元10,用于接收下载命令,所述下载命令携带有由待升级固件分割而成的固件数据。

在本实施例中,现有的固件升级,用改进的固件程序或更新后的固件替换ssd中原有的固件,具有提高ssd的功能和性能的优点。固件升级包括固件下载和固件激活两个步骤,其中,固件下载时,将固件分割成多条下载命令,服务器接收来自终端(主机)的所有下载命令中携带的固件数据,以达到下载固件的目的。具体的,上述的下载命令携带有由待升级固件分割而成的固件数据,通过接收下载命令,即可获得下载命令中携带的固件数据。

命令解析单元20,用于解析接收到的第一条下载命令携带的header信息,得到待升级固件的固件大小。

在本实施例中,header指的是携带固件相关信息(包括校验信息、固件大小等等)的512byte的一段数据,在第一条下载命令中包含有固件的内存大小信息,通过解析第一条下载命令携带的header信息,即可得到待升级固件的固件大小,后续根据固件大小向动态随机存取存储器(dynamicrandomaccessmemory,简称dram)申请空闲内存。

内存申请单元30,用于根据固件大小,从动态随机存取存储器中申请固件大小的空闲内存作为临时内存。

现有技术方案固件下载时,是向dram申请一段连续、固定大小的内存用于存放待升级固件。现有技术方案存在以下弊端:当要升级的固件大小大于申请的固定大小的内存空间,会导致新固件无法完整的下载。而实际情况是每次升级的固件大小都不一样,因此无法一次性锁定一段合适大小的内存空间,申请的内存小了,固件升级会失败,申请内存大了,会造成资源浪费。

在本实施例中,从header中获取到固件大小之后,根据固件大小动态的向dram申请对应大小的空闲内存用于存放固件,能够做到根据实际固件的大小适应性的来向dram申请内存空间,可以保证足够存放待升级固件的前提下,有效的缩减需要申请内存空间的大小,避免空间浪费。

参阅图8,在一实施例中,内存申请单元30包括内存获取模块31和临时内存模块32。

内存获取模块31,用于从动态随机存取存储器中获取连续或者不连续的空闲内存。

临时内存模块32,用于将空闲内存作为临时内存,用于存放固件数据。

对于内存获取模块31和临时内存模块32,从动态随机存取存储器中获取连续或者不连续的空闲内存(以4kb为单位),将空闲内存作为临时内存,用于存放固件数据。本发难不要求连续的内存空间,通过零散的空闲内存提高了临时内存的配置的灵活性,更加高效的实现对于动态随机存取存储器的利用。

第二接收单元40,用于接收剩余的下载命令。

在本实施例中,在根据实际固件大小申请建立临时内存空间之后,继续接收剩余的下载命令,以获取到剩余的固件数据,最终将待升级固件的所有固件数据全部下载到临时内存中存储,以对用于后续激活并升级固件。

固件下载单元50,用于将下载命令中携带的固件数据存储于临时内存中。

在本实施例中,临时内存用于临时存储待升级固件的全部固件数据,ssd可以根据临时内存的固件数据进行升级,保证固件升级的稳定高效进行,最后在固件完成升级之后,立即释放临时内存,避免内存空间浪费,节省dram空间。

本发明通过解析信息中的header信息,得到固件大小,并根据实际固件大小动态的从dram中获取空闲内存用作临时内存存储固件数据,在固件升级完成后,立即释放临时内存占用的内存空间,可以缩减存放固件数据的内存空间大小,同时,可以根据固件大小更改临时内存的大小,避免dram内存空间浪费。

图9是本发明另一实施例提供的一种固件升级中内存动态分配的装置的示意性框图。如图9所示,本实施例的固件升级中内存动态分配的装置是上述实施例的基础上增加了完成判断单元60、固件激活单元70和内存释放单元80。

完成判断单元60,用于判断所有固件数据是否全部下载完毕。

在本实施例中,通过判断下载命令是否全部接收下载完成,进而判断出固件数据是否全部下载完毕,如果全部下载完毕,则代表固件下载完成,可以根据固件激活命令激活固件完成固件升级;如果未下载完毕,则返回继续接收剩余的下载命令,并最终将全部固件数据下载存储到临时内存中。

固件激活单元70,用于在固件数据全部下载完毕时,接收固件激活命令,根据固件激活命令激活待升级固件。

在本实施例中,在固件数据全部下载完毕时,代表固件下载完成,可以根据固件激活命令激活固件完成固件升级。

参阅图10,在一实施例中,固件激活单元70包括数据检查模块71和数据写入模块72。

数据检查模块71,用于根据固件激活命令检查固件数据。

在一实施例中,在激活固件前,需要对固件数据进行检查,保证固件数据的完整性,并进一步保证后续固件升级的稳定进行。

数据写入模块72,用于将固件数据从动态随机存取存储器的临时内存中写入nand的指定位置。

在一实施例中,将固件数据从动态随机存取存储器的临时内存中写入nand的指定位置,即完成了固件升级过程中的固件激活。

内存释放单元80,用于在固件激活完成之后,释放临时内存。

在本实施例中,临时内存,是根据实际固件大小,动态的从dram中获取空闲内存,在固件升级完成后,立即释放这些临时占用的内存空间,避免dram内存空间浪费,节省dram的空间。

需要说明的是,所属领域的技术人员可以清楚地了解到,上述固件升级中内存动态分配的装置和各单元的具体实现过程,可以参考前述方法实施例中的相应描述,为了描述的方便和简洁,在此不再赘述。

请参阅图11,图11是本申请实施例提供的一种计算机设备的示意性框图。该计算机设备500可以是终端,也可以是服务器,其中,终端可以是智能手机、平板电脑、笔记本电脑、台式电脑、个人数字助理和穿戴式设备等具有通信功能的电子设备。服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。

参阅图11,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。

该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032包括程序指令,该程序指令被执行时,可使得处理器502执行一种固件升级中内存动态分配的方法。

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

该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行一种固件升级中内存动态分配的方法。

该网络接口505用于与其它设备进行网络通信。本领域技术人员可以理解,图11中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。

其中,所述处理器502用于运行存储在存储器中的计算机程序5032。

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

本领域普通技术人员可以理解的是实现上述实施例的方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成。该计算机程序包括程序指令,计算机程序可存储于一存储介质中,该存储介质为计算机可读存储介质。该程序指令被该计算机系统中的至少一个处理器执行,以实现上述方法的实施例的流程步骤。

因此,本发明还提供一种存储介质。该存储介质可以为计算机可读存储介质。

所述存储介质可以是u盘、移动硬盘、只读存储器(read-onlymemory,rom)、磁碟或者光盘等各种可以存储程序代码的计算机可读存储介质。

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

在本发明所提供的几个实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。例如,各个单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。

本发明实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。本发明实施例装置中的单元可以根据实际需要进行合并、划分和删减。另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。

该集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,终端,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

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