利用“受控NAND”闪存来增加引导选择为当前应用于个人媒体播放器及便携式导航设备(PMP/PND)的存储器提供了具有竞争优势的替代方案。它可节省成本、简化设计,并具有处理不断增加的存储器容量的能力。
嵌入式系统的非易失性存储器具有很多功能,其中最主要的功能是作为系统初始化(引导)的固件。NAND闪存的接口问题和NOR闪存相对较低的密度都使它们不能成为令人满意的单一非易失性可引导系统解决方案。受控NAND提供了一种替代方案,解决了可引导性这一挑战。
便携设备对非易失性半导体存储器至少有两个需求:首先是非易失性存储(许多系统只需进行初始化,或需要半导体存储器中的引导程序——有一些需要包括应用软件和操作系统的整个软件包);其次是存储用户数据,如存储音乐。
两种闪存类型
当前可选择的非易失性存储是闪存,目前有两种架构截然不同的闪存:NOR和NAND。独立的位连接为NOR闪存提供了相对简单的类似RAM的外部接口和高读取速度。不过,擦除或写入,尤其是在大块中的擦除或写入,需要花费更多时间,因为块中的每一位都必须进行独立的擦除以准备写入。
NAND闪存以串联方式连接存储位。由于连接阻抗的缘故,使得读取速度变得缓慢。不过,由于去掉了大多数的位线连接,NAND元件变得十分小巧。随着多级单元(MLC)拓扑结构的出现,密度也在不断增加。价格在于一个比较复杂的接口。NAND闪存主要用于固态存储和文件系统,采用面向块的而不是面向字节的寻址。它还可以使用复用地址和数据接口以减少I/O引脚数。因此,NAND闪存无法简单地连接到一条像SRAM那样的处理器总线。通常情况下,它需要专门的接口。
与架构无关,闪存器件通常都需要某种管理以实现最大效能。NAND闪存器件需要坏位/块识别、错误检测/纠错和平均读写。由于崩溃(wear-out)是一个单元暴露在高压下的时间的函数,闪存厂商开发了复杂的擦除/写入时序算法。因此,开发人员通常是利用软件来实现闪存管理。
PMP/PND中的闪存
尽管存在这些复杂性,闪存仍在PMP/PND中占有一席之地。大多数设计都同时采用两种类型的闪存:NOR用于引导程序存储,而NAND用于海量存储。这样的设计增加了芯片数和成本,而且需要占用处理器的时间来处理NAND闪存接口和管理存储器。
由于原始的闪存无法满足所有设计需求,因此受控NAND成为一种选择。受控NAND器件包括一个专用于处理特定厂商算法的片上控制器,以及NAND存储器(图1)的存储器管理功能。这样就省去了与使用NAND存储器有关的软件开销,而且受控NAND器件还可提供一个标准的、厂商中立的处理器接口。目前有两种接口标准可供使用:多媒体存储卡(MMC)和安全数字(SD)卡。
受控NAND的挑战是如何使之变得可以引导。由于标准接口不是类似SRAM的接口,因此处理器需要一个适配器。一些处理器内置了SD/MMC接口,但这些接口却不在引导地址。纯粹基于软件的接口不能用于引导操作,因为系统需要访问存储器以加载软件。在处理器被引导之前,任何基于硬件的外部接口都需要进行配置。
从受控NAND进行引导
因此,从受控NAND进行引导需要软硬件构件。
硬件可以连接处理器和受控NAND,使存储器看起来更像简单的ROM。
软件是一个初始程序装载器(IPL),可执行最小限度的CPU初始化,并将引导装载器代码传送到处理器。
这些构件一起工作,将帮助系统渡过初始的“鸡和蛋”处境。
QuickLogic利用其SDIO/MMC主控制器器件为受控NAND提供了一个引导接口。这款器件可提供可配置接口,使之适用于大多数处理器、以及SD、SDHC和MMC受控NAND存储器。对于已经具有这些接口的处理器,SDIO/MMC主控制器可扩展其容量并提供引导能力。可配置接口也允许该器件与使用和存储卡相同接口的CE-ATA硬盘驱动器连接,为设计人员提供更多选择。SDIO/MMC控制器拥有片上RAM,它可以在引导时保持处理器要访问的IPL代码。
这种方法已可用在基于PXA270和TI OMAP平台的Linux和Windows CE操作系统。它已通过了各种SD、SDHC和MMC受控NAND器件的测试,并内置了存储器接口自动检测功能以按适当的顺序执行器件初始化。该解决方案也可用于其他处理器。
从受控NAND引导需要满足软硬件两方面的要求。硬件要求(图2)包括来自处理器的引导芯片选择引脚的连接,以及复位引脚的控制——以防止CPU在受控NAND引导接口准备完毕之前开始运行。
其中一个软件要求是开发针对特定应用处理器的IPL程序。SDIO/MMC主控制器的RAM容量为2048字节,这意味着IPL程序要限制在512个指令(假设是一个32位处理器)内。因此,IPL代码必须进行优化,以满足所支持的CPU和架构。虽然512个指令很小,但已经足够了,尤其是当处理器有可供栈和变量使用的片上RAM时。
IPL代码不是唯一必须改变的软件。系统的引导装载器代码也必须进行改变,这样处理器就可以执行来自内部RAM的代码,而不是来自外部ROM。它还必须支持通过受控NAND接口读取代码。同样,一旦系统启动,操作系统还要求SDIO/MMC主控制器的驱动器实现其全部功能。
三段引导
有了适当的软件和硬件,引导将分三步进行:
●上电:主控制器可保持处理器处于复位状态,同时将IPL代码从受控NAND下载到内部RAM中。然后,在释放CPU之前,在处理器的引导地址下选择芯片,将内部RAM作为SRAM映射到处理器。
●CPU开始执行来自主控制器RAM的IPL。IPL代码使用主控制器将引导装载器加载到处理器的内部SRAM中。然后IPL跳到SRAM地址开始执行。
●引导装载器初始化系统SDRAM,然后把操作系统从受控NAND加载到系统SDRAM。一旦加载完成,程序执行就跳到操作系统,从而结束引导。
在引导完成之后,受控NAND器件的其余部分(该部分不包含引导软件)可以作为一个存储器件被操作系统访问。引导软件所需的受控NAND器件的容量(IPL、引导装载器、OS图像)非常小——大约64 MB。受控NAND器件可以进行分区和格式化,从而使其余部分可以作为用户存储介质进行访问,同时可以保护引导区并保证设计的安全。
这种方法带来了许多好处,它可以简化电路板设计并节省元件(不需要使用分立的NOR器件,只使用几条I/O线(传统存储器接口需要16个以上的NOR器件,该方法只需6个))。
由于受控NAND提供了标准的、厂商中立的接口,设计人员因此有了更多选择(MMC或SD器件,两者均为JEDEC引脚排列)。
QuickLogic SDIO/MMC主控制器还可以同时连接多个基于MMC和/或SD的受控NAND器件,因为控制器可以定制成复用结构的。这将有助于设计人员混用和匹配不同供应商的存储器和密度,在获得令人满意的效果的同时,最大限度地降低原材料成本。以一个3GB的器件为例,设计者通常需要选择4GB的受控NAND器件。而利用SDIO/MMO主控制器,设计人员能够选择一种更便宜的两芯片方法(2+1GB)。
受控NAND还有助于实现前瞻性认证。受控NAND的标准接口可降低多级电路的复杂性,帮助设计人员通过采用新技术来使存储容量加倍。SDIO/MMC主控制器的可配置性可保证开发人员在需要的时候能够转向SDHC(高容量)。当使用原始NAND闪存时,这样的转变就非常复杂了,因为更高密度的器件采用块寻址,而不是面向字节的寻址。高密度器件的文件结构也从FAT16转到了FAT32,从而增加了复杂性。这种受控NAND方法可以利用同样的硬件设计适应所有这些变化。