CN109766113B - 一种固态硬盘控制器的固件更新方法及装置 - Google Patents
一种固态硬盘控制器的固件更新方法及装置 Download PDFInfo
- Publication number
- CN109766113B CN109766113B CN201910020040.5A CN201910020040A CN109766113B CN 109766113 B CN109766113 B CN 109766113B CN 201910020040 A CN201910020040 A CN 201910020040A CN 109766113 B CN109766113 B CN 109766113B
- Authority
- CN
- China
- Prior art keywords
- firmware
- solid state
- disk controller
- hard disk
- state hard
- 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.)
- Active
Links
Images
Landscapes
- Stored Programmes (AREA)
Abstract
本发明公开了一种固态硬盘控制器的固件更新方法及装置,其中方法包括以下步骤:运行固态硬盘控制器工作代码;判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧;若否,则固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行,若是,则固态硬盘控制器下载固件烧写程序到RAM中。本发明无需操作控制器GPIO来切换控制器的运行模式,使用握手帧的方式取而代之,可减少更新固件时间,提高更新固件的效率。
Description
技术领域
本发明涉及固态硬盘,更具体地说是一种固态硬盘控制器的固件更新方法及装置。
背景技术
目前控制器更新固件的方法如图1所示。控制器如果需要更新固件,首先通过改变控制器外部GPIO引脚输入电压值的方式,将Bootrom(控制器工作代码)配置成强制下载模式,然后芯片上电,芯片内部Bootrom运行,Bootrom会通过控制器指定的接口下载Mploader(固件烧写程序)到芯片内部的RAM空间,Bootrom再将运行指针跳转到RAM指定的位置,执行MPloader。Mploader会重新初始化系统硬件,从控制器指定的接口下载固件到芯片内部的RAM空间,再将固件写到NorFlash中。
在产品调试阶段,软件人员可以修改控制器GPIO的接线方式,将Bootrom配置成不同的运行模式。Bootrom配置成加载模式,控制器则正常运行代码,将Bootrom配置成下载模式,控制器则下载Mploader更新固件。该方法简单有效,然而一旦控制器产品处于量产阶段,固态硬盘硬件电路板通常不会引出相关的GPIO引脚,如果更新固件还得通过操作GPIO的方式,更新固件的会消耗大量时间,效率低下。
发明内容
本发明的目的在于克服现有技术的不足,提供一种固态硬盘控制器的固件更新方法及装置。
为实现上述目的,本发明采用以下技术方案:一种固态硬盘控制器的固件更新方法,所述方法包括以下步骤:
运行固态硬盘控制器工作代码;
判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧;
若否,则进入所述固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行的步骤;
固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行;
固件加载程序加载存储器中的固件代码。
其进一步技术方案为:所述判断控制器在预设的等待时间内是否接收到上位机的握手帧的步骤之后,还包括以下步骤:
若是,则进入所述固态硬盘控制器下载固件烧写程序到RAM中的步骤;
固态硬盘控制器下载固件烧写程序到RAM中;
固件烧写程序将固件代码下载到存储器中。
其进一步技术方案为:所述固件烧写程序将固件代码下载到存储器中的步骤,具体包括以下步骤:
判断固件烧写程序是否下载完成;
若是,则调整运行指针至固件烧写程序执行位。
其进一步技术方案为:所述固态硬盘控制器下载固件烧写程序到RAM中的步骤之前,还包括以下步骤:
判断接收的握手帧是否正确;
若是,则进入所述固态硬盘控制器下载固件烧写程序到RAM中的步骤;
若否,则提示代码错误并返回所述判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧的步骤。
其进一步技术方案为:所述存储器为固态硬盘中的Norflash。
一种固态硬盘控制器的固件更新装置,所述装置包括第一运行单元、第一判断单元、第二运行单元以及加载单元;
所述第一运行单元,用于运行固态硬盘控制器工作代码;
所述第一判断单元,用于判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧;
所述第二运行单元,用于固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行;
所述加载单元,用于固件加载程序加载存储器中的固件代码。
其进一步技术方案为:所述装置还包括烧写单元和下载单元;
所述烧写单元,用于固态硬盘控制器下载固件烧写程序到RAM中;
所述下载单元,用于固件烧写程序将固件代码下载到存储器中。
其进一步技术方案为:所述下载单元包括判断模块;所述判断模块用于判断固件烧写程序是否下载完成。
其进一步技术方案为:所述装置还包括第二判断单元和提示单元;
所述第二判断单元,用于判断接收的握手帧是否正确;
所述提示单元,用于提示代码错误。
本发明与现有技术相比的有益效果是:本发明一种固态硬盘控制器的固件更新方法通过判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧,若否,则固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行,若是,则固态硬盘控制器下载固件烧写程序到RAM中。无需操作控制器GPIO来切换控制器的运行模式,使用握手帧的方式取而代之,可减少更新固件时间,提高更新固件的效率。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明技术手段,可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征及优点能够更明显易懂,以下特举较佳实施例,详细说明如下。
附图说明
图1为现有技术的流程图;
图2为本发明一种固态硬盘控制器的固件更新方法具体实施例中转盘的流程图一;
图3为本发明一种固态硬盘控制器的固件更新方法具体实施例的流程图二;
图4为本发明一种固态硬盘控制器的固件更新装置具体实施例的结构图。
具体实施方式
为了更充分理解本发明的技术内容,下面结合具体实施例对本发明的技术方案进一步介绍和说明,但不局限于此。
应当理解,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体/操作/对象与另一个实体/操作/对象区分开来,而不一定要求或者暗示这些实体/操作/对象之间存在任何这种实际的关系或者顺序。
还应当理解,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
如图2、3所示,本发明提供了一种固态硬盘控制器的固件更新方法,该方法包括以下步骤:
S10、运行固态硬盘控制器工作代码;
S20、判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧;若否,则进入步骤S70;若是,则进入步骤S30;
S70、固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行;
S80、固件加载程序加载存储器中的固件代码;
S30、判断接收的握手帧是否正确;若是,则进入步骤S40,若否,S60、则提示代码错误,并返回步骤S20;
S40、固态硬盘控制器下载固件烧写程序到RAM中;
S50、固件烧写程序将固件代码下载到存储器中
具体的,芯片上电后,固态硬盘控制器内部Bootrom开始运行,设置定时器实现超时机制,如果在预设的等待时间未收到上位机的握手帧,则加载Norflash(位于固态硬盘中的非易失性存储芯片)中的bootloader(固件加载程序)到RAM中运行,bootloader再加载固件运行。如果在预设的等待时间内收到上位机握手帧,则开始更新过程,下载MPloader,跳转到RAM中并执行MPloader,MPloader再通过控制器接口将固件代码从电脑端下载到NorFlash中。
BootRom在等待握手帧过程中,如正确接收握手帧数据则返回正确接收握手帧并且转向开始接收数据流程,假如提示代码错误,并继续等待接收握手帧数据。
另外,本发明中,握手帧:0x00-0x0F十六个字节。0x00-0x07八个字节为上位机握手类型,后8个字节为握手标志。回复帧:0x00-0x0F十六个字节。0x00-0x07八个字节代表回复帧类型,0x08-0x0F八个字节代表错误代码,若错误代码为0x00000000,则代表Bootrom程序正确接收握手帧。
进一步的,步骤S50具体包括以下步骤:
S501、判断固件烧写程序是否下载完成;
若是,S501、则调整运行指针至固件烧写程序执行位;
若否,则重复步骤S501。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。
对应于上述实施例所述的一种固态硬盘控制器的固件更新方法,本发明提供了一种固态硬盘控制器的固件更新装置。如图3所示,该装置包括第一运行单元1、第一判断单元2、第二运行单元3以及加载单元4;
第一运行单元1,用于运行固态硬盘控制器工作代码;
第一判断单元2,用于判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧;
第二运行单元3,用于固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行;
加载单元4,用于固件加载程序加载存储器中的固件代码。
进一步的,该装置还包括烧写单元5和下载单元6;
烧写单元,用于固态硬盘控制器下载固件烧写程序到RAM中;
下载单元,用于固件烧写程序将固件代码下载到存储器中。
进一步的,该装置还包括第二判断单元7和提示单元8;
第二判断单元7,用于判断接收的握手帧是否正确;
提示单元8,用于提示代码错误。
具体的,芯片上电后,固态硬盘控制器内部Bootrom开始运行,设置定时器实现超时机制,如果在预设的等待时间未收到上位机的握手帧,则加载Norflash(位于固态硬盘中的非易失性存储芯片)中的bootloader(固件加载程序)到RAM中运行,bootloader再加载固件运行。如果在预设的等待时间内收到上位机握手帧,则开始更新过程,下载MPloader,跳转到RAM中并执行MPloader,MPloader再通过控制器接口将固件代码从电脑端下载到NorFlash中。
BootRom在等待握手帧过程中,如正确接收握手帧数据则返回正确接收握手帧并且转向开始接收数据流程,假如提示代码错误,并继续等待接收握手帧数据。
另外,本发明中,握手帧:0x00-0x0F十六个字节。0x00-0x07八个字节为上位机握手类型,后8个字节为握手标志。回复帧:0x00-0x0F十六个字节。0x00-0x07八个字节代表回复帧类型,0x08-0x0F八个字节代表错误代码,若错误代码为0x00000000,则代表Bootrom程序正确接收握手帧。
进一步的,下载单元包括判断模块;判断模块用于判断固件烧写程序是否下载完成。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本发明中各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述装置中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个装置,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述仅以实施例来进一步说明本发明的技术内容,以便于读者更容易理解,但不代表本发明的实施方式仅限于此,任何依本发明所做的技术延伸或再创造,均受本发明的保护。本发明的保护范围以权利要求书为准。
Claims (7)
1.一种固态硬盘控制器的固件更新方法,其特征在于,所述方法包括以下步骤:
运行固态硬盘控制器工作代码;
判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧;
若否,则进入所述固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行的步骤;
固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行;
固件加载程序加载存储器中的固件代码;
所述判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧的步骤之后,还包括以下步骤:
若是,则进入所述固态硬盘控制器下载固件烧写程序到RAM中的步骤;
固态硬盘控制器下载固件烧写程序到RAM中;
固件烧写程序将固件代码下载到存储器中。
2.根据权利要求1所述的一种固态硬盘控制器的固件更新方法,其特征在于,所述固件烧写程序将固件代码下载到存储器中的步骤,具体包括以下步骤:
判断固件烧写程序是否下载完成;
若是,则调整运行指针至固件烧写程序执行位。
3.根据权利要求1所述的一种固态硬盘控制器的固件更新方法,其特征在于,所述固态硬盘控制器下载固件烧写程序到RAM中的步骤之前,还包括以下步骤:
判断接收的握手帧是否正确;
若是,则进入所述固态硬盘控制器下载固件烧写程序到RAM中的步骤;
若否,则提示代码错误并返回所述判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧的步骤。
4.根据权利要求1所述的一种固态硬盘控制器的固件更新方法,其特征在于,所述存储器为固态硬盘中的Norflash。
5.一种固态硬盘控制器的固件更新装置,其特征在于,所述装置包括第一运行单元、第一判断单元、第二运行单元以及加载单元;
所述第一运行单元,用于运行固态硬盘控制器工作代码;
所述第一判断单元,用于判断固态硬盘控制器在预设的等待时间内是否接收到上位机的握手帧;
所述第二运行单元,用于固态硬盘控制器工作代码加载存储器中的固件加载程序到RAM中运行;
所述加载单元,用于固件加载程序加载存储器中的固件代码;
所述装置还包括烧写单元和下载单元;
所述烧写单元,用于固态硬盘控制器下载固件烧写程序到RAM中;
所述下载单元,用于固件烧写程序将固件代码下载到存储器中。
6.根据权利要求5所述的一种固态硬盘控制器的固件更新装置,其特征在于,所述下载单元包括判断模块;所述判断模块用于判断固件烧写程序是否下载完成。
7.根据权利要求5所述的一种固态硬盘控制器的固件更新装置,其特征在于,所述装置还包括第二判断单元和提示单元;
所述第二判断单元,用于判断接收的握手帧是否正确;
所述提示单元,用于提示代码错误。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910020040.5A CN109766113B (zh) | 2019-01-09 | 2019-01-09 | 一种固态硬盘控制器的固件更新方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910020040.5A CN109766113B (zh) | 2019-01-09 | 2019-01-09 | 一种固态硬盘控制器的固件更新方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109766113A CN109766113A (zh) | 2019-05-17 |
CN109766113B true CN109766113B (zh) | 2022-02-01 |
Family
ID=66453683
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910020040.5A Active CN109766113B (zh) | 2019-01-09 | 2019-01-09 | 一种固态硬盘控制器的固件更新方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109766113B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111625388B (zh) * | 2020-05-28 | 2023-07-04 | 深圳忆联信息系统有限公司 | Ssd前端错误处理方法、装置、计算机设备和存储介质 |
CN114185620B (zh) * | 2021-12-14 | 2023-10-10 | 深圳忆联信息系统有限公司 | 加速ssd固件加载实现方法、装置、计算机设备及存储介质 |
CN114253619A (zh) * | 2021-12-21 | 2022-03-29 | 苏州忆联信息系统有限公司 | SSD多级Boot的方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046749A (zh) * | 2006-03-31 | 2007-10-03 | 联想(北京)有限公司 | 一种芯片固件升级方法 |
CN101193356A (zh) * | 2006-11-22 | 2008-06-04 | 乐金电子(昆山)电脑有限公司 | 便携式信息终端机的固件升级方法 |
CN101271396A (zh) * | 2008-04-15 | 2008-09-24 | 威盛电子股份有限公司 | 电子装置及其在线更新固件的方法 |
CN106227572A (zh) * | 2016-08-30 | 2016-12-14 | 深圳市蓝海华腾技术股份有限公司 | 一种变频器控制系统程序升级方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6839434B1 (en) * | 1999-07-28 | 2005-01-04 | Lucent Technologies Inc. | Method and apparatus for performing a key update using bidirectional validation |
-
2019
- 2019-01-09 CN CN201910020040.5A patent/CN109766113B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101046749A (zh) * | 2006-03-31 | 2007-10-03 | 联想(北京)有限公司 | 一种芯片固件升级方法 |
CN101193356A (zh) * | 2006-11-22 | 2008-06-04 | 乐金电子(昆山)电脑有限公司 | 便携式信息终端机的固件升级方法 |
CN101271396A (zh) * | 2008-04-15 | 2008-09-24 | 威盛电子股份有限公司 | 电子装置及其在线更新固件的方法 |
CN106227572A (zh) * | 2016-08-30 | 2016-12-14 | 深圳市蓝海华腾技术股份有限公司 | 一种变频器控制系统程序升级方法 |
Also Published As
Publication number | Publication date |
---|---|
CN109766113A (zh) | 2019-05-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109766113B (zh) | 一种固态硬盘控制器的固件更新方法及装置 | |
CN102200916B (zh) | 电子设备、可配置的部件及该部件的配置信息存储方法 | |
CN107704285B (zh) | 现场可编程门阵列多版本配置芯片、系统和方法 | |
CN107465539A (zh) | 固件的升级方法、终端及固件的升级系统 | |
CN102609286A (zh) | 一种基于处理器控制的fpga配置程序远程更新系统及其方法 | |
CN114003538B (zh) | 一种智能网卡的识别方法及智能网卡 | |
CN111831309A (zh) | 物联网Wifi带载多MCU的升级方法、装置、设备及介质 | |
US7984239B2 (en) | Control program download device | |
CN102346677A (zh) | Fpga程序的升级方法 | |
US8086834B2 (en) | System and method for populating a dedicated system service repository for an information handling system | |
CN113064647A (zh) | 一种bios中配置项目端口的方法、装置、终端及存储介质 | |
US12086608B2 (en) | Method and computing system for returning to a bios setup utility while in a shell environment during a booting process | |
CN116450224A (zh) | 基于清除cmos的数据的恢复方法及装置、系统 | |
CN109117406B (zh) | 一种pcie热拔插测试方法、装置、终端及存储介质 | |
US7111160B1 (en) | Method and apparatus for using a development port for boot up | |
CN113821265B (zh) | 操作系统控制方法、装置、计算机主板和可读存储介质 | |
CN111723038B (zh) | 一种讯号补偿方法、装置及电子设备和存储介质 | |
CN111694300B (zh) | 一种控制板输入输出口自动配置方法及装置 | |
CN113377418A (zh) | 一种文件加载方法、存储介质及设备 | |
CN110442387B (zh) | 一种车载系统的参数自适应方法、装置及汽车 | |
CN114510259A (zh) | 一种基于bmc导入导出bios配置的方法及装置 | |
CN111736858B (zh) | 一种终端设备的升级方法、存储介质及终端设备 | |
JP7281275B2 (ja) | モジュール及びこれを備える情報処理装置、並びにモジュールのプログラムデータを更新するプログラムデータ更新方法 | |
CN111158723A (zh) | 烹饪电器内置数据升级方法、烹饪电器、电子设备及介质 | |
CN110515665A (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 |