一种对闪存进行操作的方法和系统芯片的制作方法

文档序号:6400247阅读:122来源:国知局
专利名称:一种对闪存进行操作的方法和系统芯片的制作方法
技术领域
本发明涉及芯片存取技术,特别是指一种对闪存进行操作的方法和系统芯片。
背景技术
Nand-flash (Flash内存的一种)是一种重要的存储介质,生产厂商推出了一系列工艺先进的Nand-flash芯片,容量密度更大,成本更低。但芯片的稳定性大大降低,需要更多位的ECC进行校验,早期的芯片中,出错只会发生在擦除和写操作,但新型Nand-flash在读的时候也会出错(read disturb)。为提供可靠的数据读取通道,各厂商在标准Nand-flash读写接口之外提供了自定义的操作命令,且彼此互不兼容。用户在标准的数据读取失败后执行Read-retry命令,Read-retry命令改变Nand-flash内部电平检测标准,然后用户重新通过标准命令读取数据,就可能成功。Nand-flash的存储结构如图1所示,上述问题给基于系统芯片(SoC)的方案带来一个问题,系统芯片如图2所示,内部通常都会内置firmware作为系统芯片的Bootloader,其启动过程需要从Nand-flash上获取数据,Bootloader从Nand-flash中读取Init Infor来配置系统环境-例如配置DDRAM可用,加载程序,启动系统。现有技术存在如下问题:Nand-f Iash加入了厂商自定义的一些命令,这给f irmware的实现带来了问题,即如何在代码不变的情况下支持各厂商自定义的Nand-flash操作命令,并且随着技术的发展,各厂商可能会开发更先进的产品,、扩展出更多厂家独有的命令,这都会导致部件之间的兼容性出现问题。

发明内容
本发明要解决的技术问题是提供一种对闪存进行操作的方法和系统芯片,解决现有技术中,各厂商自定义的Nand-flash操作命令会导致部件之间的兼容性出现问题的缺陷。为解决上述技术问题,本发明的实施例提供一种对闪存进行操作的方法,系统芯片包括非易失性控制器和非易失性存储区;方法包括:在系统芯片上电之后,系统芯片中内置的固件启动,初始化非易失性控制器和非易失性存储区;通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,并存放在SRAM中;根据所述控制数据跳转到SRAM中的预定位置,通过执行固件以及预定位置起始的一段所述程序数据,与Nand-flash之间建立读写通道;加载Nand-flash中的程序和数据到系统芯片内存中并执行。所述的方法中,非易失性存储区具体是eFuse存储区,非易失性控制器具体是eFuse控制器。所述的方法中,通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,具体包括:若非易失性存储区中的程序数据是压缩状态的,则读取后对压缩状态的程序数据执行解压缩。
所述的方法中,根据所述控制数据跳转到SRAM中的预定位置,具体包括:根据所述控制数据中记载的所述程序数据在SRAM中的偏移位置,在SRAM中找到存放程序数据的起始处作为所述预定位置。所述的方法中,加载Nand-flash中的程序和数据到系统芯片内存中并执行,之后还包括:执行固件中包含的剩余的程序。一种系统芯片,包括:非易失性控制器,用于实现对非易失性存储区的读取;非易失性存储区,用于存放控制数据和程序数据;固件,用于在系统芯片上电之后启动,初始化非易失性控制器和非易失性存储区;以及,通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,并存放在SRAM中;根据所述控制数据跳转到所述SRAM中的预定位置,通过执行固件以及预定位置起始的一段程序数据,与Nand-flash之间建立读写通道;加载Nand-flash中的程序和数据到系统芯片内存中并执行。所述的芯片中,非易失性存储区具体是eFuse存储区。所述的芯片中,非易失性控制器具体是eFuse控制器。所述的芯片中,还包括:解压缩单元,用于若非易失性存储区中的程序数据是压缩状态的,则对读取的压缩状态的程序数据执行解压缩。本发明的上述技术方案的有益效果如下:若系统芯片中有Nand-f lash,且Nand-flash中存放了初始化阶段所需要的程序和数据,则在上电之后,采用非易失性存储区中的控制数据和程序数据来建立固件与Nand-flash之间的读写通道,然后,加载Nand-flash中的程序和数据到系统芯片内存中执行,如此,无论Nand-f lash中的数据发生了什么变化,均能够加载Nand-flash成功,克服了现有不兼容的问题。


