一种固态硬盘不中断业务的更新固件的方法技术

技术编号:35922179 阅读:14 留言:0更新日期:2022-12-10 11:06
本发明专利技术提供了一种固态硬盘不中断业务的更新固件的方法,把获取的命令放到内存中,保证在更新固件时可以正常接收读写命令,从而实现了不中断业务的升级。并且在升级时,采用多个固件槽位进行循环使用操作,保证即使升级失败也可以保留原始的固件,有效防止升级失败,导致原固件也丢失的问题发生。此外,下载新固件完成后,再去更新下次启动运行使用的槽位号,进一步保证固件升级的完整性。其次,本发明专利技术在固件更新之前,采用让处理器休眠的方式,极大降低了更新固件失败的风险。大降低了更新固件失败的风险。大降低了更新固件失败的风险。

【技术实现步骤摘要】
一种固态硬盘不中断业务的更新固件的方法


[0001]本专利技术涉及一种固态硬盘不中断业务的更新固件的方法,属于固态硬盘


技术介绍

[0002]应用于数据中心的固态硬盘,如果有更新固件的需求时,期望可以不中断业务进行升级,这样可以减少更新固件所占用的时间,提高利用率,也能保持在更新固件的时候,业务不中断,降低更新固件带来的影响。而传统的升级方式,需要中断业务,再进行固件更新,无法满足此类使用场景的需求。

技术实现思路

