新存储器体系结构中用直接存储器访问来系统引导的方法

文档序号:6571105阅读:208来源:国知局
专利名称:新存储器体系结构中用直接存储器访问来系统引导的方法
技术领域
本发明一般涉及计算机系统的初始化。具体地,本发明设计改善的用于引导计算机系统的存储器体系结构。
背景技术
许多现代电子设备,比如手机、PDA、便携式音乐播放器、仪器等通常合并了嵌入式计算机系统。嵌入式计算机系统通常包含计算机处理器(称为主机)、非易失性存储器(比如闪速存储器和/或ROM存储器)、和易失性存储器,比如动态随机访问存储器(DRAM)。主机可包括中央处理单元(CPU)、数字信号处理器(DSP)、微控制器单元(MCU)或直接存储器访问(DMA)数据传输设备。
在操作期间,主机通常运行操作系统或其它操作代码。因为易失性存储器通常比非易失性存储器可被更快速地访问,因此操作代码可存储在易失性存储器中并由主机从易失性存储器访问。但是,由于易失性存储器要求电源来维持存储于其中的数据,因此当嵌入式系统掉电时,易失性存储器通常被擦除。由此,当嵌入式系统掉电(例如当嵌入式系统进入复位状态时),主机系统所要求的操作代码通常被加载到易失性存储器中。通常,从非易失性存储器(例如ROM和/或闪速存储器)加载操作代码,非易失性存储器即使在嵌入式系统没有加电时也保持所存储的数据。将存储在非易失性存储器中的代码加载到易失性存储器中并执行来自易失性存储器的代码的过程可称为代码映射(code shadowing)。
当嵌入式系统被加电时,嵌入式系统通常执行引导序列以正确地从非易失性存储器加载操作代码到易失性存储器,并用操作代码来初始化主机。为了执行引导序列,主机通常访问存储在非易失性存储器的预定区域中的引导代码。引导代码是可由主机执行的简单代码,使主机能够执行将操作代码加载到易失性存储器并开始执行操作代码所要求的更复杂的动作。
在一些情况下,主机可利用直接存储器访问(DMA)将操作代码从非易失性存储器传送到易失性存储器。DMA允许部分的存储器快速并自动地从一个存储单元移动到另一个存储单元。为了执行DMA传送,主机可能需要初始化DMA引擎。在一些情况下,DMA引擎可位于主机中。为了初始化DMA引擎,主机可使用由引导代码提供的信息和/或指令。一旦DMA引擎被初始化,则主机可向DMA引擎发出命令将操作代码从非易失性存储器加载到易失性存储器。主机接着可开始执行操作代码和其它主机正确操作所需要的代码。
如前所述引导嵌入式系统对于主机可能需要各种特定的配置。例如,主机通常要求被配置为将多种存储器(闪速、ROM、和DRAM类型的存储器)对接的多个接口。主机还通常被配置为自动加载引导代码、加载用于嵌入式微控制器的控制器代码、并提供初始化和管理从非易失性存储器到易失性存储器的DMA传送的能力以作为一部分的引导序列。主机引导嵌入式系统所要求的这种特定配置通常降低了灵活性并增加了主机和嵌入式系统的设计成本。
由此,所需要的是一种改善的用于引导嵌入式系统的系统和方法。

发明内容
本发明的实施例提供了一种用于初始化计算机系统的方法和设备,其中该计算机系统包括处理器、易失性存储器和非易失性存储器。在一个实施例中,该方法包括,当计算机系统被初始化时,自动将存储在非易失性存储器中的初始化代码复制到易失性存储器,其中易失性存储器中的电路自动创建副本,并通过处理器来执行来自易失性存储器的初始化代码的副本。


