一种固态硬盘不中断业务的更新固件的方法与流程

文档序号:32487734发布日期:2022-12-10 01:41阅读:55来源:国知局
一种固态硬盘不中断业务的更新固件的方法与流程

1.本发明涉及一种固态硬盘不中断业务的更新固件的方法,属于固态硬盘技术领域。


背景技术:

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


技术实现要素:

3.本发明目的是提供了一种固态硬盘不中断业务的更新固件的方法,实现了不中断业务的升级,降低了更新固件失败的风险。
4.本发明为实现上述目的,通过以下技术方案实现:s01)接收到不断业务升级固件的命令,检查固件的合法性,检测当前固件使用的槽位,下载固件到下一个空闲的槽位中,槽位采用循环使用的方式,并且使用非易失的介质;s02)下载成功后,更新下次启动运行的槽位号;设置不中断业务升级固件的标识,并存到固定的内存地址中;s03)开启硬件模块保持数据链路的正常链接,并接收命令,接收读写命令请求,将其到固定内存地址中;s04)主处理器设置各处理器的同步交互请求标识,保存主处理器上下文到特定的内存地址中;s05)其他处理器检查到同步交互请求标识后,保存处理读写命令的上下文,按照固定格式存储到固定的内存中,并设置同步请求应答标识,同时执行处理器休眠指令,进入休眠状态;s06)主处理器检测到其他处理器均返回了同步应答请求后,重新加载第一段引导程序,第一段引导程序根据启动运行的槽位号,加载完新的固件后,唤醒各个处于休眠状态的处理器,并引导各处理器运行新的固件;s07)新的固件启动后,检测不中断业务升级标识,检测到不中断业务升级的标识后,从特定的内存中恢复之前步骤s04和步骤s05保存的上下文;s08)清除设置的不中断业务升级固件的标识,关闭硬件接收命令模块,并处理该硬件模块放置在固定内存中已接收到读写命令;不中断业务更新固件完成。
5.优选的,所述步骤s03中硬件模块的实现方法如下:硬件模块接收到链路处理模块解析后的数据,根据数据内容,识别是否为主机命令,如果是主机命令,则拉高向硬件队列压入命令的使能信号,硬件模块检测到压入命令的
使能信号,检查硬件队列的头尾指针,如果硬件队列中存在位置,则执行压入命令动作,否则维持该压入信号使能,保证等待硬件队列空闲后,压入新命令。
6.优选的,所述硬件队列的深度由硬件实现的参数定义,当尾指针增加超过队列深度时,则自动回0,当队列没有满时,硬件继续向队列中压入主机命令。
7.优选的,硬件队列为空的条件是头指针等于尾指针,硬件队列为满的条件为头指针等于尾指针加1,队列中主机命令数满时小于该队列大小。
8.优选的,命令队列的储存位置,通过硬件参数配置,修改配置寄存器设置硬件队列的基地址,包括硬件内部的缓存区和外部的内存区。
9.本发明的优点在于:一种硬件模块去接收主机发送给固态硬盘的读写命令,并把获取的命令放到内存中,保证在更新固件时可以正常接收读写命令,从而实现了不中断业务的升级。并且在升级时,采用多个固件槽位进行循环使用操作,保证即使升级失败也可以保留原始的固件,有效防止升级失败,导致原固件也丢失的问题发生。此外,下载新固件完成后,再去更新下次启动运行使用的槽位号,进一步保证固件升级的完整性。其次,本发明在固件更新之前,采用让处理器休眠的方式,极大降低了更新固件失败的风险。
附图说明
10.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
11.图1为本发明流程结构示意图。
12.图2为硬件模块工作的状态机示意图。
13.图3为硬件队列结构示意图。
14.图4为硬件模块实现框示意图。
15.图5为激活槽位号的结果示意图。
具体实施方式
16.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
17.本发明在更新固件时,设计了一种硬件模块去接收主机发送给固态硬盘的读写命令,并把获取的命令放到内存中,保证在更新固件时可以正常接收读写命令,从而实现了不中断业务的升级。并且在升级时,采用多个固件槽位进行循环使用操作,保证即使升级失败也可以保留原始的固件,有效防止升级失败,导致原固件也丢失的问题发生。此外,下载新固件完成后,再去更新下次启动运行使用的槽位号,进一步保证固件升级的完整性。其次,本发明在固件更新之前,采用让处理器休眠的方式,极大降低了更新固件失败的风险。
18.启动步骤如下:s01)接收到不断业务升级固件的命令;检查固件的合法性,检测当前固件使用的槽位,下载固件到下一个空闲的槽位中,槽位采用循环使用的方式,并且使用非易失的介质。
19.采用多个固件槽位循环使用,保证即使升级失败也可以保留原始的固件,有效防止升级失败,导致原固件也丢失的问题发生。同时也能保证非易失介质的磨损均衡,延长了非易失介质的使用寿命。固件槽位和激活的固件槽位号分开存储,只有下载完固件槽位后,才修改激活的固件槽位号。激活的槽位号和固件槽位均使用完整性校验算法保证数据的完整性。每个固件槽位采用双备份,保证双备份完全写入以后才会去执行更新激活槽位号,激活槽位号也采用双备份的方式进行储存,保证在更新槽位时出现异常时,也可以正常启动原始固件。同时即使非易失介质一部分出现损坏,或者某一个槽位损坏,这种分开存储的方式也可以保证通过槽位号的控制跳过该损坏区域。从而进一步延长了芯片的使用年限。
20.s02)下载成功后,更新下次启动运行的槽位号;设置不中断业务升级固件的标识,并存到固定的内存地址中。
21.s03)开启硬件模块保持数据链路的正常链接,并接收命令,接收读写命令请求,并放到固定内存地址中。
22.使用硬件模块保持数据链路的链接,并接收在固件升级过程中主机发送的读写命令,存储在内存中,并通过头尾指针标记命令缓存状态,从而实现业务不中断的功能。
23.s04)主处理器设置各处理器的同步交互请求标识,并自己的上下文到特定的内存地址中。
24.s05)其他处理器检查到同步交互请求标识后,保存处理读写命令的上下文,按照固定格式存储到固定的内存中。并设置同步请求应答标识,同时执行处理器休眠指令,进入休眠状态,防止在固件更新时,正在进行访存操作,而出现问题。
25.s06)主处理器检测到其他处理器均返回了同步应答请求后,重新加载fbl(第一段引导程序);fbl(第一段引导程序)根据启动运行的槽位号,加载完新的固件后,唤醒各个处于休眠状态的处理器,并引导各处理器运行新的固件。
26.相比于传统的同步方式,仅使用一个信号量进行同步的方式,额外增加了应答机制,保证多个处理器的同步请求均被应答后,才算同步完成,进一步保证了在更新固件的同步性。并且在执行完处理器任务后,让处理器处于休眠状态,保证了处理器未处于访存操作,减少了部分功耗,极大降低了更新固件失败的风险。
27.s07)新的固件启动后,检测设置的不中断业务升级标识,检测到不中断业务升级的标识后,从特定的内存中恢复之前步骤s04和步骤s05保存的上下文。
28.s08)恢复完上下文后,清除步骤s05设置不中断业务升级固件的标识,关闭步骤s06硬件接收命令模块,并处理该硬件模块放置在固定内存中已接收到读写命令;不中断业务更新固件完成。
29.具体的,步骤s03中硬件模块的实现原理:硬件模块接收到链路处理模块解析后的数据,根据数据内容,识别是否为主机命令,如果是主机命令,则拉高向硬件队列压入命令的使能信号,硬件模块检测到压入命令的使能信号,检查硬件队列的头尾指针。如果硬件队列中存在位置,则执行压入命令动作。否则维持该压入信号使能,保证等待硬件队列空闲后,才压入新命令。
30.硬件队列的工作方式,由软件和硬件共同维护。硬件作为该队列的生产者,软件作为该队列的消费者。硬件使用尾入口指针向该队列中提交主机命令,软件通过头入口指针从该队列中获得主机命令。
31.硬件队列的深度由硬件实现的参数定义,可以放若干条主机命令。如果尾指针增加超过了队列深度时,则自动回0。如果队列没有满,硬件则继续向队列中压入主机命令。
32.硬件队列为空的条件是头指针等于尾指针,硬件队列为空的条件为头指针等于尾指针加1,队列中主机命令数(满时)小于该队列大小。
33.命令队列的储存位置,可以通过硬件参数灵活配置,可以通过修改配置寄存器设置硬件队列的基地址,可以选择放到硬件内部的缓存区,也可以选择放入外部的内存区,使用更加灵活,加大了正常处理命令的能力,同时也能保证在执行固件升级过程中,使用该硬件队列缓存主机命令。
34.最后应说明的是:以上所述仅为本发明的优选实施例而已,并不用于限制本发明,尽管参照前述实施例对本发明进行了详细的说明,对于本领域的技术人员来说,其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1