嵌入式系统在启动时,引导代码、操作系统的运行和应用程序的加载主要有两种架构,一种是直接从Nor Flash启动的架构,另一种是直接从Nand Flash启动的架构。
1. 从Nor Flash启动
Nor Flash具有芯片内执行(XIP,eXecute In Place)的特点,在嵌入式系统中常做为存放启动代码的首选。从Nor Flash启动的架构又可细分为只使用Nor Flash的启动架构和Nor Flash与Nand Flash配合使用的启动架构。图5 给出了这两种启动架构的原理框图。
a.单独使用Nor Flash
在该架构中,引导代码、操作系统和应用代码共存于同一块Nor Flash中。系统上电后,引导代码首先在Nor Flash中执行,然后把操作系统和应用代码加载到速度更高的SDRAM中运行。另一种可行的架构是,在Nor Flash中执行引导代码和操作系统,而只将应用代码加载到SDRAM中执行。
该架构充分利用了Nor Flash芯片内执行的特点,可有效提升系统性能。不足在于随着操作系统和应用代码容量的增加,需要更大容量昂贵的Nor Flash来支撑。
b. Nor Flash和Nand Flash配合使用
Nor Flash的单独使用对于代码量较大的应用程序会增加产品的成本投入,一种的改进的方式是采用Nor Flash 和Nand Flash配合使用的架构。在该架构中附加了一块Nand Flash,Nor Flash(2M或4M)中存放启动代码和操作系统(操作系统可以根据代码量的大小选择存放于Nor Flash或者Nand Flash),而Nand Flash中存放应用代码,根据存放的应用代码量的大小可以对Nand Flash容量做出相应的改变。
系统上电后,引导代码直接在Nor Flash中执行,把Nand Flash中的操作系统和应用代码加载到速度更高的SDRAM中执行。也可以在Nor Flash中执行引导代码和操作系统,而只将Nand Flash中的应用代码加载到SDRAM中执行。该架构是当前嵌入式系统中运用最广泛的启动架构之一。
2. 从Nand Flash启动
有些处理器如SamSung公司的ARM920T系列处理器S3C2410支持从 Nand Flash启动的模式,它的工作原理是将NandFlash中存储的前4KB代码装入一个称为Steppingstone(BootSRAM)的地址中, 然后开始执行该段引导代码,从而完成对操作系统和应用程序的加载。该方式需要处理器内部有NAND控制器,同时还要提供一定大小额外的SRAM空间,有一 定的使用局限性,在实际开发中较少使用。