图1表示系统芯片中Nand-flash的存储结构示意图;图2表不系统芯片的结构不意图;图3表不本发明实施例的系统芯片的结构不意图;图4表示eFuse存储区的结构示意图;图5表示firmware调用Nand-flash中增加的功能的流程示意图。
具体实施例方式为使本发明要解决的技术问题、技术方案和优点更加清楚,下面将结合附图及具体实施例进行详细描述。固件(firmware)作为系统芯片的Bootloader,是在操作系统内核运行之前运行的一段小程序,初始化硬件设备,建立内存空间映射图,从而将系统的软硬件环境设置在一个合适状态,以便为最终调用操作系统内核准备好正确的环境。本发明中在不改变firmware的情况下,改变firmware的执行路径。系统芯片如图3所示,包括:非易失性控制器,非易失性存储区,Nand-flash控制器,CPU,Dram控制器以及其他的模块,其中,通过非易失性控制器来读取非易失性存储区中的数据。本发明实施例提供一种对闪存进行操作的方法,应用于系统芯片,如图3所示,系统芯片包括非易失性控制器和非易失性存储区;方法包括:在系统芯片上电之后,系统芯片中内置的固件启动,初始化非易失性控制器和非易失性存储区;通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,并存放在SRAM 中;根据所述控制数据跳转到SRAM中的预定位置,通过执行固件以及预定位置起始的一段程序数据,与Nand-flash之间建立读写通道;加载Nand-flash中的程序和数据到系统芯片内存中并执行。应用所提供的技术,若系统芯片中有Nand-flash,且Nand-flash中存放了初始化阶段所需要的程序和数据,则在上电之后,采用非易失性存储区中的控制数据和程序数据来建立固件与Nand-flash之间的读写通道,然后,加载Nand-flash中的程序和数据到系统芯片内存中执行,如此,无论Nand-flash中的数据发生了什么变化,均能够加载Nand-flash成功,克服了现有不兼容的问题。控制数据用于控制firmware的执行流程,控制读写Nand-flash,程序数据主要是对Nand-flash现有的功能进行扩展的数据,控制数据与程序数据在SRAM中的位置不同。非易失性存储介质具体可以采用电子熔断介质,也可以采用各种接口的norflash,sd卡等,设置在系统芯片的外部作为非易失性存储介质。在一个优选实施例中,如图4所示,非易失性存储区具体是eFuse存储区,非易失性控制器具体是eFuse控制器。eFuse是一种特殊的存储介质,一种特殊的Flash内存,内置于系统芯片中,可读可写。由于eFuse是内置在系统芯片中,firmware对eFuse的读写方式是固定的,所以eFuse不存在兼容性问题。eFuse中,一根熔丝表示一个bit,这根熔丝没断代表O,断了则代表I。对eFuse的编程实际上是对熔丝加上电压,使其熔断。与激光熔断技术相比,电子迁移(EM)特性可以用来生成小得多的熔丝结构。EM熔丝可以在芯片上编程,不论是在晶圆探测阶段还是在封装中。采用通常为2.5V的I/O电路的片上电压,一个持续200微秒的10毫安直流脉冲能够编程单根熔丝。在一个优选实施例中,通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,具体包括:若非易失性存储区中的程序数据是压缩状态的,则读取后对压缩状态的程序数据执行解压缩。eFuse存储区的空间很小,如果程序数据较大,可以将程序数据压缩后存放在eFuse存储区中,使用时由firmware读取后解压。firmware对eFuse的读写方式是固定的,所以firmware与eFuse之间不存在兼容性问题。在一个优选实施例中,根据所述控制数据跳转到SRAM中的预定位置,具体包括:根据所述控制数据中记载的所述程序数据在SRAM中的偏移位置,在SRAM中找到存放程序数据的起始处作为所述预定位置。
Nand-flash厂商在Nand-flash中加入了自定义内容之后,将对Nand-f lash的读写时序要求烧制在efuse中,因此,通过执行固件以及预定位置起始的一段程序数据,与Nand-flash之间建立读写通道,具体包括:完全匹配Nand-flash厂商对于Nand-flash的读写时序要求,从而能够建立读写通道,可靠的读写Nand-flash。在一个优选实施例中,加载Nand-flash中的程序和数据到系统芯片内存中并执行,之后还包括:执行固件中包含的剩余的程序。在一个应用场景中,研发系统芯片的过程中要实现支持新型Nand-flash以扩展功能,因而在eFuse存储区中添加了相应的控制数据,如图5所示,流程包括:步骤501,计算机系统上电后,系统芯片内置的firmware开始运行。步骤502, firmware对一系列基本模块执行初始化,例如初始化计算机的串口和时钟等。步骤503,初始化eFuse存储区及eFuse控制器。步骤504,读取eFuse存储区中的控制数据到SRAM中,该控制数据用于控制firmware的执行流程。步骤505,判断系统芯片中是否支持新型Nand-flash,若支持新型Nand-flash转步骤506,否则转步骤508。步骤506,读取eFuse存储区中保存的程序数据到SRAM中,如果该块数据处于压缩状态,则执行解压缩后将原始数据存放在SRAM中的指定位置。步骤507,firmware根据控制数据跳转到配置好的SRAM中执行一段程序数据,与Nand-flash之间建立可靠的读写通道。步骤508,加载Nand-flash中必要的程序和数据到系统芯片内存中。步骤509, firmware执行其它的初始化操作。步骤510,跳转至系统芯片内存中,执行来自Nand-flash的程序,firmware执行完毕。如果需要系统芯片支持新型Nand-flash,例如NF_A,则根据厂商提供的datasheet编写子程序,在制造系统芯片时将该子程序及必要的控制信息预先烧写到eFuse 中。本发明实施例提供一种系统芯片,包括:非易失性控制器,用于实现对非易失性存储区的读取;非易失性存储区,用于存放控制数据和程序数据;固件,用于在系统芯片上电之后启动,初始化非易失性控制器和非易失性存储区;以及,通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,并存放在SRAM 中;根据所述控制数据跳转到所述SRAM中的预定位置,通过执行固件以及预定位置起始的一段程序数据,与Nand-flash之间建立读写通道;加载Nand-flash中的程序和数据到系统芯片内存中并执行。
在一个优选实施例中,非易失性存储区具体是eFuse存储区。在一个优选实施例中,非易失性控制器具体是eFuse控制器。在一个优选实施例中,还包括:解压缩单元,用于若非易失性存储区中的程序数据是压缩状态的,则对读取的压缩状态的程序数据执行解压缩。采用本方案之后的优势是:若系统芯片中有Nand-flash,且Nand-flash中存放了初始化阶段所需要的程序,则在上电之后,采用非易失性存储区中的控制数据和程序数据来建立固件与Nand-flash之间的读写通道,然后,加载Nand-flash中的程序和数据到系统芯片内存中执行,如此,无论Nand-flash中的数据发生了什么变化,均能够加载Nand-flash成功,克服了现有不兼容的问题。以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种对闪存进行操作的方法,其特征在于,系统芯片包括非易失性控制器和非易失性存储区; 方法包括: 在系统芯片上电之后,系统芯片中内置的固件启动,初始化非易失性控制器和非易失性存储区; 通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,并存放在SRAM中; 根据所述控制数据跳转到SRAM中的预定位置,通过执行固件以及预定位置起始的一段所述程序数据,与Nand-flash之间建立读写通道; 加载Nand-flash中的程序和数据到系统芯片内存中并执行。
2.根据权利要求1所述的方法,其特征在于, 非易失性存储区具体是eFuse存储区,非易失性控制器具体是eFuse控制器。
3.根据权利要求1所述的方法,其特征在于,通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,具体包括: 若非易失性存储区中的程序数据是压缩状态的,则读取后对压缩状态的程序数据执行解压缩。
4.根据权利要求1所述的方法,其特征在于,根据所述控制数据跳转到SRAM中的预定位置,具体包括: 根据所述控制数据中记载的所述程序数据在SRAM中的偏移位置,在SRAM中找到存放程序数据的起始处作为所述预定位置。
5.根据权利要求1所述的方法,其特征在于,加载Nand-flash中的程序和数据到系统芯片内存中并执彳丁,之后还包括: 执行固件中包含的剩余的程序。
6.一种系统芯片,其特征在于,包括: 非易失性控制器,用于实现对非易失性存储区的读取; 非易失性存储区,用于存放控制数据和程序数据; 固件,用于在系统芯片上电之后启动,初始化非易失性控制器和非易失性存储区;以及, 通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,并存放在SRAM中; 根据所述控制数据跳转到所述SRAM中的预定位置,通过执行固件以及预定位置起始的一段程序数据,与Nand-flash之间建立读写通道; 加载Nand-flash中的程序和数据到系统芯片内存中并执行。
7.根据权利要求6所述的芯片,其特征在于, 非易失性存储区具体是eFuse存储区。
8.根据权利要求6所述的芯片,其特征在于, 非易失性控制器具体是eFuse控制器。
9.根据权利要求6所述的芯片,其特征在于,还包括: 解压缩单元,用于若非易失性存储区中的程序数据是压缩状态的,则对读取的压缩状态的程序数据 执行解压缩。
全文摘要
本发明实施例提供一种对闪存进行操作的方法和系统芯片,系统芯片包括非易失性控制器和非易失性存储区;方法包括在系统芯片上电之后,系统芯片中内置的固件启动,初始化非易失性控制器和非易失性存储区;通过非易失性控制器读取非易失性存储区中的控制数据和程序数据,并存放在SRAM中;根据控制数据跳转到SRAM中的预定位置,通过执行固件以及预定位置起始的一段程序数据,与Nand-flash之间建立读写通道;加载Nand-flash中的程序和数据到系统芯片内存中并执行。无论Nand-flash中的数据发生了什么变化,均能够加载Nand-flash成功,克服了现有不兼容的问题。
文档编号G06F9/445GK103150184SQ20131007840
公开日2013年6月12日 申请日期2013年3月12日 优先权日2013年3月12日
发明者李栋梁 申请人:青岛中星微电子有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1