[0003]本专利技术目的是提供了一种固态硬盘不中断业务的更新固件的方法,实现了不中断业务的升级,降低了更新固件失败的风险。
[0004]本专利技术为实现上述目的,通过以下技术方案实现:S01)接收到不断业务升级固件的命令,检查固件的合法性,检测当前固件使用的槽位,下载固件到下一个空闲的槽位中,槽位采用循环使用的方式,并且使用非易失的介质;S02)下载成功后,更新下次启动运行的槽位号;设置不中断业务升级固件的标识,并存到固定的内存地址中;S03)开启硬件模块保持数据链路的正常链接,并接收命令,接收读写命令请求,将其到固定内存地址中;S04)主处理器设置各处理器的同步交互请求标识,保存主处理器上下文到特定的内存地址中;S05)其他处理器检查到同步交互请求标识后,保存处理读写命令的上下文,按照固定格式存储到固定的内存中,并设置同步请求应答标识,同时执行处理器休眠指令,进入休眠状态;S06)主处理器检测到其他处理器均返回了同步应答请求后,重新加载第一段引导程序,第一段引导程序根据启动运行的槽位号,加载完新的固件后,唤醒各个处于休眠状态的处理器,并引导各处理器运行新的固件;S07)新的固件启动后,检测不中断业务升级标识,检测到不中断业务升级的标识后,从特定的内存中恢复之前步骤S04和步骤S05保存的上下文;S08)清除设置的不中断业务升级固件的标识,关闭硬件接收命令模块,并处理该硬件模块放置在固定内存中已接收到读写命令;不中断业务更新固件完成。
[0005]优选的,所述步骤S03中硬件模块的实现方法如下:硬件模块接收到链路处理模块解析后的数据,根据数据内容,识别是否为主机命令,如果是主机命令,则拉高向硬件队列压入命令的使能信号,硬件模块检测到压入命令的
使能信号,检查硬件队列的头尾指针,如果硬件队列中存在位置,则执行压入命令动作,否则维持该压入信号使能,保证等待硬件队列空闲后,压入新命令。
[0006]优选的,所述硬件队列的深度由硬件实现的参数定义,当尾指针增加超过队列深度时,则自动回0,当队列没有满时,硬件继续向队列中压入主机命令。
[0007]优选的,硬件队列为空的条件是头指针等于尾指针,硬件队列为满的条件为头指针等于尾指针加1,队列中主机命令数满时小于该队列大小。
[0008]优选的,命令队列的储存位置,通过硬件参数配置,修改配置寄存器设置硬件队列的基地址,包括硬件内部的缓存区和外部的内存区。
[0009]本专利技术的优点在于:一种硬件模块去接收主机发送给固态硬盘的读写命令,并把获取的命令放到内存中,保证在更新固件时可以正常接收读写命令,从而实现了不中断业务的升级。并且在升级时,采用多个固件槽位进行循环使用操作,保证即使升级失败也可以保留原始的固件,有效防止升级失败,导致原固件也丢失的问题发生。此外,下载新固件完成后,再去更新下次启动运行使用的槽位号,进一步保证固件升级的完整性。其次,本专利技术在固件更新之前,采用让处理器休眠的方式,极大降低了更新固件失败的风险。
附图说明
[0010]附图用来提供对本专利技术的进一步理解,并且构成说明书的一部分,与本专利技术的实施例一起用于解释本专利技术,并不构成对本专利技术的限制。
[0011]图1为本专利技术流程结构示意图。
[0012]图2为硬件模块工作的状态机示意图。
[0013]图3为硬件队列结构示意图。
[0014]图4为硬件模块实现框示意图。
[0015]图5为激活槽位号的结果示意图。
具体实施方式
[0016]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0017]本专利技术在更新固件时,设计了一种硬件模块去接收主机发送给固态硬盘的读写命令,并把获取的命令放到内存中,保证在更新固件时可以正常接收读写命令,从而实现了不中断业务的升级。并且在升级时,采用多个固件槽位进行循环使用操作,保证即使升级失败也可以保留原始的固件,有效防止升级失败,导致原固件也丢失的问题发生。此外,下载新固件完成后,再去更新下次启动运行使用的槽位号,进一步保证固件升级的完整性。其次,本专利技术在固件更新之前,采用让处理器休眠的方式,极大降低了更新固件失败的风险。
[0018]启动步骤如下:S01)接收到不断业务升级固件的命令;检查固件的合法性,检测当前固件使用的槽位,下载固件到下一个空闲的槽位中,槽位采用循环使用的方式,并且使用非易失的介质。
[0019]采用多个固件槽位循环使用,保证即使升级失败也可以保留原始的固件,有效防止升级失败,导致原固件也丢失的问题发生。同时也能保证非易失介质的磨损均衡,延长了非易失介质的使用寿命。固件槽位和激活的固件槽位号分开存储,只有下载完固件槽位后,才修改激活的固件槽位号。激活的槽位号和固件槽位均使用完整性校验算法保证数据的完整性。每个固件槽位采用双备份,保证双备份完全写入以后才会去执行更新激活槽位号,激活槽位号也采用双备份的方式进行储存,保证在更新槽位时出现异常时,也可以正常启动原始固件。同时即使非易失介质一部分出现损坏,或者某一个槽位损坏,这种分开存储的方式也可以保证通过槽位号的控制跳过该损坏区域。从而进一步延长了芯片的使用年限。
[0020]S02)下载成功后,更新下次启动运行的槽位号;设置不中断业务升级固件的标识,并存到固定的内存地址中。
[0021]S03)开启硬件模块保持数据链路的正常链接,并接收命令,接收读写命令请求,并放到固定内存地址中。
[0022]使用硬件模块保持数据链路的链接,并接收在固件升级过程中主机发送的读写命令,存储在内存中,并通过头尾指针标记命令缓存状态,从而实现业务不中断的功能。
[0023]S04)主处理器设置各处理器的同步交互请求标识,并自己的上下文到特定的内存地址中。
[0024]S05)其他处理器检查到同步交互请求标识后,保存处理读写命令的上下文,按照固定格式存储到固定的内存中。并设置同步请求应答标识,同时执行处理器休眠指令,进入休眠状态,防止在固件更新时,正在进行访存操作,而出现问题。
[0025]S06)主处理器检测到其他处理器均返回了同步应答请求后,重新加载FBL(第一段引导程序);FBL(第一段引导程序)根据启动运行的槽位号,加载完新的固件后,唤醒各个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种固态硬盘不中断业务的更新固件的方法,其特征在于,具体步骤如下:S01)硬件模块接收到不断业务升级固件的命令,检查固件的合法性,检测当前固件使用的槽位,下载固件到下一个空闲的槽位中,槽位采用循环使用的方式,并且使用非易失的介质;S02)下载成功后,更新下次启动运行的槽位号;设置不中断业务升级固件的标识,并存到固定的内存地址中;S03)开启硬件模块保持数据链路的正常链接,并接收读写命令请求,将其写入固定内存地址中;S04)主处理器设置各处理器的同步交互请求标识,保存主处理器上下文到特定的内存地址中;S05)其他处理器检查到同步交互请求标识后,保存处理读写命令的上下文,按照固定格式存储到固定的内存中,并设置同步请求应答标识,同时执行处理器休眠指令,进入休眠状态;S06)主处理器检测到其他处理器均返回了同步应答请求后,加载第一段引导程序,第一段引导程序根据启动运行的槽位号,加载完新的固件,唤醒各个处于休眠状态的处理器,并引导各处理器运行新的固件;S07)新的固件启动后,检测不中断业务升级标识,检测到不中断业务升级的标识后,从特定的内存中恢复之前步骤S04和步骤S05保存的上下文;S08)清除设置的不中断业务升级固件的标识,关闭硬件接收命令...

【专利技术属性】
技术研发人员:乔子龙王璞吴斌段好强
申请(专利权)人:山东华芯半导体有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1