因此,参考实施例可得到详细理解本发明的上述特征的方式和上面简要概括的本发明更特殊的描述,这些实施例中一些在附图中说明。但是注意到,附图只说明本发明的典型实施例,并因此不被认为限制其范围,对于本发明可承认其它等同的有效实施例。
图1是描述根据本发明的一个实施例的示例系统的框图。
图2是描述示例DRAM设备和NAND闪速存储器的详细视图和数据路径的框图。
图3A和3B是描述根据本发明的一个实施例的用于嵌入式系统的示例引导序列的流程图。
图4是描述根据本发明的一个实施例的用于引导嵌入式系统的示例状态机的状态图。
图5是描述根据本发明的一个实施例的示例DMA引擎/参数设置的详细视图的框图。
图6是描述根据本发明的一个实施例的用于利用感知复位(sense-on-reset)方案来初始化DMA引擎的电路的框图。
图7描述了根据本发明的一个实施例的用于存储引导代码和OS代码的组合RAM存储器。
具体实施例方式
本发明的实施例提供一种改进的用于引导嵌入式系统的系统和方法。本发明的一个实施例中,存储在非易失性存储器中的引导代码和控制器代码可由位于易失性存储器芯片上的DMA引擎加载到引导代码缓冲器和控制器代码缓冲器中。通过利用位于易失性存储器芯片上的DMA引擎来加载引导和控制器代码,可将引导嵌入式系统所需的处理工作量从主机处理器卸载到易失性存储器芯片,由此降低主机处理器和嵌入式系统的复杂度(以及因此的总成本)。
在已经将引导代码从非易失性存储器加载到易失性存储器中的引导代码缓冲器后,主机处理器可接着访问存储在引导代码缓冲器中的引导代码。当主机访问存储在引导代码缓冲器中的引导代码时,主机可执行引导操作。在一个实施例中,引导操作可包括向DMA引擎发出命令以加载易失性存储器中的操作系统代码。主机可接着执行存储在易失性存储器中的操作系统代码。在一个实施例中,引导代码和控制器代码可由DMA引擎加载到易失性存储器芯片中而不用与主机交互。
下面对于包括主机处理器、易失性存储器和非易失性存储器的嵌入式系统来描述本发明的实施例。但是,在一些情况下,嵌入式系统可包含多个主机处理器、多个易失性存储器和多个非易失性存储器。易失性存储器可包括任何类型的DRAM、SRAM或者任何其它类型的易失性存储器。非易失性存储器可包括任何类型的NAND闪速存储器、NOR闪速存储器、可编程只读存储器(PROM)、电可擦除可编程只读存储器(EE-PROM)、只读存储器(ROM)、或任何其它类型的非易失性存储器。主机处理器可包括任何类型的处理器,包括中央处理单元(CPU)、数字信号处理器(DSP)、微控制器单元(MCU)或直接存储器访问(DMA)数据传输设备。并且在一些情况下,系统中的每块芯片可包含多种处理器和/或存储器。例如,主机可包括CPU、DSP和SRAM。在一些情况下,非易失性存储器可包括ROM和闪速存储器。本领域技术人员应当容易理解可与本发明实施例一起使用的其它示例组合。
示例嵌入式系统图1是描述根据本发明的一个实施例的示例系统100的框图。如图所示,系统100包括主机102、易失性存储器(DRAM设备110)和非易失性存储器(NAND闪速存储器130)。主机可经由DRAM连接104访问DRAM设备110。DRAM设备110可经由闪速接口122和闪速存储器连接124访问NAND闪速存储器130。在一些情况下,由于闪速接口位于DRAM设备110上,因此主机102可不需要闪速存储器接口或连接,由此简化了主机102的设计和选择。可选地,在需要时,主机102可包括闪速存储器接口和连接。
在本发明的一个实施例中,DRAM设备110可包括SDRAM存储器阵列108。DRAM设备还可包含引导代码和数据缓冲器106、DRAM接口114、闪速管理器112、控制器代码缓冲器116、嵌入式微控制器核118和DMA引擎120。如下所述,NAND闪速接口122可用于访问存储在NAND闪速存储器130中的信息,包括引导代码132、控制器代码134、操作系统和应用代码136、数据138和任何其它存储在NAND闪速存储器130中的信息。
图2是描述根据本发明的一个实施例的DRAM设备110和NAND闪速存储器130的详细视图和数据路径的框图。在一些情况下,NAND闪速存储器130可被划分为多个块(blk0到blkm)并被分区(例如划分为不重叠的存储器区域)。在图1中描述的每种类型的代码132、134、136可作为映像(例如从单个源得到的副本)存储在分区中。如图2所示,NAND闪速存储器130可包含控制器代码映像234、引导映像232、以及操作系统、应用和/或DSP代码映像236。NAND闪速存储器130还可包含其它数据138。并且,如前所述,DRAM存储器设备110可包含数据和引导代码缓冲器106。在一些情况下,数据缓冲器210和引导代码缓冲器212可被提供作为分离的缓冲器,如图所示。
如下对于引导序列所述,DMA引擎电路120可用于自动将引导代码132从引导代码映像232加载到引导代码缓冲器212,并且加载来自控制器代码映像234的控制器代码134。在已经将引导代码132和控制器代码134加载到DRAM存储器设备110后,发给DMA引擎120的命令可用来启动DMA访问,其将来自OS、应用、和DSP代码映像236的所需要代码以及其它数据138复制到代码映射240和存储在SDRAM阵列108中的其它数据202中。
在一些情况下,通过将工作从主机102卸载到DRAM存储器设备110中的DMA引擎120和嵌入式微控制器118,来简化主机102和嵌入式系统100的设计和操作。并且,通过将引导代码132、控制器代码134、和OS/应用/DSP代码136存储到可编程非易失性存储器130中,嵌入式系统100操作所需要的代码可以更灵活的方式被存储和取回。例如,为了更新引导代码132、控制器代码134、和/或OS/应用/DSP代码136,可仅仅在可编程非易失性存储器130中的旧代码上重写新的代码。因为有关代码存储和取回的信息还可存储在可编程非易失性存储器中,所以在更新任何代码时,新的存储和取回信息可被编程到可编程非易失性存储器130中。
示例引导序列图3A和3B是描述根据本发明的一个实施例的用于嵌入式系统100的示例引导序列的流程图。引导序列可利用存储在NAND闪速存储器130中的信息。在例如NAND程序员302初始引导系统100之前,该信息可存储在NAND闪速存储器130中。NAND程序员302可将引导代码132(步骤304)、控制器代码134(步骤306)和OS代码136(步骤308)烧进NAND闪速存储器130。在为每个代码132、134、136选择相关存储器尺寸和位置时进行了本领域技术人员已知的设计考虑。
当在步骤310系统100被加电时,在步骤312引导序列可通过加载引导代码132而开始。在一个实施例中,利用DRAM存储器设备110的DMA引擎电路120,可将引导代码132从NAND闪速存储器130加载到引导代码缓冲器212。本领域技术人员已知的是,DMA访问可包括将引导代码132从NAND闪速存储器130自动传送到引导代码缓冲器212而不需要外部控制或输入,例如通过主机102或其它外部控制器电路。DMA访问可继续直到DMA加载完成(步骤314)。
DMA引擎电路120可利用DRAM存储器设备110的NAND闪速接口122来访问NAND闪速存储器130。在一个实施例中,DMA引擎电路120或DRMA设备中的其它适当电路可被自动配置为从NAND闪速存储器130的预定义区域(例如从块0、存储器地址0开始并继续指定长度)加载引导代码132。可选地,引导代码的源地址和尺寸可由外部设备、由存储在存储器区域中(例如ROM中或NAND闪速存储器130的预定义区域中)的数据或以另一方式提供,如下所述。
当已经在步骤312和314加载了引导代码132后,在步骤316可开始加载由嵌入式微控制器核118使用的控制器代码116。在一些情况下,在引导代码132已经完成加载后自动启动控制器代码134的加载。在一个实施例中,可将控制器代码134从NAND闪速存储器130加载到控制器代码缓冲器116,其中控制器代码134可由嵌入式微控制器核118访问。在一些情况下,可将DMA引擎120配置为例如在加载引导代码132后自动加载控制器代码134。利用引导代码132中的指令、利用从外部设备发出的指令、或利用本领域技术人员已知的其它方式,可从NAND闪速存储器130的预定义区域加载控制器代码134。下面还会更详细地描述加载引导和控制器代码132、134的其它实施例。用于加载控制器代码134的DMA访问可继续直到在步骤318完成加载。
在引导代码132和控制器代码134已经分别加载到引导代码缓冲器212和控制器代码缓冲器116中后,在步骤320可激活嵌入式微控制器118,并且可设置NAND闪速管理器112、误差校正代码(ECC)和代码解压缩工具。嵌入式微控制器118可用于为NAND闪速存储器130提供NAND闪速管理功能(例如,由此从主机102卸载这种闪速存储器管理)。NAND闪速管理器112还可由嵌入式微控制器118用来访问NAND闪速存储器130(例如通过提供对从NAND闪速存储器130读取和向NAND闪速存储器130写入的支持)。ECC工具可用来确保从NAND闪速存储器130接收的数据已经被正确传输并可能地校正传输中的错误,如果有的话。代码解压缩工具可用来解压缩从NAND闪速存储器130取回的以压缩格式存储的代码(例如OS/应用代码136)。
在已经激活嵌入式微控制器118后并且在已经初始化有关的支持电路后,可从引导缓冲器212引导主机102。在本发明的一个实施例中,引导缓冲器212可由主机102经由DRAM连接104来访问。例如,引导缓冲器212可由主机102通过从DRAM存储器设备110内的特定的、预定义存储器地址请求数据来访问。可选地,从存储器设备110发出的特殊命令可用来访问引导缓冲器212。主机102可使用存储在引导缓冲器212中的引导代码132来执行将操作系统代码136加载到DRAM存储器设备110中并开始执行操作系统代码136以及主机系统中其它硬件设备等所需的更复杂的动作。例如,引导代码132可禁止中断、初始化主机102中的模式寄存器,并向存储器设备110发出命令来开始操作系统代码136的代码映射。引导代码132还可提供指明哪些命令应当发给存储器设备110以执行代码映射操作的信息,以及NAND闪速存储器130内操作系统代码132的位置。
当在步骤322主机102已经引导并初始化硬件后,在步骤328可加载OS/App/DSP映像236。在本发明的一个实施例中,主机102可向DMA引擎120发出命令来启动经由DMA传送将OS/App/DSP映像236从NAND闪速存储器130加载到SDRAM阵列108。在一些情况下,主机102可使用引导代码132来向DMA引擎120和/或控制器118发出适当的命令。一旦命令已经发给DMA引擎120,则DMA引擎120可自动并自发地执行DMA传送而不用与主机102交互。同时,主机102可与一些其它任务(可包括等待状态中的等待)一起保持活动,直到存储器设备110和/或DMA引擎120指示映射完成(步骤324)。
在加载OS/App/DSP映像236的同时,在步骤330,可利用嵌入式ECC来校验正在加载的代码并将其解压缩(如果代码236以压缩格式存储)。在一个实施例中,嵌入式微控制器核118和/或其它部件(例如DMA引擎电路120和NAND闪速管理器112)可利用ECC来校验传送的代码并执行解压缩。DMA传送可继续直到代码映射204的DMA加载完成(步骤332)。
在主机102确定映射完成(步骤324)后,主机可从位于SDRAM阵列108中的代码映射204启动操作系统代码136(和主机102使用的任何其它代码)。在一个实施例中,在OS/App/DSP代码的DMA传送136完成后,由DMA引擎120发出的信号或命令可用来向主机102指明已经完成了代码映射。当主机102从DRAM存储器设备110启动操作代码时,嵌入式系统100的普通操作可开始,成功地完成了引导序列300。
上述的引导序列因为若干原因可帮助改善嵌入式系统的设计。例如,在一些情况下,主机102可不用于引导准备,比如加载引导代码132,由此克服了在加载引导代码132之前使能主机102的在先初始化的需要。并且,主机102可不涉及NAND闪速存储器130的初始化,从而又减少了主机102的在先初始化的需要。此外,由于DRAM存储器设备110可包含DMA引擎120和嵌入式微控制器核118,所以因此主机102不需要提供对DMA传送和代码映射的广泛支持。相反,主机102可仅仅向DRAM存储器设备110发出命令并允许DRAM存储器设备110执行必要的DMA传送。
图4是描述根据本发明的一个实施例的用于引导嵌入式系统100的示例状态机400的状态图。当系统100被初始加电时,每个系统部件可进入复位状态402。在下一个状态(DMA参数状态404)中,DMA引擎电路120可用DMA参数(例如源地址、目的地址和要移动的数据尺寸)来初始化,以便加载引导代码132。在本发明的一个实施例中,利用感知复位配置(SOR),引导代码132的DMA参数可放置在DMA引擎120的寄存器(Reg0)中。下面将详细描述DMA引擎寄存器和SOR配置。
在已经存储了引导代码132的DMA参数之后,可在DMA加载状态406下执行DMA加载。在一个实施例中,DMA引擎120可利用自动计数器来将引导代码132从源地址传送到目的地址,直到由尺寸参数指定的引导代码132已经被移动。每次将读取请求发送到NAND闪速存储器130时,来自NAND闪速存储器的信号(R/B#,其在NAND存储器就绪时被声明并在NAND存储器繁忙时被降低)可保持低,这表明正在从NAND闪速存储器130加载页面(例如NAND闪速存储器130处于繁忙状态)。当R/B#信号被声明时,这表明页面已经被加载,DMA引擎120可通过从NAND闪速存储器130加载另一页面来继续DMA传送(取决于计数器值和尺寸参数),或完成到下一个状态的加载和转移。
在引导代码132已经经由DMA引擎120完成加载后,自动触发器可使状态转移回DMA参数状态404,其中用于传送控制器代码134的DMA参数被初始化。在一个实施例中,可通过将源地址、目的地址和控制器代码134的尺寸加载到DMA引擎120的寄存器(Reg1)来初始化DMA参数。在已经存储了控制器代码134的DMA参数之后,状态可转移到DMA加载状态406,其中控制器代码134的DMA加载通过将代码134从源地址传送到目的地址来执行,同时如上所述计数器跟踪所传送代码的尺寸。
在已经加载了控制器代码134并完成了初始DMA传送之后,状态可转移到DMA空闲状态408,其中DMA引擎120保持在空闲状态408。同时,嵌入式微处理器118可在控制器开始状态410处启动并初始化对访问NAND闪速存储器130的支持,对诸如NAND闪速管理器112、ECC和代码解压缩功能的支持。如上所述,嵌入式微处理器118可利用存储在控制器代码缓冲器116中的控制器代码134来执行初始化。在嵌入式微处理器启动并且NAND闪速存储器130可工作后,状态可转移到主机引导状态412,其中例如利用存储在引导代码缓冲器212中的引导代码132来启动主机102。
当主机102引导并完成任何硬件初始化时,主机可向DMA引擎120发出命令(例如,使用由引导代码132提供的命令)来使DMA引擎120从DMA空闲状态408转移到DMA参数状态404,其中主机102初始化DMA引擎120的DMA参数以便执行OS/App/DSP映像236从NAND闪速存储器130到SDRAM阵列108的代码映射。主机102可例如通过为OS/App/DSP映像236的源地址、目的地址和尺寸提供DMA参数来初始化DMA引擎120。OS/App/DSP映像236的参数可例如被存储在DMA引擎寄存器(Reg2)中。在已经存储了OS/App/DSP映像236的DMA参数之后,状态可转移到DMA加载状态406,其中通过将OS/App/DSP代码136从源地址传送到目的地址来执行OS/App/DSP映像236的DMA加载,同时计数器如前所述跟踪所传送的代码的尺寸。
在已经经由DMA传送将OS/App/DSP代码136加载到SDRAM阵列108后,DMA引擎120可返回到DMA空闲状态408,同时主机102利用代码映射204来启动操作系统(主机启动OS状态414)。在主机102开始普通操作后,主机102或嵌入式系统100中的其它部件可在数据传送状态416开始时初始化其它DMA数据传送。
DMA引擎的控制图5是描述根据本发明的一个实施例的示例DMA引擎120和参数设置的详细视图的框图。如图所示,DMA引擎120可包含多个寄存器5020、5021、5022、5023,地址生成器和计数器504,NAND访问控制506以及DMA有限状态机(FSM)508。DMA引擎120还可包含引导/OS/数据下载控制510、控制器代码下载控制512和数据上载控制514。下面更详细地描述每个部件。
在本发明的一个实施例中,DMA引擎寄存器5020、5021、5022、5023可用于控制从NAND闪速存储器130加载哪些数据到SDRAM 108,反之亦然。如图所示,在寄存器中可存储指示要传送的数据的源地址(SA)、目的地址(DA)和尺寸的值。
为了执行DMA传送,寄存器5020、5021、5022、5023可被输入到由DMA FSM 508控制的地址生成器和计数器504中。地址生成器和计数器504可使用每个源地址、目的地址和尺寸条目来生成源地址和目的地址。地址生成器和计数器504还可保持监控DMA传送进度的计数器。例如,当启动DMA传送时,地址生成器和计数器504可初始化计数器并提供源和目的地址给NAND闪速存储器130(经由NAND闪速接口122)和SDRAM阵列108(经由SDRAM接口114或其它例如用于引导代码缓冲器212的接口)。
在地址生成器和计数器已经提供了源和目的地址后,DMA FSM508可向NAND访问控制506发送命令来请求将从源地址读取数据并将数据写入到目的地址。取决于正在传送的数据,DMA引擎120可利用引导/OS/数据下载控制510、控制器代码下载控制512或数据上载控制514来执行传送。在已经执行了传送之后,地址生成器和计数器504可增加或减少计数器并为DMA传送计算下一个源和目的地址。DMA传送可继续直到已经传送了等于尺寸参数的数据量(例如利用地址生成器和计数器504中的计数器来跟踪)。
DMA引擎的初始化如上所述,在本发明的一个实施例中,当嵌入式系统被加电并且DMA引擎120被初始化时,DMA引擎120可将引导代码132和控制器代码134从NAND闪速存储器130自动传送到DRAM设备110中的缓冲器106、116,以供初始化和操作主机102和嵌入式微控制器118使用。接着可将命令发给DRAM设备110(例如,通过主机102),使OS/APP/DSP代码136经由DMA传送从NAND闪速存储器130加载到SDRAM阵列108,其中代码136可因此由主机访问。在一些情况下,在一个实施例中,发给DMA引擎120(例如给DMA FSM 508)的加电-触发信号和主机-触发信号可用于将DMA FSM置于适当状态以便加载代码、控制器和/或OS/APP/DSP代码132、134、136。例如当接收到加电-触发信号时,DMA引擎120可自动加载引导和控制器代码132、134。随后,当接收到主机-触发信号时,DMA引擎120可自动加载OS/APP/DSP代码136。
在本发明的一个实施例中,为了执行引导代码132从NAND闪速存储器130到引导代码缓冲器212的初始传送,DMA引擎120的第一寄存器5020可用正在传送的引导代码132的源地址SA和目的地址DA以及尺寸来初始化。在一些情况下,可在DMA引擎120中预置初始化信息(例如存储在ROM或硬接线中)。可选地,初始化信息可存储在NAND闪速存储器130的预定义区域。还可从任何方便的外部源接收初始化信息。在一些情况下,组合源(预定义的、ROM、NAND闪速存储器130和/或外部源)可用于获得DMA引擎120的初始化信息。还可从这种源或这种源的组合接收控制器代码和OS/APP/DSP代码136的初始化信息。
图6是描述根据本发明的一个实施例的用于利用感知复位方案来初始化DMA引擎120的电路600的框图。在所述的情况下,施加到配置引脚614的信号可用于选择将要加载的引导代码132的源地址SA和尺寸。如上所述,引导代码132可在预定义位置处被加载到引导代码缓冲器中,使得引导代码132的目的地址DA可不经由配置引脚614来利用或提供。在一些情况下,因为对于一些诸如DRAM设备110的设备类型,在非复位模式期间对于常规操作可共享配置引脚614(例如,配置引脚614在非复位模式期间可用作为地址引脚或控制引脚),所以不需要或增加附加引脚给DRAM设备110来为DMA引擎120的初始化提供源地址和尺寸。
在本发明的一个实施例中,例如在感知复位(SOR)操作期间,可利用锁存器604来锁存放置在配置引脚614上的数据。在SOR操作期间,可内部生成复位信号或由DRAM设备110经由复位引脚602(RESET#)接收复位信号,明系统100已经被复位或加电。例如,当系统100被加电时,可由DRAM设备110生成加电-触发器信号。当检测到复位信号时,锁存器604可锁存经由配置引脚614提供的数据。在本发明的实施例中,配置引脚614上的初始化数据可由诸如主机102的外部设备或其它方便设备来提供。可选地,如果需要,配置引脚614上的初始化数据可经由硬接线连接而被提供到所期望的电压电平(例如,经由上拉或下拉寄存器)。
在已经接收到复位信号并且锁存器604已经锁存了在配置引脚614上提供的初始化数据之后,初始化数据可被置于适当的寄存器中。在本发明的一个实施例中,初始化数据可用于在源地址表608和尺寸表606中查找引导代码132的源地址和尺寸。如图所示,如果四个复位引脚用于源地址,则查找表608可为源地址提供16个不同的条目。例如,源地址可被提供作为NAND闪速存储器130内的块编号。可选地,可提供更多的引脚,并且直接寻址可用于源地址。对于尺寸值,如果四个复位引脚用于尺寸值,则尺寸表606可包含16个可能的条目,可从这16个可能的条目选择引导代码132的尺寸。例如,尺寸值可提供为千字节(KB)的数量。如所述的,每个表606、608可具有缺省值,可通过将适当的电压施加到配置引脚614或通过使配置引脚616断开来应用该缺省值。
在源地址和尺寸已经被确定后,源地址和尺寸可例如存储在DMA引擎120的第一寄存器5020中。一旦已经将引导代码132从NAND闪速存储器130中的引导代码映像232经由DMA传送加载到SDRAM阵列108,则DMA引擎120就继续进行加载控制代码134。
在本发明的一个实施例中,可通过使用引导代码132中的指令以向DRAM设备110发出命令来加载控制器代码134或通过将引导代码132中的数据直接加载到DMA引擎120中的寄存器,而利用存储在引导代码132中的数据来加载控制器代码134。而且如前所述,其它源可用于获得用于加载控制器代码134的信息。
如图6所示,在一个实施例中,利用来自引导代码DMA寄存器设置的数据和来自引导代码132本身数据的数据来获得控制器代码DMA寄存器设置。例如,在一些情况下,控制器代码映像234可连续存储(例如,在下一个可用存储器空间)在具有引导代码映像232的NAND闪速存储器130中。因此,为了确定控制器代码映像234的源地址,可将引导代码映像232的源地址加上引导代码映像232的尺寸610。结果所得到地址指向控制器代码映像134的开始处。对于控制器代码134的目的地址,如前所述,由于控制器代码可存储在控制代码缓冲器116中因而可预先确定地址。
在一个实施例中,可从存储在引导代码映像232中或位于其末尾处的数据获得要传送的控制器代码134的尺寸。例如,预定义控制器代码尺寸信息的大小可从引导代码映像232的末尾加载612到控制器代码设置的寄存器5021。一旦寄存器被初始化,DMA引擎120可执行控制器代码134从NAND闪速存储器130到控制器代码缓冲器116的DMA传送。
在一个实施例中,DMA引擎寄存器5022、5023可用于例如OS/App/DSP代码136的后续传送或用于任何其它传送。可选地,不利用多个寄存器,而是重新使用用于引导代码132和控制器代码134传送的寄存器。可选地,在一些情况下,单个寄存器可用于初始化每个DMA传送。
为了初始化DMA引擎存器5022、5023以便传送OS/App/DSP代码136,可使用上述任何方法。在一个实施例中,主机102可访问引导代码缓冲器212并利用引导代码132中的指令来初始化DMA引擎存器5022、5023。接着DMA引擎120可自动执行OS/App/DSP代码136的代码映射而不用与主机102交互。在已经创建了代码映射204后,主机102可执行来自SDRAM阵列108的OS/App/DSP代码136并开始常规操作嵌入式系统100。
虽然对于DRAM存储器设备110上面已经描述了SDRAM阵列108、数据缓冲器120、引导代码缓冲器212和控制器代码缓冲器116,但是缓冲器和存储器阵列的任何方便的配置可用于上述操作。例如,在一个实施例中,每个DMA传送可出现在NAND闪速存储器130和SDRAM阵列108之间而不用在单独的专用缓冲器中存储代码。可选地,在一些情况下,代码可初始加载到SDRAM阵列108中并接着在由其它设备和/或电路访问之前传送到缓冲器。
如另一个示例,图7描述了根据本发明的一个实施例的用于存储引导代码132和OS代码136的组合RAM存储器702(其还可称为共享缓冲器702)。如图所示,引导代码132、OS/App/DSP代码136和其它数据138可如前所述从NAND闪速存储器130传送到共享缓冲器702。可选地,其它数据可直接传送到SDRAM阵列108。控制器代码134可例如被存储在控制器代码缓冲器116中。
在一个实施例中,为了避免改写组合存储器702中的其它数据,引导代码132可存储在组合存储器702中的引导代码区域702中,并且SO代码、其它代码和数据可存储在组合存储器702中的OS代码/数据区域706中。为了将数据有效地存储到组合存储器702中,引导代码区域704可存储在组合存储器702的开始处,同时OS代码/数据区域706可存储在组合存储器702的末尾处。当数据和代码被传送到组合存储器702时,可从低存储器地址向上和从高存储器地址向下来填充存储器702。在一个实施例中,控制电路可用于确保引导代码区域704和OS代码/数据区域706没有冲突出现。可选地,在一些情况下,存储在共享存储器702中的引导代码132可用于初始化主机102并接着在引导了主机102后被改写。
如上所述,本发明的实施例提供了具有DMA引擎120的DRAM设备110,其用于将引导代码132和控制器代码134从NAND闪速存储器130自动传送到DRAM存储器设备110。DMA引擎120还可直接或间接接收来自外部设备的命令,以允许将OS/App/DSP代码136映射到DRAM设备110中。在一些情况下,DMA引擎120可执行初始引导而不用嵌入式微控制器118或主机102的输入,并且可适用于可重新定位的引导/控制器代码存储单元。并且,在一些情况下,可能使用共享缓冲器702来存储引导代码132和OS或其它代码136。
尽管前面针对的是本发明的实施例,在不偏离其基本范围的情况下可得出本发明的其他和另外实施例,并且其范围由随后的权利要求来确定。
权利要求
1.一种用于初始化计算机系统的方法,其中该计算机系统包括处理器、易失性存储器和非易失性存储器,该方法包括当计算机系统被初始化时,自动将存储在非易失性存储器中的初始化代码复制到易失性存储器,其中易失性存储器中的电路自动创建副本;并且通过处理器来执行来自易失性存储器的初始化代码的副本。
2.权利要求1的方法,其中自动创建初始代码的副本包括执行直接存储器访问来将初始化代码从非易失性存储器传送到易失性存储器,其中易失性存储器中的电路执行直接存储器访问。
3.权利要求2的方法,其中执行用于将初始化代码从非易失性存储器传送到易失性存储器的直接存储器访问包括将引导代码自动传送到引导代码缓冲器;和将控制器代码自动传送到控制器代码缓冲器。
4.权利要求3的方法,其中引导代码和控制器代码被放置在包括引导代码缓冲器和控制器代码缓冲器的共享缓冲器中。
5.权利要求3的方法,其中处理器执行来自引导代码缓冲器的引导代码,并且其中易失性存储器设备上的控制器执行来自控制器代码缓冲器的控制器代码。
6.一种用于初始化计算机系统的方法,其中该计算机系统包括处理器、动态随机访问存储器(DRAM)存储器和闪速存储器,该方法包括当计算机系统被初始化时,在DRAM存储器的引导代码缓冲器中自动创建存储在闪速存储器中的引导代码的副本,其中在DRAM存储器中的直接存储器访问电路自动创建副本;并且执行来自DRAM存储器中引导代码缓冲器的引导代码的副本。
7.权利要求6的方法,其中处理器执行来自引导代码缓冲器的引导代码的副本,并且还包括响应于执行引导代码的副本,而从处理器向DRAM存储器发出命令,其中所述命令使直接存储器访问电路在DRAM存储器的存储器阵列中自动创建存储在闪速存储器中的操作系统代码的副本;并且执行来自DRAM存储器的存储器阵列的操作系统代码的副本。
8.权利要求6的方法,其中经由直接存储器访问传送来创建存储在闪速存储器中的引导代码的副本。
9.权利要求8的方法,其中在处理器和DRAM存储器之间没有发出命令的情况下启动直接存储器访问传送。
10.权利要求6的方法,还包括在创建引导代码的副本后,在DRAM存储器的控制器代码缓冲器中自动创建存储在闪速存储器中的控制器代码的副本,其中DRAM存储器中的直接存储器访问电路自动创建该副本;并且用DRAM存储器中的控制器来执行存储在控制器代码缓冲器中的控制器代码的副本。
11.一种用于在嵌入式系统中将初始化代码从非易失性存储器加载到易失性存储器的方法,该方法包括接收加电信号,其表示嵌入式系统已经被加电;在易失性存储器的引脚上读取初始化代码的源地址和尺寸数据;和执行初始化代码从非易失性存储器到易失性存储器的直接存储器访问传送。
12.权利要求11的方法,其中由易失性存储器内的直接存储器访问电路来自动执行直接存储器访问传送。
13.权利要求12的方法,还包括根据在易失性存储器的引脚上的源地址数据和尺寸数据来确定引导代码的源地址和尺寸,其中源地址数据表示非易失性存储器中对应于源地址的块,并且其中尺寸数据表示对应于引导代码尺寸的字节数;并且使用引导代码的源地址和尺寸来执行直接存储器访问传送。
14.权利要求11的方法,还包括根据引导代码的源地址和尺寸数据来计算控制器代码的源地址;从非易失性存储器中的预定位置读取控制器代码的尺寸数据;并且利用所计算的控制器代码的源地址和尺寸数据来执行控制器代码从非易失性存储器到易失性存储器的直接存储器访问传送。
15.权利要求11的方法,还包括接收来自嵌入式系统的处理器的命令;并且响应于接收来自处理器的命令,而执行操作系统代码从非易失性存储器到易失性存储器的直接存储器访问传送。
16.一种动态随机访问存储器(DRAM)设备,包括存储器阵列;缓冲器;和电路,被配置为检测初始化信号;响应于检测到初始化信号,而执行引导代码从外部非易失性存储器到缓冲器的直接存储器访问传送。
17.权利要求16的DRAM设备,其中当DRAM设备被加电时由DRAM设备生成初始化信号。
18.权利要求16的DRAM设备,其中DRAM设备还包括第二缓冲器,并且其中所述电路还被配置为自动执行控制器代码从外部非易失性存储器到第二缓冲器的传送。
19.权利要求18的DRAM设备,还包括控制器电路,被配置为执行第二缓冲器中的控制器代码。
20.权利要求16的DRAM设备,其中所述电路还被配置为接收来自外部处理器的命令;并且响应于接收到命令,执行操作系统代码从外部非易失性存储器到存储器阵列的直接存储器访问传送。
21.一种动态随机访问存储器(DRAM)设备,包括用于存储的易失性装置;用于缓冲的装置;和用于传送的装置,被配置为检测初始化信号;响应于检测到初始化信号,而执行引导代码从用于存储的外部非易失性装置到用于缓冲的装置的直接存储器访问传送。
22.权利要求21的DRAM设备,其中当DRAM设备被加电时由DRAM设备生成初始化信号。
23.权利要求21的DRAM设备,其中DRAM设备还包括用于缓冲的第二装置,并且其中所述用于传送的装置还被配置为自动执行控制器代码从用于存储的外部非易失性装置到用于缓冲的第二装置的传送。
24.权利要求23的DRAM设备,还包括用于控制的装置,被配置为执行存储在用于缓冲的第二装置中的控制器代码。
25.权利要求21的DRAM设备,其中用于传送的装置还被配置为接收来自用于处理的外部装置的命令;并且响应于接收到命令,而执行操作系统代码从外部非易失性存储器到用于存储的易失性装置的直接存储器访问传送。
26.一种嵌入式系统,包括处理器;非易失性存储器设备;和易失性存储器设备,包括用于与处理器通信的接口;用于与非易失性存储器通信的接口;缓冲器;存储器阵列;和电路,被配置为响应于检测到嵌入式系统的初始化,而自动执行引导代码经由用于与非易失性存储器通信的接口从非易失性存储器到缓冲器的直接存储器访问传送。
27.权利要求26的嵌入式系统,其中处理器被配置为从易失性存储器设备读取存储在缓冲器中的引导代码;执行所读取的引导代码;并且响应于执行引导代码,向易失性存储器中的电路发出命令,其中,响应于接收到发出的命令,易失性存储器中的电路被配置为经由用于与非易失性存储器通信的接口将操作系统代码从非易失性存储器自动传送到易失性存储器设备的存储器阵列。
28.权利要求27的嵌入式系统,其中处理器还被配置为检测来自易失性存储器设备的信号,表示完成了操作系统代码的自动传送;并且响应于检测到信号,而开始执行存储在易失性存储器设备的存储器阵列中的操作系统代码。
29.权利要求26的嵌入式系统,其中易失性存储器设备还包括第二缓冲器,并且其中易失性存储器设备的电路还被配置为响应于检测表示完成了引导代码的直接存储器访问传送的信号,而自动执行控制器代码经由与非易失性存储器通信的接口从非易失性存储器设备到第二缓冲器的第二直接存储器访问传送。
全文摘要
本发明的实施例提供了一种用于初始化计算机系统的方法和设备,其中该计算机系统包括处理器、易失性存储器和非易失性存储器。在一个实施例中,该方法包括,当计算机系统被初始化时,自动将存储在非易失性存储器中的初始化代码复制到易失性存储器,其中易失性存储器中的电路自动创建副本,并通过处理器来执行来自易失性存储器的初始化代码的副本。
文档编号G06F9/445GK101051275SQ20071000404
公开日2007年10月10日 申请日期2007年1月23日 优先权日2006年1月23日
发明者R·-S·考 申请人:奇梦达股份公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1