专利名称:一种系统级芯片利用nand闪存启动的方法
技术领域:
本发明涉及一种系统级芯片利用NAND闪存启动的方法。
背景技术:
NAND闪存是flash内存的一种,其内部采用非线性宏单元模式,为固态大容量内存的实现提供了廉价有效的解决方案。NAND-flash存储器具有容量较大,改写速度快等优点,适用于大量数据的存储,因而在业界得到了越来越广泛的应用,如嵌入式产品中包括数码相机、MP3随身听记忆卡、体积小巧的U盘等。然而,当前的系统级芯片-SoC(System on Chip) 一般支持直接从NAND闪存启动, 并支持尽可能多的NAND闪存。但由于NAND闪存技术发展较快,NAND闪存器件提供商也越来越多,NAND闪存的标识没有统一的标准,导致当初已固化的SoC并不一定都支持最新的 NAND闪存。SoC从NAND闪存启动需事先读取NAND闪存的一些规格信息,包括数据总线宽度、 地址宽度、页大小、空闲区大小、ECC(错误检查和纠正)强度信息和擦除块大小。如图1所示NAND-Flash ±夬结构图。图1中,页大小(Page Size)可以是小页512B和大页2048B、 4096B、8192B(字节);空闲区大小可以是16B、64B、128B、218B、216B、224B或未来其它字节数,空闲区用以存储包括ECC强度信息和坏块标记;NAND闪存以页为单位读写数据,而以块为单位擦除数据,为了跳过不可靠块或坏块,擦除块大小需要被标识,擦除块大小包括一个块64页或者一个块1 页或更多。目前常用的NAND闪存规格信息标识方法有以下几种1、增加启动模式管脚(Boot Mode Pins),例如三星公司的S3C6410芯片的启动模式支持NAND闪存512B-3、512B-4、2KB-5、5KB-5,分别是页大小512字节3个地址,512字节 4个地址,2048字节5个地址,4096字节5个地址。它的缺点是只支持8位数据总线宽度的 NAND且不支持16位宽度的NAND闪存。又如中飞思卡尔i. MX31的两个启动管脚分别表示页大小512或2048字节,数据总线宽度8或16位。但该方法灵活性较差,将给SoC增加了额外的管脚,且所支持的NAND闪存种类有限。2、通过读取NAND闪存的IDs,包括厂商码,设备码,扩展码,来识别NAND闪存的规格。如Read ID(90H)命令(不需要任何参数)被所有的NAND闪存闪存所支持。TI的 0MAP3430采用此方法,但硅片(die)在4GB及其以上的NAND闪存开始不遵循以往的编码规定。ONFI (Open Nand flash Interface)标准的NAND闪存虽然有统一的编码,但几乎没得到应用,尤其是ONFI 1.X。3、君正JZ4760Aburst650使用了一种复杂的方法标识NAND闪存,基本做到了能从任意一种的NAND闪存启动,但该方法的缺点是(1)、标识信息虽然有响应的ECC保护,但在实际启动读取这些标识信息时,没用且无法用ECC进行错误检查和纠正。只能利用本身的冗余字节来规避NAND闪存的读取错误;
O)、启动速度慢,要试错读多次才可能获取标识信息,由于小页(512字节)和大页NAND闪存的读序列不同;地址宽度需要进行多次尝试获取;所采用的固定M-bit ECC进行错误检查和纠正影响启动速度。(3)、缺少擦除块大小信息,不具备跳过不可靠块或坏块的功能特点。
发明内容
本发明的目的是提供一种低成本、可靠性高且易于使用的NAND闪存的标识方法, 以便快速启动系统级芯片。为实现上述目的,本发明提供了一种系统级芯片利用NAND闪存启动的方法,其特征在于从NAND闪存读取启动标头(Boot Header)信息,根据启动标头信息读取NAND闪存中的启动代码,执行启动代码。根据本发明的方法可以用较小的代价来标识NAND的规格信息,使得系统级芯片能从任意新型的NAND启动,同时仍保持使用足够的ECC强度保护用户标识的信息,可靠性高。系统级芯片总是能够按照大页的方式序列读出启动标头及其ECC码,根据启动标头所标识的信息,系统级芯片可以正常读出主区域中的启动代码,并执行启动代码。
通过以下结合附图以举例方式对本发明的具体实施方案进行详细描述后,本发明的其他特征、特点和优点将会更加明显。附图中图1为NAND闪存块结构图;图2为本发明一实施例的NAND闪存结构图;图3为本发明一实施例的NAND闪存的启动头标结构图;图4为本发明另一实施例的NAND闪存的启动头标结构图;图5为本发明另一实施例的NAND闪存的启动头标结构图。
具体实施例方式图2为本发明一实施例的NAND闪存结构图。在图2中,NAND的第一块的第一页中的前半部分用于存放启动标头(Boot Header)信息、错误检查和纠正(ECC)码,启动标头和它的ECC码具有固定的长度,例如启动标头采用512byte,ECC码采用16-byte。优选地, ECC码采用8-bit纠错的BCH算法,NAND的第一块的第二页用于存放启动代码(Boot loader code),相应的空闲区部分用于存放启动代码相应的ECC码。启动标头用于标识NAND闪存的页大小信息、空闲区大小信息、擦除块大小信息、 地址宽度信息、ECC模式信息、预留信息以及ECC强度信息。NAND闪存规格信息中的数据总线宽度不需要标识,由于数据总线宽度广泛运用8-bit NAND闪存,若要支持16-bit NAND 闪存可以通过Read ID的方法来获取NAND闪存的设备码或厂商码,因为厂商码、设备码的编码已经得到很好的遵循。启动时,系统级芯片从NAND-Flash闪存读取启动标头信息,根据启动标头信息读取NAND-Flash闪存中的启动代码,执行启动代码。
在NAND-Flash闪存存储有所述启动标头信息的ECC码的情况下,从NAND-Flash 闪存读取ECC码,并且根据ECC码对启动标头信息纠错。在NAND-Flash闪存存储有启动代码的ECC码的情况下,从NAND-Flash闪存中读取ECC码并且根据ECC码对启动代码纠错。根据本发明,可以采用不同的NAND闪存的启动头标,以适用不同类型的NAND闪存。图3为本发明一实施例的NAND闪存的启动头标结构图。图3示意了长度为 512-byte的启动标头和长度为16-byte的ECC码。启动标头中的页大小采用4_byte长度来标识信息,如NAND闪存的每页为2048-byte的定义为大页,需要在启动标头中被标识,小页(512-byte)NAND闪存无需标识,通过Read ID的方法来区分;空闲区大小采用4_byte长度来标识信息,当需要自动计算ECC强度时需要标识(不同的ECC强度需要占用不同大小的空闲区)。擦除块大小采用4-byte长度来标识信息,NAND闪存是以页为单位读写数据,而以块为单位擦除数据,以便跳过不可靠块或坏块;地址宽度采用Ι-byte长度来标识信息, 早期NAND闪存只接受固定的地址宽度,3个或4个字节地址,但同时那个时期的NAND闪存有着规范的编码方式,通过Read ID的方式可以区分地址宽度。最新的NAND闪存总是能够接受5个字节的地址宽度,即使多余,也能够被忽略掉最后一行,所以地址宽度可以标识出来,以加快启动速度。ECC模式采用Ι-byte长度来标识信息,选择将读出的启动代码所采用的ECC算法,例如ECC的值为OxFF,则根据页大小和空闲区大小的值来选择最强度的ECC 算法。启动标头中的498-byte做为预留备用。启动标头相应的ECC采用3_byte做为预留备用,采用13-byte长度来标识ECC强度信息,为了加快启动速度而使用用户指定的ECC算法,如指定8-bit的BCH算法,需要进行标识。图4为本发明另一实施例的NAND闪存的启动头标结构图。图4示意了长度为 512-byte的启动标头和长度为256_byte的ECC。启动标头中的页大小采用4_byte长度来标识信息;空闲区大小采用4-byte长度来标识信息;擦除块大小采用4-byte长度来标识信息;地址宽度采用Ι-byte长度来标识信息;ECC模式采用l_byte长度来标识信息,选择将读出的启动代码所采用的ECC算法;启动标头中的498-byte做为预留备用。启动标头相应的ECC采用217-byte做为预留备用,采用39-byte长度来标识ECC强度信息,为了加快启动速度而使用用户指定的ECC算法,如指定M-bit的BCH算法,需要进行标识。图5为本发明另一实施例的NAND闪存的启动头标结构图。图5示意了长度为 256-byte的启动标头和长度为256_byte的ECC。启动标头中的页大小采用4_byte长度来标识信息;空闲区大小采用4-byte长度来标识信息;擦除块大小采用4-byte长度来标识信息;地址宽度采用Ι-byte长度来标识信息;ECC模式采用l_byte长度来标识信息,选择将读出的启动代码所采用的ECC算法;启动标头中做为预留备用。启动标头相应的ECC采用220-byte做为预留备用,采用36-byte长度来标识ECC强度信息,为了加快启动速度而使用用户指定的ECC算法,如指定M-bit的BCH算法,需要进行标识。显而易见,在不偏离本发明专利的真实精神和范围的前提下,在此描述的本发明专利可以有许多变化。因此,所有对于本领域技术人员来说显而易见的改变,都应包括在本权利要求书所涵盖的范围之内。本发明专利所要求保护的范围仅由所述的权利要求书进行限定。
权利要求
1.一种系统级芯片利用NAND闪存启动的方法,其特征在于从NAND闪存读取启动标头信息,根据启动标头信息读取NAND闪存中的启动代码,执行启动代码。
2.根据权利要求1所述的启动方法,其特征在于NAND闪存存储有所述启动标头信息的 ECC码,所述从NAND闪存读取启动标头信息的步骤包括读取ECC码并且根据ECC码对启动标头信息纠错。
3.根据权利要求2所述的启动方法,其特征在于ECC码的空间大小因算法而不同。
4.根据权利要求1所述的启动方法,其特征在于NAND闪存存储有所述启动代码的ECC 码,所述读取NAND闪存中的启动代码的步骤包括读取ECC码并且根据ECC码对启动代码纠讲T曰ο
5.根据权利要求2-4之一所述的方法,其特征在于所述ECC码包括BCH算法。
6.根据权利要求1所述的启动方法,其特征在于所述启动标头信息和/或所述启动标头信息的ECC码设置在NAND闪存第一块的第一页中的前半部。
7.根据权利要求1所述的启动方法,其特征在于所述启动标头信息包括页大小、空闲区大小、擦除块大小、地址宽度以及ECC模式中的一个或数个。
8.根据权利要求1所述的方法,其特征在于包括通过读取ID的方式来获取数据总线宽度、地址宽度和小页信息中的一个或多个。
全文摘要
本发明公开了一种系统级芯片利用NAND闪存启动的方法,其特征在于从NAND闪存读取启动标头信息,根据启动标头信息读取NAND闪存中的启动代码,执行启动代码。根据本发明的方法可以用较小的代价来标识NAND闪存的规格信息,使得系统级芯片能从任意新型的NAND闪存启动,同时仍保持使用足够的ECC强度保护用户标识的信息,可靠性高。
文档编号G06F9/445GK102163158SQ20111011117
公开日2011年8月24日 申请日期2011年4月29日 优先权日2011年4月29日
发明者陆伟 申请人:北京凡达讯科技有限公司