CN107479938A - 电子设备及其启动方法 - Google Patents

电子设备及其启动方法 Download PDF

Info

Publication number
CN107479938A
CN107479938A CN201710885558.6A CN201710885558A CN107479938A CN 107479938 A CN107479938 A CN 107479938A CN 201710885558 A CN201710885558 A CN 201710885558A CN 107479938 A CN107479938 A CN 107479938A
Authority
CN
China
Prior art keywords
flash memory
nand flash
boot loader
electronic equipment
firmware
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.)
Granted
Application number
CN201710885558.6A
Other languages
English (en)
Other versions
CN107479938B (zh
Inventor
王祎磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
BEIJING CORE TECHNOLOGY Co Ltd
Original Assignee
BEIJING CORE TECHNOLOGY Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by BEIJING CORE TECHNOLOGY Co Ltd filed Critical BEIJING CORE TECHNOLOGY Co Ltd
Priority to CN201710885558.6A priority Critical patent/CN107479938B/zh
Publication of CN107479938A publication Critical patent/CN107479938A/zh
Application granted granted Critical
Publication of CN107479938B publication Critical patent/CN107479938B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Abstract

公开了电子设备及其启动方法。所公开的电子设备的启动方法,包括:向所述NAND闪存发出第一命令,使所述NAND闪存进入NV‑DDR2模式或者Toggle DDR模式;根据NV‑DDR2模式的要求,使用读命令从所述NAND闪存的指定地址读取指定长度的数据;从所读取的指定长度的数据中获取引导加载器;运行所述引导加载器配置所述电子设备,并加载所述电子设备的固件。

Description

电子设备及其启动方法
技术领域
本申请涉及电子设备,具体地,在电子设备启动时从电子设备的NAND闪存中加载固件。
背景技术
图1是现有技术的固态存储设备的框图。固态存储设备102同主机相耦合,用于为主机提供存储能力。主机同固态存储设备102之间可通过多种方式相耦合,耦合方式包括但不限于通过例如SATA(Serial Advanced Technology Attachment,串行高级技术附件)、SCSI(Small Computer System Interface,小型计算机系统接口)、SAS(SerialAttachedSCSI,串行连接SCSI)、IDE(Integrated Drive Electronics,集成驱动器电子)、USB(Universal Serial Bus,通用串行总线)、PCIE(Peripheral Component InterconnectExpress,PCIe,高速外围组件互联)、NVMe(NVM Express,高速非易失存储)、以太网、光纤通道、无线通信网络等连接主机与固态存储设备102。主机可以是能够通过上述方式同固态存储设备相通信的信息处理设备,例如,个人计算机、平板电脑、服务器、便携式计算机、网络交换机、路由器、蜂窝电话、个人数字助理等。存储设备102包括接口103、控制部件104、一个或多个NVM芯片105、DRAM(Dynamic Random Access Memory,动态随机访问存储器)110以及存储器112。
NAND闪存、相变存储器、FeRAM(Ferroelectric RAM,铁电存储器)、MRAM(MagneticRandom Access Memory,磁阻存储器)、RRAM(Resistive RandomAccess Memory,阻变存储器)等是常见的NVM。
接口103可适配于通过例如SATA、IDE、USB、PCIE、NVMe、SAS、以太网、光纤通道等方式与主机交换数据。
控制部件104用于控制在接口103、NVM芯片105以及固件存储器110之间的数据传输,还用于存储管理、主机逻辑地址到闪存物理地址映射、擦除均衡、坏块管理等。控制部件104可通过软件、硬件、固件或其组合的多种方式实现,例如,控制部件104可以是FPGA(Field-programmable gate array,现场可编程门阵列)、ASIC(Application SpecificIntegrated Circuit,应用专用集成电路)或者其组合的形式;控制部件104也可以包括处理器或者控制器,在处理器或控制器中执行软件来操纵控制部件104的硬件来处理IO(Input/Output)命令;控制部件104还可以耦合到DRAM 110,并可访问DRAM 110的数据;在DRAM可存储FTL表和/或缓存的IO命令的数据。
在控制部件104中运行的软件和/或固件(下面统称为“固件”)被存储在存储器112和/或NVM芯片105。存储器112存储引导加载器(BootLoader)与设备配置信息。存储器112具有简单接口,例如SPI接口,使得未经充分配置的控制部件104可以访问存储器112。在固态存储设备102上电时,访问存储器112以获取引导加载器与配置信息,在使用引导加载器从将固件加载到DRAM 110和/或控制部件104内部的存储器中。可选地,通过接口103或调试接口接收并加载固件。
控制部件104包括闪存接口控制器(或称为介质接口控制器、闪存通道控制器),闪存接口控制器耦合到NVM芯片105,并以遵循NVM芯片105的接口协议的方式向NVM芯片105发出命令,以操作NVM芯片105,并接收从NVM芯片105输出的命令执行结果。NVM芯片105的接口协议包括“Toggle”、“ONFI”等现有技术的接口协议或标准。
存储器目标(Target)是NAND闪存封装内的共享芯片使能(CE,Chip Enable)信号的一个或多个逻辑单元(Logic Unit)。每个逻辑单元具有逻辑单元号(LUN,LogicUnitNumber)。NAND闪存封装内可包括一个或多个管芯(Die)。典型地,逻辑单元对应于单一的管芯。逻辑单元可包括多个平面(Plane)。逻辑单元内的多个平面可以并行存取,而NAND闪存芯片内的多个逻辑单元可以彼此独立地执行命令和报告状态。在可从http://www.micron.com/~/media/Documents/Products/Other%20Documents/ONFI3_0Gold.ashx获得的“Open NAND Flash Interface Specification(Revision 3.0)”中,提供了关于目标(target)、逻辑单元、LUN、平面(Plane)的含义,其为现有技术的一部分。
存储介质上通常按页来存储和读取数据。而按块来擦除数据。块(也称物理块)包含多个页。块包含多个页。存储介质上的页(称为物理页)具有固定的尺寸,例如17664字节。物理页也可以具有其他的尺寸。
图2是现有技术的固态存储设备的引导系统的框图。如图2所示,固态存储设备的控制部件104分别耦合到存储器112与NVM芯片105。作为举例,存储器112是SPI接口的NOR闪存,NVM芯片105是NAND闪存。可选地,存储器112是电可擦除只读存储器(EEPROM)、只读存储器(ROM)或一次可编程只读存储器(OTP ROM)。控制部件104可包括一个或多个CPU,用于运行固态存储设备中的程序以及控制在各个部件之间的数据传输。
存储器112中存储了引导加载器与设备配置信息。引导加载器是一段程序,当被控制部件104中的CPU执行时,被用于从NVM芯片105读取固件,将固件加载到例如DRAM 110(参看图1)或者控制部件104内部的存储器。引导加载器还根据从存储器112获取的设备配置信息配置控制部件104的多个部件,例如DRAM控制器与介质接口控制器,获知固态存储设备的DRAM110与NVM芯片105的容量大小、接口速率与组织方式,使DRAM控制器与介质接口控制器得以高效工作。
固态存储设备启动时,控制部件104从存储器112的指定地址获取加载引导器与设备配置信息,并运行加载引导器。加载引导器根据设备配置信息配置DRAM控制器与介质接口控制器,还获知固件在NVM芯片105中的存储地址。接下来,从NVM芯片105获取固件。响应于固件加载完成,将控制部件104的控制权交给固件,以提供固态存储设备的功能。
发明内容
现有技术中,电子设备需要使用专用的存储器存储引导加载器和/或固件,增加了电子设备的成本。专用的存储器占据了电子设备的空间,不利于电子设备的小型化与降低成本。
希望将引导加载器和/或固件都存储在诸如NAND闪存的NVM芯片中,而不再使用额外的存储器。
根据本申请的第一方面,提供了根据本申请的第一方面的第一从NAND闪存引导电子设备的方法,包括:向所述NAND闪存发出第一命令,使所述NAND闪存进入NV-DDR2模式或者Toggle DDR模式;根据NV-DDR2模式的要求,使用读命令从所述NAND闪存的指定地址读取指定长度的数据;从所读取的指定长度的数据中获取引导加载器;运行所述引导加载器配置所述电子设备,并加载所述电子设备的固件。
根据本申请的第一方面的第一从NAND闪存引导电子设备的方法,提供了根据本申请的第一方面的第二从NAND闪存引导电子设备的方法,还包括:向所述NAND闪存发出第一命令前,识别所述NAND闪存的类型;响应于所述NAND闪存是根据ONFI标准的闪存,所述第一命令使所述NAND闪存进入NV-DDR2模式。
根据本申请的第一方面的第二从NAND闪存引导电子设备的方法,提供了根据本申请的第一方面的第三从NAND闪存引导电子设备的方法,其中响应于所述NAND闪存是根据Toggle标准的闪存,所述第一命令使所述NAND闪存进入Toggle-DDR2模式。
根据本申请的第一方面的第二从NAND闪存引导电子设备的方法,提供了根据本申请的第一方面的第四从NAND闪存引导电子设备的方法,其中响应于所述NAND闪存是根据Toggle标准的闪存,所述第一命令不是述NAND闪存的有效命令。
根据本申请的第一方面的第二或第四从NAND闪存引导电子设备的方法,提供了根据本申请的第一方面的第五从NAND闪存引导电子设备的方法,其中响应于所述NAND闪存是根据Toggle标准的闪存,不向所述NAND闪存发出第一命令。
根据本申请的第一方面的第一至第五从NAND闪存引导电子设备的方法之一,提供了根据本申请的第一方面的第六从NAND闪存引导电子设备的方法,其中所述指定长度小于所述NAND闪存的物理页大小。
根据本申请的第一方面的第一至第六从NAND闪存引导电子设备的方法之一,提供了根据本申请的第一方面的第七从NAND闪存引导电子设备的方法,还包括:对所读取的指定长度的数据进行错误校正译码,以得到构成引导加载器的部分的数据。
根据本申请的第一方面的第七从NAND闪存引导电子设备的方法,提供了根据本申请的第一方面的第八从NAND闪存引导电子设备的方法,其中所述指定长度的数据的码率为0.5-0.8。
根据本申请的第一方面的第一至第八从NAND闪存引导电子设备的方法之一,提供了根据本申请的第一方面的第九从NAND闪存引导电子设备的方法,其中所述引导加载器在所述电子设备被制造时被写入所述NAND闪存的所述指定地址。
根据本申请的第一方面的第九从NAND闪存引导电子设备的方法,提供了根据本申请的第一方面的第十从NAND闪存引导电子设备的方法,10,根据权利要求9所述的方法,其中所述电子设备上电后,访问所述NAND闪存前,不访问其他任何存储芯片。
根据本申请的第一方面的第一至第十从NAND闪存引导电子设备的方法之一,提供了根据本申请的第一方面的第十一从NAND闪存引导电子设备的方法,其中所述电子设备不包括除NAND闪存之外的其他类型存储芯片。
根据本申请的第一方面的第一至第十一从NAND闪存引导电子设备的方法之一,提供了根据本申请的第一方面的第十二从NAND闪存引导电子设备的方法,其中所述固件根据所述引导加载器被存储在所述NAND闪存中的时间和/或所述引导加载器被读取的次数,擦除所述引导加载器,并将所述引导加载器重写入所述NAND闪存的所述指定地址。
根据本申请的第一方面的第一至第十二从NAND闪存引导电子设备的方法之一,提供了根据本申请的第一方面的第十三从NAND闪存引导电子设备的方法,其中所述引导加载器配置所述电子设备的存储控制器,使得通过存储控制器访问存储器;以及所述固件被加载到所述存储器。
根据本申请的第一方面的第一至第十三从NAND闪存引导电子设备的方法之一,提供了根据本申请的第一方面的第十四从NAND闪存引导电子设备的方法,还包括:响应于所述固件加载失败,从JTAG、UART或PCIe端口获取固件。
根据本申请的第二方面,提供了一种电子设备,包括控制部件与NAND闪存;所述控制部件耦合搭配所述NAND闪存,所述NAND闪存中存储引导加载器与固件;响应于上电,所述控制部件执行根据本申请第一方面的从NAND闪存引导电子设备的方法之一。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图。
图1是现有技术的固态存储设备的框图;
图2是现有技术的固态存储设备的引导系统的框图;
图3A为本申请实施例的固态存储设备的示意图;
图3B展示了根据本申请实施例的NAND闪存中的数据组织;
图4A展示了ONFI标准的NAND闪存的上电流程;
图4B展示了Toggle标准的一种NAND闪存的上电流程;
图4C展示了Toggle标准的另一种NAND闪存的上电流程;
图5展示了根据本申请实施例的引导加载器在NAND闪存中的存储地址;以及
图6展示了根据本申请实施例的固态存储设备上电的流程图。
具体实施方式
下面结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请请求保护的范围。
图3A为本申请实施例的固态存储设备的示意图。固态存储设备包括控制部件310与多片NAND闪存芯片(320、322、324与326)。控制部件310通过例如两个闪存通道(CH 0与CH1)耦合到NAND闪存芯片,每个闪存通道耦合2颗NAND闪存芯片。根据本申请的实施例,固态存储设备不布置NOR闪存或EEPROM等存储器,而是将引导加载器以及可选地设备配置信息也存储在NAND闪存中。从而,固态存储设备中省去一颗存储器芯片。
在制造固态存储设备时,将引导加载器、设备配置信息与固件都存储在指定NAND闪存芯片的指定地址。
图3B展示了根据本申请实施例的NAND闪存中的数据组织。作为举例,图3B展示的是通道CH 0的NAND闪存320的LUN(逻辑单元)0的物理块0。从该物理块0的物理页0开始,存储引导加载器、设备配置信息,以及可选地,还存储固件。依然可选地,在设备配置信息中,记录固件的存储位置。
在一些例子中,引导加载器与设备配置信息尺寸较大,无法被容纳在物理页0中,还顺序使用物理页1,以及如果需要还使用后续物理页来存储引导加载器与设备配置信息。
控制部件上电时,从NAND闪存的指定存储地址(例如,通道CH 0的NAND闪存320的LUN 0的物理块0的物理页0)读出引导加载器,并运行引导加载器来利用设备配置信息来完成DRAM控制器与介质接口控制器等的初始化,并获知固件的存储位置,以及加载固件。通过运行固件来提供固态存储设备的功能。可选地,不使用固件,而将固件提供的功能集成在引导加载器中。
由于控制部件上电时,尚未加载可执行的代码,需要以极简单的控制方式实现从NAND闪存中读取数据。可选地,在控制部件中集成存储少量代码的小容量ROM,控制部件的CPU执行ROM中的代码,从NAND闪存中读取数据。依然可选地,在控制部件中设置状态机电路,通过状态机控制操作序列,指示介质接口控制器产生访问NAND闪存的命令,以将NAND闪存中存储器的引导加载器加载到控制部件的CPU中。
以及还要应对多种NAND闪存各自的接口命令格式与数据组织方式。
图4A展示了ONFI标准的NAND闪存的上电流程。ONFI标准的NAND闪存,上电初始化完成后,进入SDR(Single Data Rate)模式(410)。作为一个例子,NAND闪存响应于上电,而自己完成上电初始化过程。可选地,NAND闪存上电后,响应于控制部件104对NAND闪存的每个LUN发出的复位命令,而完成上电初始化过程。
SDR模式速率较慢。控制部件向NAND闪存的每个LUN发出“Set-Feature”命令,使NAND闪存进入NV-DDR2模式(412)。以及根据NV-DDR2模式的要求,使用读命令(Read)从NAND闪存读取数据。在根据本申请的实施例中,约定在指定存储地址(例如,通道CH 0的NAND闪存320的LUN 0的物理块0的物理页0)存储加载引导器的初始部分。使用Read命令获取加载引导器的初始部分以及后续部分。
图4B展示了Toggle标准的一种NAND闪存的上电流程。根据图4B所展示的例子,一种Toggle标准的NAND闪存在上电初始化后,直接进入Toggle DDR模式(420)。可选地,NAND闪存上电后,响应于控制部件104对NAND闪存的每个LUN发出的复位命令,而完成上电初始化过程。以及根据Toggle DDR模式,使用Read命令从NAND闪存获取加载引导器(422)。Toggle DDR模式同NV-DDR2模式对命令的定义基本相同。根据NV-DDR2模式生成的读命令,也适用于Toggle DDR模式的NAND闪存。可选地,根据Toggle DDR模式与NV-DDR2模式对命令的定义,略微调整信号时序,使得产生的读命令信号序列同时满足NV-DDR2模式与ToggleDDR模式。例如,相对于Toggle DDR模式的要求,在读命令使/CE信号提前产生一段时间,以兼容NV-DDR2模式的要求。
图4C展示了Toggle标准的另一种NAND闪存的上电流程。根据图4C所展示的例子的Toggle标准的NAND闪存在上电初始化后,进入SDR模式(430)。可选地,NAND闪存上电后,响应于控制部件104对NAND闪存的每个LUN发出的复位命令,而完成上电初始化过程。接下来,控制部件向NAND闪存的每个LUN发出“Set-Feature”命令,使NAND闪存进入Toggle-DDR模式(432)。以及根据Toggle-DDR模式的要求,使用读命令(Read)从NAND闪存的指定地址读取引导加载器(434)。
根据本申请的一个实施例,控制部件的一个引脚耦合到固态存储设备。在制造固态存储设备的过程中,设置该引脚向固态存储设备提供的电信号状态,以指示控制部件所耦合的NAND闪存的类型(Toggle或ONFI),或者指示应当使用的NAND闪存上电流程。引脚向控制部件提供两种指示,其一是按照图4A或4C的流程,其二是按照图4B的流程。响应于引脚指示处于第一种电信号状态,控制部件根据图4A或4C的流程上电。控制部件向指定位置的NAND闪存的LUN(例如,通道CH 0的NAND闪存320的LUN 0)发出“Set-Feature”命令,以使LUN进入NV-DDR2模式(对于Toggle闪存,是进入Toggle DDR模式)。可选地,在发出“Set-Feature”命令之前,还向该LUN发出复位命令。在发出“Set-Feature”命令之后,向LUN 0发出符合NV-DDR2模式的读(Read)命令,以从LUN 0的指定地址(例如,物理块0的物理页0)读取数据。所读出的数据,是引导加载器。
响应于引脚指示处于另一种电信号状态,控制部件根据图4B的流程上电。NAND闪存上电后进入Toggle DDR状态。控制部件向LUN 0发出符合NV-DDR2模式的读(Read)命令,以从LUN 0的指定地址(例如,物理块0的物理页0)读取数据。可选地,在发出读(Read)命令之前,还向该LUN发出复位命令。
可选地,控制部件发出的读(Read)命令,既符合NV-DDR2模式的要求,也符合Toggle-DDR模式的要求,从而同时满足图4A、图4B与图4C的上电流程。
可选地,不同种类的NAND闪存的物理页具有不同的大小,例如,4KB、8KB、16KB等。控制部件上电时不知道其所耦合的NAND闪存的种类。在根据本申请的实施例中,仅读取物理页的前4KB存储空间,以兼容多种NAND闪存。对应地,在固态存储设备的制造过程中,将引导加载器仅存储在物理页的前4KB存储空间。对于具有较大尺寸物理页的NAND闪存,在物理页的4KB存储之间之后填充随机数据,以填满物理页。
根据本申请的又一个实施例,不使用外部引脚向控制部件指示所耦合的NAND闪存类型。控制部件上电后,无论耦合哪种NAND闪存,都向指定位置的NAND闪存的LUN(例如,通道CH 0的NAND闪存320的LUN 0)发出“Set-Feature”命令,以使LUN进入NV-DDR2模式(也即Toggle DDR)。如果控制部件所耦合的NAND闪存是符合图4A流程的ONFI闪存或图4C流程的Toggle闪存,响应于“Set-Feature”命令会进入NV-DDR2模式或Toggle DDR模式。如果控制部件所耦合的闪存是符合图4B流程的Toggle闪存,该“Set-Feature”命令对其不产生实质性影响(无效命令),无论是否收到该“Set-Feature”命令Toggle闪存都会进入Toggle DDR模式。可以理解地,“Set-Feature”命令具有指定参数(例如,参数“01”)。
可选地,在发出“Set-Feature”命令之前,还向该LUN发出复位命令。在发出“Set-Feature”命令之后,向LUN 0发出符合NV-DDR2模式的读(Read)命令,以从LUN 0的指定地址(例如,物理块0的物理页0)读取数据。或者向LUN 0发出既符合NV-DDR2模式的要求,也符合Toggle-DDR模式的要求的读(Read)命令。
根据本申请依然另一个实施例,不使用外部引脚向控制部件指示所耦合的NAND闪存类型。控制部件依然根据每种NAND闪存的上电流程,试探性地访问NAND闪存。例如,首先按照图4A的上电流程,向NAND闪存发出“Set-Feature”命令与读命令。如读命令读取的数据中没有指示引导加载器的指定标记,或者读命令发出后收不到NAND闪存给出的结果,则控制部件知晓图4A所示的上电流程失败,进而改用图4B所示的上电流程。以及若图4B所示的上电流程依然失败,还改用图4C所示的上电流程。
根据本申请的上述实施例,控制部件需要向NAND闪存发出“Set-Feature”命令、读(Read)命令以及可选地复位命令。命令所访问LUN或物理页具有指定的地址。通过极小规模的状态机或程序指令的控制,完成上述NAND闪存命令的处理,以从NAND闪存获取引导加载器。
图5展示了根据本申请实施例的引导加载器在NAND闪存中的存储地址。控制部件向NAND闪存发出的读(Read)命令包括多个地址字段,例如LUN地址、物理块地址与物理页地址。根据本申请的实施例,为读取引导加载器,指定LUN地址为0以及物理块地址为0,而引导加载器的初始部分的物理页地址为0。从而控制部件从LUN地址为0、物理块地址0以及物理页地址0读出引导加载器的初始部分。进一步地,无论物理页的尺寸,从物理页0中仅读取前4KB数据。所读取的4KB数据具有指定的数据结构,描述了引导加载器的大小,与在所读取的4KB数据中的位置。若引导加载器尺寸较小,可被容纳在物理页0的4KB数据中,通过1条读命令即获取了引导加载器,并运行引导加载器。若引导加载器尺寸过大,无法被容纳在物理页0的4KB数据中,则物理页0的4KB数据还指示了需要获取引导加载器的后续部分。在一个例子中,在顺序编号的多个物理页(物理页1、物理页2等)每个的前4KB数据中存储引导加载器的后续部分。在又一个例子中,在各个物理页的前4KB数据中还指示后续存储引导加载器的物理页的页地址。从而在读(Read)命令的地址字段中,无须修改LUN地址与物理块地址(例如,固定为0),而仅修改页地址,来获得下一读命令,以降低对引导加载器获取过程的控制的复杂度。
进一步地,读(Read)命令的地址字段在多个总线周期中传输。例如,ONFI与Toggle协议中,在5个总线周期中传输40比特地址。而根据本申请的实施例,除了第3周期中传输的8比特页地址,其他4个周期中传输的地址均为指定值(例如,0),以降低读(Read)命令生成过程的复杂度。
以及以类似的方式从NAND闪存中获取设备配置信息。
根据本申请的实施例,在物理页的前4KB空间中存储的引导加载器的数据,被错误校正码保护。作为举例,采用指定的较低码率(例如,0.5-0.8)的错误校正编码。以码率为0.6为例,物理页存储的4KB数据中,有2.4KB来自引导加载器,而1.6KB是对应的错误校正码的校验数据。采用低码率以提高在NAND闪存中存储引导加载器的可靠性。可选地,采用具有同NAND闪存上的其他用户数据相同码率(例如,0.96)的错误校正码。
依然可选地,所选择的错误校正码是BCH码。控制部件包括BCH码译码器。BCH码译码器对读出的4KB数据进行译码,得到来自引导加载器的数据。
作为另一个例子,所选择的错误校正码是LDPC码。控制部件包括LDPC码译码器。LDPC码译码器对读出的4KB数据进行译码。以及在控制部件中还可选地存储LDPC码的LLR(Log Likelyhood Ratio,对数似然比)表。LLR表被集成在控制部件中。可以理解地,只使用LDPC码译码器的硬译码过程对读出的4KB数据进行译码,从而无须使用LLR表。
可选地,为提高可靠性,在NAND闪存中存储多份引导加载器与设备配置信息。例如,在每个闪存通道上各存储1份引导加载器,以提供冗余。响应于对读取的数据的错误校正失败,尝试加载另一份引导加载器的副本。以及若尝试了引导加载器的所有副本,均无法获得正确的引导加载器,控制部件改用其他方式尝试加载固件,例如等待来自JTAG、UART、PCIe等其他链路的引导加载器。
依然可选地,固态存储设备的制造过程中,还记录引导加载器以及可选地固件被写入NAND闪存的时间。固态存储设备上电,引导加载器运行后,或者固件运行后,还识别引导加载器以及可选地固件在NAND闪存中被存储的时间以及被读取的次数。响应于被存储时间过长或者被读取次数过多,还擦除NAND闪存中存储的引导加载器以及可选地固件,并在指定位置(例如,原来的位置)再次写入引导加载器以及可选地固件,以提高NAND闪存中存储的引导加载器与可选地固件的可靠性。
在固态存储设备的制造过程中,将引导加载器写入固态存储设备上的指定NAND闪存。在一个例子中,通过生产线设备将引导加载器(可选地,还包括设备配置信息与固件)写入NAND闪存芯片的指定LUN的指定地址,再将NAND闪存芯片安装到固态存储设备,并耦合到控制部件的指定闪存通道。作为又一个例子,先将NAND闪存安装到控制部件的指定闪存通道,再通过生产线设备向控制部件加载用于制造过程的固件,并通过用于制造过程的固件将引导加载器写入指定闪存通道的指定地址。
图6展示了根据本申请实施例的固态存储设备上电的流程图。
根据图6的实施例,固态设备上电过程中,控制部件识别控制部件所耦合的NAND闪存类型(610)。作为举例,控制部件根据其外部引脚所指示的状态,来识别所耦合的NAND闪存的类型。例如,外部引脚的一种状态指示耦合了ONFI闪存,应根据图4A所指示的流程上电;而外部引脚的另一种状态指示耦合了Toggle闪存,应根据图4B所指示的流程上电。
响应于控制器识别出所耦合的是ONFI闪存(620),根据图4A的流程,控制部件向指定位置的NAND闪存的LUN 0发出“Set-Feature”命令,以使LUN进入NV-DDR2模式(630)。在发出“Set-Feature”命令之后,向LUN 0发出符合NV-DDR2模式的读(Read)命令,以从LUN 0的指定地址(例如,物理块0的物理页0)获取引导加载器(640)。
响应于控制器识别出所耦合的是Toggle闪存(620),根据图4B的流程,控制部件向指定位置的NAND闪存的LUN 0发出符合NV-DDR2模式的读(Read)命令,以从LUN 0的指定地址(例如,物理块0的物理页0)获取引导加载器(650)。
可选地,根据读出数据中指示的引导加载器的大小,通过一个或多个读命令,从NAND闪存的指定地址读出完整的引导加载器。以及可选地,还从NAND闪存中读出设备配置信息。
控制部件将引导加载器加载到控制部件的CPU的指令存储器,并在CPU上运行引导加载器。引导加载器用设备的配置信息配置控制部件的各个部分(660),例如,介质接口控制器、DRAM控制器。设备配置信息指示了控制部件所耦合的NAND闪存的类型、速率、组织方式,以及DRAM的容量、速率、组织方式等。从而控制部件可使用大容量的DRAM,并访问所耦合的所有NAND闪存。
引导加载器还根据设备配置信息的指示,从NAND闪存中获取固件,将固件加载到CPU的指令存储器和/或DRAM,并运行固件(670),以由固件接管对CPU的控制权。通过运行固件来提供固态存储设备的功能。
响应于固件加载失败,引导加载器改用其他启动模式(680)。例如,引导加载器等待从JTAG、UART或PCIe接口获取固件,并运行所获取的固件来提供固态存储设备的功能。
可选地,不使用固件,而将固件提供的功能集成在引导加载器中。引导加载器被加载,并完成对控制部件的各部分的配置后,即提供固态存储设备的功能。
本申请实施例提供了用于固态存储设备的启动的方法,实现了在固态存储设备启动时从NAND闪存中加载固件,使得为制造固态存储设备至少节省一颗存储器芯片。除了应用于固态存储设备,本申请的实施例还可应用于其他包括控制部件与NAND闪存的电子设备,诸如手机、机顶盒、媒体播放器等。
本申请实施例的方法和装置可以以硬件、软件、固件以及上述中的任意组合来实现。硬件可以包括数字电路、模拟电路、数字信号处理器(DSP)、专用继承电路(ASIC)等等。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (10)

1.一种从NAND闪存引导电子设备的方法,包括:
向所述NAND闪存发出第一命令,使所述NAND闪存进入NV-DDR2模式或者Toggle DDR模式;
根据NV-DDR2模式的要求,使用读命令从所述NAND闪存的指定地址读取指定长度的数据;
从所读取的指定长度的数据中获取引导加载器;
运行所述引导加载器配置所述电子设备,并加载所述电子设备的固件。
2.根据权利要求1所述的方法,还包括:
向所述NAND闪存发出第一命令前,识别所述NAND闪存的类型;
响应于所述NAND闪存是根据ONFI标准的闪存,所述第一命令使所述NAND闪存进入NV-DDR2模式。
3.根据权利要求2所述的方法,其中
响应于所述NAND闪存是根据Toggle标准的闪存,所述第一命令使所述NAND闪存进入Toggle-DDR2模式。
4.根据权利要求2所述的方法,其中
响应于所述NAND闪存是根据Toggle标准的闪存,所述第一命令不是述NAND闪存的有效命令。
5.根据权利要求2或4所述的方法,其中
响应于所述NAND闪存是根据Toggle标准的闪存,不向所述NAND闪存发出第一命令。
6.根据权利要求1-5之一所述的方法,还包括:
对所读取的指定长度的数据进行错误校正译码,以得到构成引导加载器的部分的数据。
7.根据权利要求1-6所述的方法,其中
所述电子设备上电后,访问所述NAND闪存前,不访问其他任何存储芯片。
8.根据权利要求1-7之一所述的方法,其中
所述固件根据所述引导加载器被存储在所述NAND闪存中的时间和/或所述引导加载器被读取的次数,擦除所述引导加载器,并将所述引导加载器重写入所述NAND闪存的所述指定地址。
9.根据权利要求1-8之一所述的方法,还包括:
响应于所述固件加载失败,从JTAG、UART或PCIe端口获取固件。
10.一种电子设备,包括控制部件与NAND闪存;
所述控制部件耦合搭配所述NAND闪存,所述NAND闪存中存储引导加载器与固件;
响应于上电,所述控制部件执行根据权利要求1-9之一所述的方法。
CN201710885558.6A 2017-09-27 2017-09-27 电子设备及其启动方法 Active CN107479938B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710885558.6A CN107479938B (zh) 2017-09-27 2017-09-27 电子设备及其启动方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710885558.6A CN107479938B (zh) 2017-09-27 2017-09-27 电子设备及其启动方法

Related Child Applications (1)

Application Number Title Priority Date Filing Date
CN202410268959.7A Division CN118051268A (zh) 2017-09-27 电子设备及其启动方法

Publications (2)

Publication Number Publication Date
CN107479938A true CN107479938A (zh) 2017-12-15
CN107479938B CN107479938B (zh) 2024-03-29

Family

ID=60587074

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710885558.6A Active CN107479938B (zh) 2017-09-27 2017-09-27 电子设备及其启动方法

Country Status (1)

Country Link
CN (1) CN107479938B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580228A (zh) * 2018-06-11 2019-12-17 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备
CN111913666A (zh) * 2020-07-31 2020-11-10 深圳忆联信息系统有限公司 兼容不同协议Nand颗粒的方法、装置、计算机设备及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102662878A (zh) * 2012-02-27 2012-09-12 深圳市硅格半导体有限公司 存储设备软件层的识别和驱动方法及装置
CN103366793A (zh) * 2012-03-28 2013-10-23 飞思卡尔半导体公司 同步存储器数据传输中的时序控制
US20140082260A1 (en) * 2012-09-19 2014-03-20 Mosaid Technologies Incorporated Flash memory controller having dual mode pin-out
CN103858116A (zh) * 2011-08-09 2014-06-11 Lsi公司 I/o设备及计算主机互操作
CN103942114A (zh) * 2013-01-22 2014-07-23 Lsi公司 Nvm地址、跨度及长度映射/转换的存储地址空间
CN104035776A (zh) * 2014-06-23 2014-09-10 成都万维图新信息技术有限公司 一种操作系统的启动方法
US20150261446A1 (en) * 2014-03-12 2015-09-17 Futurewei Technologies, Inc. Ddr4-onfi ssd 1-to-n bus adaptation and expansion controller
US20150347032A1 (en) * 2013-03-27 2015-12-03 Hitachi, Ltd. Dram having sdram interface and flash memory consolidated memory module
US20160232057A1 (en) * 2015-02-11 2016-08-11 Sandisk Technologies Inc. Safe mode boot loader
CN105900069A (zh) * 2014-01-07 2016-08-24 苹果公司 对被存储在闪存存储器中的数据的推测性预取

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103858116A (zh) * 2011-08-09 2014-06-11 Lsi公司 I/o设备及计算主机互操作
CN102662878A (zh) * 2012-02-27 2012-09-12 深圳市硅格半导体有限公司 存储设备软件层的识别和驱动方法及装置
CN103366793A (zh) * 2012-03-28 2013-10-23 飞思卡尔半导体公司 同步存储器数据传输中的时序控制
US20140082260A1 (en) * 2012-09-19 2014-03-20 Mosaid Technologies Incorporated Flash memory controller having dual mode pin-out
CN103942114A (zh) * 2013-01-22 2014-07-23 Lsi公司 Nvm地址、跨度及长度映射/转换的存储地址空间
US20150347032A1 (en) * 2013-03-27 2015-12-03 Hitachi, Ltd. Dram having sdram interface and flash memory consolidated memory module
CN105900069A (zh) * 2014-01-07 2016-08-24 苹果公司 对被存储在闪存存储器中的数据的推测性预取
US20150261446A1 (en) * 2014-03-12 2015-09-17 Futurewei Technologies, Inc. Ddr4-onfi ssd 1-to-n bus adaptation and expansion controller
CN104035776A (zh) * 2014-06-23 2014-09-10 成都万维图新信息技术有限公司 一种操作系统的启动方法
US20160232057A1 (en) * 2015-02-11 2016-08-11 Sandisk Technologies Inc. Safe mode boot loader

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
"ONFI闪存标准测试解决方案", 《今日电子》, no. 12, pages 68 *
NAM-TRUNG NGUYEN: "6 - Active Micromixers", 《MICROMIXERS》, pages 207 - 265 *
小盖: "深入了解3D V-NAND技术的优势", 《电脑爱好者》, no. 11, pages 90 - 91 *
魏巍 等: "基于非易失存储器件的内存键值存储系统的性能研究", 《高技术通讯》, vol. 27, no. 06, pages 9 - 11 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110580228A (zh) * 2018-06-11 2019-12-17 北京忆恒创源科技有限公司 去分配命令处理方法及其存储设备
CN111913666A (zh) * 2020-07-31 2020-11-10 深圳忆联信息系统有限公司 兼容不同协议Nand颗粒的方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN107479938B (zh) 2024-03-29

Similar Documents

Publication Publication Date Title
US8225067B2 (en) Multilevel cell NAND flash memory storage system, and controller and access method thereof
US8812784B2 (en) Command executing method, memory controller and memory storage apparatus
US8954705B2 (en) Memory space management method and memory controller and memory storage device and memory storage using the same
TW201716980A (zh) 資料儲存設備及其操作方法
TWI479502B (zh) 固態碟片控制器及其資料處理方法
CN106681652B (zh) 存储器管理方法、存储器控制电路单元与存储器存储装置
TWI495998B (zh) 資料管理方法、記憶體控制器與記憶體儲存裝置
US9213631B2 (en) Data processing method, and memory controller and memory storage device using the same
CN110083554A (zh) 用于配置混合存储器模块的存储器的i/o的设备及方法
CN110196684A (zh) 数据存储装置、其操作方法以及具有其的存储系统
CN109992202A (zh) 数据存储设备、其操作方法以及包括其的数据处理系统
TW201945927A (zh) 資料寫入方法、記憶體控制電路單元以及記憶體儲存裝置
CN113326216B (zh) 存储器子系统控制器及相关方法和存储媒体
TWI486765B (zh) 記憶體管理方法、記憶體控制器與記憶體儲存裝置
CN106372011A (zh) 用于pcie ssd控制器的高性能主机队列监控器
WO2018063901A1 (en) Method and apparatus for initiating pre-read operation before completion of data load operation
CN110286847A (zh) 数据存储装置及其操作方法
CN107479938A (zh) 电子设备及其启动方法
KR102650603B1 (ko) 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 불휘발성 메모리 장치를 제어하는 메모리 컨트롤러의 동작 방법
CN106683698A (zh) 存储器件及其操作方法
CN101788916B (zh) 配置芯片的方法和装置
CN110119326A (zh) 数据存储装置及其操作方法
CN109240949A (zh) 数据存储装置及其操作方法
KR20210060867A (ko) 데이터 저장 장치 및 그것의 동작 방법
JP2008027326A (ja) システムコントローラ、該システムコントローラを有するフラッシュメモリシステム、フラッシュメモリモジュールの制御方法

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